Vi'de birden çok satırı hızla girintileme


2158

Önemsiz olmalı ve hatta yardımda bile olabilir, ancak nasıl gezineceğinizi anlayamıyorum. Vi'de birden çok satırı nasıl çabucak girintileyebilirim?

Yanıtlar:


2552

>Komutu kullanın . Beş satır girintilemek için 5>>. Bir satır bloğunu işaretlemek ve girintilemek, Vjj>üç satırı girintilemek için (yalnızca Vim). Kıvırcık parantez bloğuna girinti eklemek için, imlecinizi kıvırcık parantezlerden birinin üzerine getirin ve >%blok kullanımının herhangi bir yerinden veya>iB .

Etrafında metin blokları kopyalıyorsanız ve bir bloğun girintisini yeni konumuna hizalamanız gerekiyorsa ]p, sadece yerine kullanın p. Bu, yapıştırılan bloğu çevresindeki metinle hizalar.

Ayrıca, shiftwidthayar, girintiye girecek boşluk sayısını kontrol etmenizi sağlar.


77
> İ} kullanıyorum (iç {} bloğunu girintile). Vim'de çalışıyor. Vi'da çalıştığından emin değilim.
R. Martinho Fernandes

11
Benim sorunum (gVim'de) komutu> 2'den fazla boşluk girintili (sadece iki boşluk istiyorum ama> 5 boşluk gibi bir şey girintili)
Kamran Bigdely

28
@Kamran: shiftwidthBunu değiştirmenin yolu için ayara bakın .
Greg Hewgill

4
@MattStevens: Bu fenomen hakkında genişletilmiş tartışmayı burada bulabilirsiniz: meta.stackexchange.com/questions/9731/…
Greg Hewgill

5
Bir XML dosyasına yapıştırılan bazı etiketleri düzeltmek gibi sık sık üst üste görsel blokları girintiliyorum. Her seferinde bloğu görsel modda yeniden seçmek yerine, son görsel bloğu yeniden kullanmak için 'gv' kullanılabilir. Referans superuser.com/questions/220666/…
David Mann

958

Bu cevap, bu sorunun diğer cevaplarını ve yorumlarını özetler ve Vim belgelerine ve Vim wiki'ye dayalı ek bilgiler ekler. . Kısaca, bu cevap Vi ve Vim'e özgü komutları ayırt etmez.

Aşağıdaki komutlarda "yeniden girinti", " girinti ayarlarınıza göre satırları girinti" anlamına gelir . shiftwidthgirintiyi kontrol eden birincil değişkendir.

Genel Komutlar

>>   Indent line by shiftwidth spaces
<<   De-indent line by shiftwidth spaces
5>>  Indent 5 lines
5==  Re-indent 5 lines

>%   Increase indent of a braced or bracketed block (place cursor on brace first)
=%   Reindent a braced or bracketed block (cursor on brace)
<%   Decrease indent of a braced or bracketed block (cursor on brace)
]p   Paste text, aligning indentation with surroundings

