Vi'deki tüm bir dosyanın girintisini nasıl düzeltirim?


625

Vim'de, tüm satırların girintisini düzeltme komutu nedir?

Çoğu zaman kodu kopyalayıp uzak bir terminale yapıştıracağım ve her şeyi berbat edeceğim. Bunu tek bir düelloda düzeltmek istiyorum.



8
Korunma tedaviden daha iyidir. Bu ruhta bu yorum geliyor. Ekleme moduna girmeden ve uzak terminalden kodu yapıştırmadan önce bir ": set paste" yapın.
Chthonic Projesi

Yanıtlar:


1215

=, girinti komutu hareket alabilir. Böylece, ggdosyanın başlangıcını almak, =girintilemek, Gdosyanın sonuna kadar gg=G.


39
Değerli 1G'imi asla bilemeyeceğim =) Favori favorilerimden biri =% açılış köşesinde duruyor. Tüm bloğun girintilerini sabitler.
PEZ

2
: 0 <return> çok kötü değil ama gg güzel. (evet, önce öğrendim)
Erik Olson

8
Geçerli satırdan ayrılmadan dosyanın tamamına girintili olabilir miyim?
Fábio Perez

86
@ Fábio: ''(iki tek tırnak) bulunduğunuz yere geri götürür, böylece gg=G''girintili sonra dönün.
Nemo157

@ ArchimedesTrajano Mac OS'nin stok vimi çok eski, HomeBrew'un sürümünü öneriyorum; çok daha yeni. Mac'in vimiyle ilgili bazı can sıkıcı sorunlar yaşadım. Ayrıca, yerleşik olanla uğraşmamanız gerektiğini duydum, bu yüzden çok dikkatli değilseniz kendiniz güncellemeye çalışmayın.
AlexMA

126

Terminale yapıştırmadan önce :set pasteve sonra :set nopastebitirdikten sonra deneyin . Bu, yapıştırma işlemini bozan otomatik girintiyi, satır sarmayı ve diğer özellikleri kapatır.

edit: Ayrıca, =genellikle harici bir program kullanılarak girinti daha çok daha iyi bir sonuç elde edilebilir belirtmek gerekir . Mesela ben sürekli koşuyorum :%!perltidy. astyle,, cindentvb. de kullanılabilir. Ve elbette, bunları bir tuş vuruşuyla eşleyebilir ve dosya türüne bağlı olarak farklı olanları aynı tuş vuruşuyla eşleyebilirsiniz.


5
Girintileme için özel bir tuş equalprgtakımı =yerine harici bir filtre kullanmak için bir ftplugin'de seçeneği ayarlayabilirsiniz .
Josh Lee

Ayrıca bir yapıştırma / kapatma tuş bağlama seçeneği de vardır. : modlar arasında geçiş yapmak için pt \ p'yi ayarlayın
michael

Not: grml'nin vimconfig dosyasında pastetoggle anahtarı F11
Thomas

Ben formatpgmdüzenli ve astyle ve sonra kullanın gq. İşte benim bazı örnekler .vimrc: au FileType xml set fp=tidy\ -q\ -i\ -xmlveau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
Raffi Khatchadourian

Sadece bunu okuduktan sonra perltidy indirilen, varsayılan vim otomatik girintiden çok daha iyi
Joey Ciechanowicz

29

Herhangi bir akor yazmak zorunda kalmadan bloğunuzu yeniden canlandırmak istiyorsanız, şunları yapabilirsiniz:

[[=]]

1
Bunu dirilttiğim için üzgünüm, ama akorlarla ne demek istedin? Coords?
John P

7
Buradaki "Akorlar", müzik akorlarına benzer şekilde bir kerede birkaç nota sesine benzer şekilde, bir tuşa basarken başka bir tuşa basılı tutarak verilen komutları ifade eder. Yani G shift + g, ^] ctrl +], vb. Bunların yazılması tek tuşlu bağlantılardan daha uzun sürer.
Ralph Giles

=aBİmleci hiç hareket ettirmeyecek şekilde de kullanabilirsiniz .
amin

7
İskandinav klavyesinde [[=]]5 akor gerekir :(
k4kuz0

29

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ın altındaki tüm satırları girintilemek için

=G

Geçerli satırı girintilemek için

==

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

=%

17

HTML ve XML dosyalarını girintilemek için düzenli uygulama / yardımcı programı kullanabilirsiniz ve bu dosyaları girintilemede oldukça iyi çalışır.

Bir XML dosyasını önizleme

:!tidy -mi -xml %

Bir HTML dosyasını önizleme

:!tidy -mi -html %

16

escape tuşuna basın ve ardından aşağıdaki kombinasyonları hızlıca yazın:

gg=G

28
Yavaş yazdım, sonra ne olduğuna inanamayacaksın.
k0pernikus

Bu paha biçilmez çünkü sadece cevap ve yorum bir upvote verdi! lol @ k0pernikus
gglasses

12

1G=G. Bu, dosyadaki tüm satırları girintilemelidir. 1Gilk satırı alır =, otomatik girintiyi başlatır Gve son olarak da dosyadaki son satırı alır.


Ya da1gg=G
Biggybi

1G = G benim için düzeltti. Müthiş!
Natus Drew

8

:set pastemacun kullandığım ve pencereler arasında kod kopyalayan arkadaşım. Ben :set paste(ve :set nopaste) kopyala / yapıştır açılmadan önce bu nedenle bana uygun verdi.


1
Evet, macun kullanıyorum. : macun harika
mmcdole

7

Vim'de kullanın :insert. Bu, tüm biçimlendirmenizi koruyacak ve otomatik girinti yapmayacaktır. Daha fazla bilgi için help :insert.


7

kullanmak istemiyorsanız :set paste, orta tıklama set nopasteile pano içeriğini de yapıştırabilirsiniz:

"*p
"+p

Bu şekilde normal moddan çıkmak zorunda kalmazsınız. metni yapıştırmanız +veya *metni nasıl seçtiğinize bağlı olarak, bkz :help quoteplus.


4

vim-autoformat kaynak dosyalarınızı dilinize özgü harici programları kullanarak biçimlendirir, örn. Ruby dosyaları için "rbeautify" mücevher, JavaScript için js-beautify "npm paketi.


3

Karmaşık C ++ dosyaları için vim, vim'in =filtre komutunu kullanırken biçimlendirmeyi her zaman doğru almaz . Bu tür durumlar için, astyle gibi harici bir C ++ formatlayıcı kullanmak (veya düzeltmek ) daha iyidir, örneğin:

:%!astyle

Vim'in '=' işlevi, varsayılan olarak dahili biçimlendiricisini kullanır (bu her zaman doğru olmaz), ancak bu soruda tartışıldığı gibi uygun şekilde ayarlayarak, astyle gibi harici bir biçimlendirici kullanması da ayarlanabilir .



1

Bunu sizin için yapmak üzere bir eşleme oluşturabilirsiniz.

Bu, tüm dosyayı otomatik olarak girintili hale getirecek ve imlecinizi bulunduğunuz konumda tutacaktır:

nmap <leader>ai mzgg=G`z

0

Vi Editor için şunu kullanın: insert. Bu, tüm biçimlendirmenizi koruyacak ve otomatik girinti eklemeyecektir.Bir kez, gerçek biçimlendirilmiş dosyayı görüntülemek için escape tuşuna basın, aksi takdirde bazı çöp karakterler görürsünüz. gibi ^ ben örneğin:

public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert"); 
}

0

Sadece vim'de görsel moda gidin ve sadece = tuşuna bastıktan sonra yukarıdan aşağıya doğru satırlardan birini seçin, Seçilen tüm satır girintili olacaktır.


Bundan kaçınırdım. Görsel mod, hareketlerinizden emin olmadığınız zamanlar içindir, bir dizi karakteri nasıl yakalayacağınızı biliyorsanız, görsel moda geçmenin ek bir adımı yoktur. Neden ggvG=yapabilirsin gg=G. Hareketi görünür kılmanın anlamı neydi? Bu, hareket eden tüm eylemler için geçerlidir.
alextes
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.