=i{  Re-indent the 'inner block', i.e. the contents of the block
=a{  Re-indent 'a block', i.e. block and containing braces
=2a{ Re-indent '2 blocks', i.e. this block and containing block

>i{  Increase inner block indent
<i{  Decrease inner block indent

Sen yerini alabilir {ile }veya Börneğin =iBgeçerli bir blok girinti komuttur. Bir göz atın "Girinti Kod Bloğu" bu komutları denemek için güzel bir örnek.

Ayrıca, unutmayın

.    Repeat last command

, girinti komutları kolayca ve rahatlıkla tekrarlanabilir.

Tam dosyaları yeniden girintileme

Başka bir yaygın durum, girintinin bir kaynak dosya boyunca düzeltilmesini gerektirir:

gg=G  Re-indent entire buffer

Bu fikri birden fazla dosyaya genişletebilirsiniz:

" Re-indent all your C source code:
:args *.c
:argdo normal gg=G
:wall

Veya birden çok arabellek:

" Re-indent all open buffers:
:bufdo normal gg=G:wall

Görsel Modda

Vjj> Visually mark and then indent three lines

Ekleme modunda

Bu komutlar geçerli satıra uygulanır:

CTRL-t   insert indent at start of line
CTRL-d   remove indent at start of line
0 CTRL-d remove all indentation from line

Ex komutları

Bunlar, imlecinizi hareket ettirmeden belirli bir satır aralığını girinti yapmak istediğinizde yararlıdır.

:< and :> Given a range, apply indentation e.g.
:4,8>   indent lines 4 to 8, inclusive

İşaretçileri kullanarak girintileme

Başka bir yaklaşım belirteçlerle :

ma     Mark top of block to indent as marker 'a'

... imleci son konuma taşı

>'a    Indent from marker 'a' to current location

Girintiyi yöneten değişkenler

Bunları .vimrc dosyanızda ayarlayabilirsiniz .

set expandtab       "Use softtabstop spaces instead of tab characters for indentation
set shiftwidth=4    "Indent by 4 spaces when using >>, <<, == etc.
set softtabstop=4   "Indent by 4 spaces when pressing <TAB>

set autoindent      "Keep indentation from previous line
set smartindent     "Automatically inserts indentation in some cases
set cindent         "Like smartindent, but stricter and more customisable

Vim dosya türüne dayalı akıllı girintiye sahiptir. Bunu .vimrc'nize eklemeyi deneyin:

if has ("autocmd")
    " File type detection. Indent based on filetype. Recommended.
    filetype plugin indent on
endif

Referanslar


13
Hem bu cevap hem de üstteki cevap harikaydı. Ama bunu + 1'ledi çünkü bana son komutu tekrarlayan 'dot' operatörünü hatırlattı. Bu, tüm bloğa birkaç kaydırma alanına (veya girintilere) basmaya ihtiyaç duymadan basmaya devam etmeden son derece kullanışlıdır >}. Teşekkürler uzun
Amit

1
5 >> 5 satırı girintile: Bu komut 5 satırı değil beşinci satırı girintiler . Bunun nedeni VIM ayarlarım olabilir mi yoksa ifadeniz yanlış mı?
Wipqozn

1
@Wipqozn - Bu garip. Kesinlikle benim için sonraki beş satırı girintiler, Vim 7.2.330 üzerinde test edildi.
ire_and_curses

8
> 42gg ​​42. sıraya girdiğiniz yerden girinti yapın
Steve

Harika özet! Ayrıca, "bloğun içine girinti" ve "tüm bloğa girinti" (<i {> a {vb.) Parantez ve köşeli parantezlerle de çalışır:> a (<i] vb.) İlave işlemi <> 'nın, aynı zamanda) y vs. d, c, çalışmak
aqn

123

Büyük bir seçim:

gg=G

Gerçekten hızlı ve her şey girintili ;-)


1
Bir XML dosyam var ve sözdizimi vurgulamayı etkinleştirdim. Yazmak gg=G, her satırı 1 konumundan başlayarak koyar. Tüm beyaz boşluklar kaldırılmıştır. XML'e özgü başka bir şey var mı?
14'te

2
Bence set cindentvimrc olmalı ya çalışmalıdır :set cindentbu komutu çalıştırmadan önce
Amanuel Nega

3
Sanırım ilk önce cindent ayarlanmalıdır. ve @asgs Bence bu sadece cstyle programlama dilleri için çalışıyor.
Amanuel Nega

110

C girintili girinti için de bunu deneyin . Daha :help =fazla bilgi için yapın:

={

Bu, içinde bulunduğunuz kod bloğunu otomatik olarak girintili hale getirir.

Ya da sadece:

==

geçerli satırı otomatik olarak girintilemek için.


2
benim için çalışmıyor, sadece imleci 'içinde bulunduğum kod bloğunun açılış kümesinin üstündeki satıra döküyor.
underscore_d

79

Daha görsel insanlar için tuşa basma:

  1. Komut Moduna Gir:
    Escape

  2. Girinti yapmak için alanın başına gidin:
    hjkl

  3. Bir blok başlatın:
    v

  4. Girinti yapmak için alanın sonuna gidin:
    hjkl

  5. (İsteğe bağlı) İstediğiniz girinti düzeyi sayısını yazın
    0..9

  6. Bloktaki girintiyi yürütün:
    >


2
Bu harika, ama sekmeler değil boşluklar kullanıyor. Bunu düzeltmenin olası bir yolu var mı?
Shane Reustle

12
Eğer sekmeler yerine boşluk kullanıyorsa, bunun nedeni boşluk kullanmak için girintinin ayarlanmış olmasıdır. =).
Kent Fredric

4
'Expandtab' seçeneği kapalı olduğunda (bu varsayılan değerdir) Vim, girintiyi yapmak için mümkün olduğunca <Sekme> s kullanır. (: yardım:>)
Kent Fredric

1
Değiştirdiğim tek sekme / boşlukla ilgili vim ayarı: set tabstop = 3. Aslında bunu her kullanışımda >>: "<tab> <boşluk> <boşluk>" ekliyor. Bir bloğu girintilemekle aynı. Herhangi bir fikir?
Shane Reustle

3
"Boşluklara karşı sekmeler" e bakmak istediğiniz üç ayar 1'dir. Tabstop 2. shiftwidth 3. expandtab. Muhtemelen "shiftwidth = 5 noexpandtab" var, bu yüzden "sekme" 3 boşluk ve girinti seviyesi "5" boşluktur, bu nedenle 5'i 1 sekme ve 2 boşlukla oluşturur.
Kent Fredric

66

Tüm komutların efendisi
gg=G

Bu dosyanın tamamını girintili hale getirir!

Ve aşağıda Vim veya gVim'de satırları hızla girintilemek için kullanılan basit ve zarif komutlardan bazıları.

Geçerli satırı girintilemek için
==

Geçerli satırın altındaki tüm satırları girintilemek için

=G

nGeçerli satırın altındaki satırlara girinti eklemek için

n==

Örneğin, geçerli satırın 4 satırının altına girinti eklemek için

4==

Bir kod bloğunu girintilemek için kaşlı ayraçlardan birine gidin ve komutunu kullanın

=%

Bunlar, birden çok satırı girintilemek için en basit ancak güçlü komutlardır.


3
Bu sadece içeride vim, değil vi.
rojomoke

3
Solaris veya AIX kutularımda değil. Eşittir tuşu her zaman standart geçici makro atamalarımdan biri olmuştur. İle vimbağlantılı bir şeye bakmadığınızdan emin misiniz vi?
rojomoke

3
Evet, Linux'ta vi neredeyse her zaman vim'e bir bağlantıdır. Vi içinde: ve komutunu çalıştırmayı deneyin.
rojomoke

4
Bu tür cevapları seviyorum: açık, kesin ve özlü. Debian Jessie'de benim için çalıştı. Teşekkürler, @SJain
digitai

1
Vi değil, vim kullandığım için bu cevap burada. Teşekkürler.
Dan Nissenbaum

66

Halihazırda verilen ve kabul edilen cevaba ek olarak , bir imleç yerleştirmek ve ardından mevcut imleçten imlece kadar her şeyi girinti yapmak da mümkündür.

Bu nedenle, magirintili bloğunuzun üst kısmını istediğiniz yere girin , imleci istediğiniz kadar aşağıya yazın ve sonra yazın >'a(" a" herhangi bir geçerli işaretçi adı ile değiştirilebileceğini unutmayın ). Bu bazen 5>>veya ' den daha kolaydır vjjj>.


1
Bu gerçekten faydalı. Tüm bunların bununla neyin işe yaradığını araştırmam gerekecek. D'a ve y'a biliyorum, başka ne var?
user606723 17:11

2
Bu, kaç satır girintilemek istediğinizi sayma ihtiyacını ortadan kaldırdığı için çok kullanışlıdır.
ziggy

29

Metnin başına git

  • vgörsel mod için basın .
  • metni vurgulamak için up/ downok tuşunu kullanın .
  • =vurguladığınız tüm satırları girintili yapmak için basın .

28

Sunulan çözümlerin yanı sıra, her seferinde bir paragraf yapmak istiyorum >}


2
Evet, ve bu yüzden büyük soymalarımdan biri boş bir satırdaki beyaz boşluklar: vim'in "paragraf" kavramını karıştırıyorlar.
aqn

28

Bir blok seçip >girintilemek için kullandığınızda , girintiler daha sonra normal moda geri döner. Bu benim .vimrc dosyamda var:

vnoremap < <gv

vnoremap > >gv

Seçiminizi istediğiniz kadar girintilemenizi sağlar.


17
Seçimi birden çok kez girintili yapmak için tuşuna basmanız yeterlidir. önceki komutu tekrarlamak için.
sundar - Monica'yı eski durumuna döndür

2
İle sorun. bu durumda parmaklarınızı hareket ettirmeniz gerekir. @ Mike'ın çözümü (kullandığım aynı) ile parmaklarınızı zaten girinti anahtarına aldınız ve sadece geçiş yapmak ve başka bir şey yapmak yerine girintiyi sürdürmek için balina avlamaya devam edebilirsiniz. Süreyi kullanmak daha uzun sürer çünkü ellerinizi hareket ettirmeniz gerekir ve daha fazla düşünmeyi gerektirir çünkü ikinci, farklı bir işlemdir.
masukomi

21

Kodunuzu girintilemek için 2 boşluk kullandığınızı varsayalım. Tür:

:set shiftwidth=2
  • Yaz v(görsel blok düzenleme moduna girmek için)
  • Girintilemek veya girintisizleştirmek istediğiniz satırları vurgulamak için imleci ok tuşlarıyla (veya h/ j/ k/ ile l) hareket ettirin.

Sonra:

  • tip > (2 boşluklar) bir kez girinti.
  • tip 2> girinti iki kez (4 boşluk).
  • Tip 3>girinti üç kez (6 boşluk) için.
  • ...
  • Tip <(2 boşluklar) bir kez GİRİNTİSİZ için.
  • Tip 2<iki kez (4 boşluk) GİRİNTİSİZ için.
  • Tip 3<unindent üç kez (6 boşluk) için.
  • ...

Kaptın bu işi.

( Boş satırlar girintili olmayacak, bence hoş bir şey. )


Girintili bloklar için (g) vim belgelerinde cevabı buldum:

:help visual-block
/indent

Komuta bir sayım vermek istiyorsanız, operatör karakterini yazmadan hemen önce bunu yapın: "v {move-around} 3>" (satır 3 girintilerini sağa taşı).


18

Vim kullanıcı arayüzünün güzelliği tutarlılığıdır. Düzenleme komutları, komuttan ve imleç hareketinden oluşur. İmleç hareketleri her zaman aynıdır:

  • Hekranın en üstüne, Len alta, Mortaya
  • nG hat gitmek n , Gdosyanın altına yalnız ggüstüne
  • nsonraki arama eşleşmesine, Nöncekine geçmek için
  • } paragrafın sonuna
  • % parantez veya etiket türünden bir sonraki eşleşen parantez
  • enter sonraki satıra
  • 'xx'i işaretlemek için burada x bir harf veya başka bir harftir '.
  • dahil olmak üzere birçok daha, wve Wkelime için, $ya 0çünkü değildir burada geçerli değildir vb hattı, uçlarımda için hat hareketleri.

Bu nedenle, vim kullanmak için imleci hareket ettirmeyi ve örneğin >girintileme (ve <"çıkıntı") gibi komutların bir repertuarını hatırlamayı öğrenmelisiniz .

Böylece, yapmanız ekranın üst imleç pozisyonundan hatları girinti için >H, >Gdosyanın en altına uygulanacak girinti.

Yazmak yerine >H, yazarsanız dH, aynı satır bloğunu, cHdeğiştirmek için vb. Silmiş olursunuz .

Bazı imleç hareketleri belirli komutlarla daha iyi uyum sağlar. Özellikle, %komut bir HTML veya XML bloğunun tamamını girintilemek için kullanışlıdır. Dosya sözdizimi vurgulanmışsa ( :syn on), imleci bir etiket metninde (<div> "i" harfinde ayarlamak ve girmek >%</div> etiketine kadar girintili olacaktır.

Vim şu şekilde çalışır: kişi sadece imleç hareketlerini ve komutları ve bunların nasıl karıştırılacağını hatırlamak zorundadır. Bu soruya cevabım olurdu Yani "sen girinti istediğiniz çizgilerin bloğun bir ucuna gidin ve sonra yazın >komuta ve bloğun diğer ucuna bir hareket" eğer girinti , çizgiler kayması olarak yorumlanır =eğer girinti güzel baskıdaki gibi yorumlanır.


2
Vi / vim'nin çoğunlukla tutarlı olduğunu söyleyebilirim . Örneğin D, S ve Y ile aynı şekilde davranmaz! :)
aqn

14

Bunu yap:

$vi .vimrc

Ve bu satırı ekleyin:

autocmd FileType cpp setlocal expandtab shiftwidth=4 softtabstop=4 cindent

Bu sadece bir cpp dosyası içindir. Bunu sadece dosya türünü değiştirerek başka bir dosya türü için de yapabilirsiniz ...


13

norm iSatırı başına verilen metni eklemek için komutu kullanabilirsiniz . 2-10. Satırların önüne 10 boşluk eklemek için:

:2,10norm 10i 

Komutun sonunda bir boşluk karakteri olması gerektiğini unutmayın - bu eklemek istediğimiz karakter olacaktır. Ayrıca, herhangi bir metni içeren bir satırı girintileyebiliriz, örneğin bir dosyadaki her satırı beş alt çizgi karakteriyle girintili yapmak için:

:%norm 5i_

Ya da daha süslü bir şey:

:%norm 2i[ ]

Daha pratik bir örnek, Bash / Python / etc kodunu # karakteriyle yorumlamaktır:

:1,20norm i#

Girintiyi yeniden kullanmak xyerine i. Örneğin, her satırdan ilk 5 karakteri kaldırmak için:

:%norm 5x

1
bu dosyanın sol tarafından başlar ... bloğun şu anki konumu değil
Eliethesaiyan

12

Bunu kullanarak bunu yapmanın hızlı bir yolu, VISUAL MODEbir kod bloğuna yorum yapmakla aynı işlemi kullanır.

Bu, direktifinizi değiştirmemeyi shiftwidthveya herhangi bir setdirektif kullanmamayı tercih ediyorsanız ve SEKMELER veya MEKANLAR veya başka herhangi bir karakterle çalışacak kadar esnekse kullanışlıdır .

  1. İmleci blokun başına konumlandır
  2. geçmek için v -- VISUAL MODE --
  3. Girinti yapılacak metni seçin
  4. Bilgi :istemine geçmek için yazın
  5. 3 önde gelen boşlukla değiştirme:

    :'<,'>s/^/ /g

  6. Veya önde gelen sekmelerle değiştirme:

    :'<,'>s/^/\t/g

  7. Kısa açıklama:

    '<,'> - Görsel Olarak Seçilen Aralıkta

    s/^/ /g - Tüm aralıktaki her satırın başına 3 boşluk ekleyin

    (veya)

    s/^/\t/g- TabTüm aralıktaki her satırın başına ekleyin


12

>}veya >{geçerli satırdan sonraki paragrafa kadar girinti

<}veya <{aynı girintisizlik


11

Girinti için metni işaretlemeyi seviyorum:

  1. metin satırının başına gidin ve şunu yazın ma( a'm'ark etiketidir: herhangi bir harf olabilir)
  2. metnin son satırına ve türüne git mz(yine zherhangi bir harf olabilir)
  3. :'a,'z>veya :'a,'z<girintili mi yoksa eski mi olacak (bu bir kelime mi?)
  4. İşte bu kadar! Metin taşınır (boş satırlar boşluk bırakmadan boş kalır)

Not: :'a,'ztekniği, satır, sayı veya kullanabileceğiniz herhangi bir işlem (d, y, s ///, vb.) İçin bir aralığı işaretlemek için kullanabilirsiniz %.


10

:help left

İçinde veya belirtilen çizgileri belirli bir miktarda hizalamak için ex modekullanabilirsiniz . Spesifik olarak, will [aralığında] Sol hizalama hatları. Satırlardaki girintiyi [girinti] olarak ayarlar (varsayılan 0).:left:le:left

:%le3veya veya :%le 3 veya :%left3veya :%left 3üç boşlukla dolgu yaparak tüm dosyayı hizalar.

:5,7 le 3 5 ile 7 arasındaki satırları üç boşlukla dolduracak şekilde hizalar.

:leHerhangi bir değer olmadan veya :le 00 dolgu ile sola yaslanır.

Bu Vim ve gVim'de çalışır.


1
Harika, sadece aradığım şey (belirli bir sayıda boşluk eklemenin bir yolu - işaretleme kodu için 4 boşluk - normal girintimi geçersiz kılmak için). Benim durumumda görsel modda belirli sayıda satırı girintiye almak istedim, bu yüzden shift-v çizgileri vurgulamak, sonra :'<,'>le4boşluk eklemek için. Teşekkürler!
Subfuzion

9

Benim için, MacVim (Visual) çözümü, fare ile seçin ve ">" tuşuna basın, ancak sekmeler yerine boşlukları sevdiğim için aşağıdaki satırları "~ / .vimrc" içine yerleştirdikten sonra:

set expandtab
set tabstop=2
set shiftwidth=2

Ayrıca MacVim'i komut satırından (Terminal.app) çağırabilmenizde fayda var, bu yüzden "macvim" adlı bir komut dosyası yerleştirdiğim aşağıdaki yardımcı dizin "~ / bin" olduğu için:

#!/usr/bin/env bash
/usr/bin/open -a /Applications/MacPorts/MacVim.app $@

Ve tabii ki "~ / .bashrc" de:

export PATH=$PATH:$HOME/bin

MacPorts "~ / .profile" ile çok uğraştığından PATH ortam değişkeni oldukça uzayabilir.


9

5== geçerli imleç konumundan beş satıra girintili olur.

Böylece daha önce herhangi bir sayı yazabilirsiniz ==. Satır sayısını girintilendirecektir. Bu komut modunda.

gg=G tüm dosyayı yukarıdan aşağı doğru girintili hale getirir.


9

Yorumlarda kullandığım bir yöntem bulamadım, bu yüzden paylaşacağım (sanırım sadece Vim):

  1. Esc komut moduna girmek için
  2. Girintilemek istediğiniz son satırın ilk karakterine git
  3. Ctrl+ Vblok seçimini başlatmak için
  4. Girintilemek istediğiniz ilk satırın ilk karakterine gitme
  5. Shift+ Iözel kesici uç moduna girmek için
  6. Girintilemek istediğiniz kadar boşluk / sekme yazın (örneğin iki
  7. Basın Escve boşluklar tüm satırlarda görünecektir

Bu, içindeki girinti / sekme ayarlarını değiştirmek istemiyorsanız vimrcveya düzenleme sırasında değiştirmeyi hatırlamak istemediğinizde kullanışlıdır .

Girintisizleştirmek için boşlukları seçmek ve silmek için aynı Ctrl+ Vblok seçimini kullanıyorum D.


9

Bunun gibi basit bir cevap bulmanın neden bu kadar zor olduğunu bilmiyorum ...

Bunu bilmek için kendim çok uğraşmak zorunda kaldım. Çok basit:

  • Giriş .vimrcdizini altındaki dosyanızı düzenleyin.
  • Bu satırı ekle

    set cindent
    

    dosyasında düzgün bir şekilde girinti eklemek istediğiniz

  • Normal / komut kipinde

    10==   (This will indent 10 lines from the current cursor location)
    gg=G   (Complete file will be properly indented)
    

8
:line_num_start,line_num_end>

Örneğin,

14,21> shifts line number 14 to 21 to one tab

Daha fazla sekme için '>' sembolünü artırın.

Örneğin,

14,21>>> for three tabs

1
Bunu çözmek için açıkça birçok yol var, ancak satır numaraları vim'de varsayılan olarak gösterildiği ve matematik gerektirmediği için, uygulanması en kolay yöntem budur.
HoldOffHunger

@HoldOffHunger Satır numaraları varsayılan olarak gösterilmez. Sen kullanmak gerekir :set number(bunlar geçiş hattı numaralarına kapalı varsayılan olarak) veya koymak set numberda vimrc içinde.
DryLabRebel

7

Python'u çok kullanarak, kendimi sık sık blokları birden fazla girintiye kaydırmaya ihtiyaç duyduğumu görüyorum. Bunu, blok seçim yöntemlerinden herhangi birini kullanarak yapabilir ve ardından atlamak istediğiniz girintilerin sayısını>

Örneğin, V5j3>beş satırı üç kez girintilendirir - girintiler için dört boşluk kullanırsanız 12 boşluk olur.


7

Bir dosya türündeki her satırı girintilemek için Escve sonra G=gg.


6

Vurgulanan kodu vi'de birkaç boşlukla hemen girintileme:

Seçenek 1: Visual Block moduyla vi'daki bir blok bloğunu üç boşluğa girin:

  1. Girintilemek istediğiniz kod bloğunu seçin. Bunu Ctrl+Vnormal modda kullanarak ve metni seçmek için aşağı ok yaparak yapın. Seçili :durumdayken, seçilen metnin bloğuna komut vermek için Enter tuşuna basın.

  2. Komut satırında aşağıdakiler görünecektir: :'<,'>

  3. Girintiyi üç boşluğa ayarlamak için, yazın le 3ve enter tuşuna basın. Görünen budur::'<,'>le 3

  4. Seçilen metin hemen üç boşluğa girintilidir.

Seçenek 2: Visual Line moduyla vi'daki bir blok bloğunu üç boşluğa girin:

  1. Dosyanızı vi'de açın.
  2. İmlecinizi bir kodun üzerine getirin
  3. Normal modda olun ve aşağıdaki tuşlara basın:

    Vjjjj:le 3
    

    Yaptıklarınızın yorumlanması:

    V metin seçmeye başlamak anlamına gelir.

    jjjj dört satır vurgulayarak dört ok aşağı.

    : vi'ye vurgulanan metin için bir talimat gireceğinizi bildirir.

    le 3 vurgulanan metni üç satır girintilemek anlamına gelir.

    Seçilen kod hemen üç boşluk girintisine arttırılır veya azaltılır.

Seçenek 3: Girintiyi artırmak için Görsel Blok modunu ve özel ekleme modunu kullanın:

  1. Dosyanızı vi'de açın.
  2. İmlecinizi bir kodun üzerine getirin
  3. Normal modda olun aşağıdaki tuşlara basın:

    Ctrl+V

    jjjj
    

    (boşluk çubuğuna beş kez basın)

    Esc Shift+i

    Vurgulanan tüm metinde beş boşluk daha girintilidir.


6

Blok kipinde görsel seçim kullanıyorum:

  • Taşımak için bloğun önüne gidin (üstte veya altta).
  • Görsel blok moduna girmek için Ctrl+ tuşuna basın V.
  • Çizgilerin önünde bir sütun seçmek için gezinin.
  • Ekleme moduna girmek için I( Shift+ I) tuşuna basın .
  • Bazı boşlukları yazın.
  • Düğmesine basın Esc. Tüm çizgiler değişecektir.

Bu bir tek görevli değil. İşe yarıyor:

  • Çizgilerin ortasında.
  • Tüm satırlara herhangi bir dize eklemek için.
  • Bir sütunu değiştirmek için ( cyerine kullanın I).
  • yank, sil, yedek vb.

Bu zahmetlidir, ancak çekirdek VIM'in dışında biçimlendirme yaparsanız (örneğin, vim-prettiervarsayılan girinti motoru yerine) biçimlendirmenin yolu budur . >Aksi takdirde, kullanmak Prettier tarafından yapılan biçimlendirmeyi kraliyetle bükecektir.
oligofren

Komik, hantal bir şey bulmuyorum. Bu bir tek görevli değil! Bu yöntemin öğrenilmesinin girintilemenin ötesinde birçok kullanımı vardır.
sqqqrly

Ne olduğunu, seçtiğim çizgileri ve yaptığım eylemi görebildiğim için, kabul edilen cevaptan daha iyi buluyorum ve sadece bir çeşit vim büyüsü yazmıyorum.
user4052054

5
  • Bir kod bloğu için {}: =+%

  • Seçilen bir satır için: Shift+ vyukarı / aşağı ok tuşlarını kullanarak seçin ve düğmesine basın =.

  • Tüm dosya için: gg+ =+G

Not: 'gg' satır 1'e gitmek anlamına gelir, '=' girinti komutudur ve 'G' imleci dosyanın sonuna taşır .


4

Tüm dosyayı dört girintili yapmak için:

esc 4G=G

3
...ne? '4 boşluk girintisi' mi? Hayır, bu satır 4'e atlar ve o anda seçili olan girinti modunu (varsa) kullanarak her şeyi dosyanın sonuna kadar girintiler.
underscore_d

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.