Hangi Vim özelliklerini kullanıyorsunuz? [kapalı]


13

Neredeyse tüm gün Vim'de programlama geçiriyorum ve eminim ki birçoğunuz da öyle. Günlük kodlamayı çok daha iyi hale getiren hangi özellikleri kullanıyorsunuz? Kullandığım biri , daha önce seçilen metni yeniden seçmenize izin verecek olan gv . Yeniden canlandırmak için harika!


1
Tarihsel amaçlar için, orijinal SO sorusuna bir bağlantı: stackoverflow.com/questions/95072/…
Jax

Aşağıdaki yorumuma dikkat edin, yazmanız bile gerekmez gv. :)
Nathan Long

Yanıtlar:


9

:% s / x / y / g

Bu komut , geçerli dosyadaki x'in tüm örneklerini y ile değiştirir . Bu temelde sadece bir bul ve değiştir, ama işte öğrendiğimden beri çok sık kullanıyorum, çok değerli hale geldi.

Ayrıca, / arama dizesi

ardından n , dosya içindeki arama dizesinin tüm örnekleri arasında gezinmek için kullanılır. Özellikle tüm dosyaya bir kural uygulayamıyorsanız, manuel ayarlamalar yapmak çok daha kolay.


Aslında iş yerinde bizim kod tabanı büyük bir bölümünü dönüştürme üzerinde çalışıyorum ve tamamen vim düzenli ifadeleri (şimdiye kadar) ile yapıyorum. Gerçekten iyi çalışıyor!
Frew Schmidt

Komutu etkileşimli hale getirmek için sonuna 'c' ekleyin. örneğin:% s / x / y / gc
sml

1
Değişikliğin %nerede yapılacağını unutmayın - %"geçerli dosya" anlamına gelir. Bazı satırları ve türleri görsel olarak vurgularsanız :s, yalnızca bu seçimde bir ikame yapabilirsiniz.
Nathan Long

7

== geçerli satırda güzel otomatik girinti yapar.

Normalde, dosyanın sonuna girintilemek veya mevcut küme parantez kümesinin içine girintilemek =gibi bir hareketle kullanıyorum .=G=i}


2
Ayrıca girintilemeyi manuel olarak yapabilen >> ve << unutmayın.
Frew Schmidt

@Frew - evet. Ayrıca, eklerseniz vmap <Tab> >gvve vmap <S-Tab> <gvBlogunuza .vimrc, girinti ve sırasıyla Tab ve Shift-Tab ile unindent, VE girinti veya unindent ileri böylece görsel seçim moduna doğru geri gidecek.
Nathan Long

6

=% bir kod bloğundaki her şeyi otomatik olarak girintili yapmak için.


Oooh! Bu benim için yeni!
Frew Schmidt

İmleciniz başlangıçta ise bu işe yarar {. Eğer bloğun içindeyseniz, =i{"kıvırcık parantez içine girinti" için yapabilirsiniz .
Nathan Long

5

*İmlecin altındaki kelimeyi aramak için komut modunda kullanın .


1
Ve aynı şeyi yapan ama ileri gitmek yerine geriye doğru giden kardeş komutunun # olduğunu unutmayın!
Frew Schmidt

5

:!İçin paha biçilmez - komuta lsing ve "sudo tee" hile.

Tişörtünü açıklamam istendi. Temel olarak, VIM'i root olarak başlatmamış olsanız bile, yönetici ayrıcalıklarına sahip bir metin dosyasını kaydetmenize izin verir:

:w !sudo tee %

Burada "sudo tee" hile açıklamak isteyebilirsiniz :-) Ayrıca yapmak istiyorum:! Değişken tanımları ve whatnot vurguladıktan sonra sıralamak.
Frew Schmidt

Gerçekten kullanarak Vim büyük bir "scriptable" editörü dönüştürebilirsiniz:! ve bazı kabuk / Python / Perl / diğer komut dosyaları.
Jonas

Aslında alternatif sahip !lsbir çalışır vnew, çıkışları r!lsyatay olarak yeni tampon içine ve büzülür. İçinde üçten fazla olan bir dizindeki tüm dosyaları hatırlamak için rahatsız
edilemem

4
.

Vurmak. tuşu önceki komutu tekrarlar. Diyelim ki bir düzenleme için .iniçok güzel.


bu şaşırtıcı derecede güçlü, ancak gerçekten iyi bir şekilde başlayabilmeniz için biraz viming gerekiyor.
aaron


2

Ben her zaman e-posta, metin dosyaları, vb satır sonları yeniden yapmak için gq kullanıyorum .


Oooh, bunu tamamen unutmuştum!
Frew Schmidt

Neden, neden daha popüler e-posta istemcileri benzer işlevleri destekleyemiyor?
erichui

Son zamanlarda gq yerine gw kullanıyorum çünkü imleç pozisyonunu
koruyor

2

Nereden başlamalı ... İşte son 5 dakika içinde kullandığımı hatırlayabildiğim şeyler.

  • NERD Ağacı - Dosya keşfetme. VIM'i bir IDE gibi yapar.
    • Benim için büyük bir şey cd, bir dizine geçme ve sonra kabuk eşlemelerim aracılığıyla bir kabuk istemine bırakma yeteneğidir (aşağıda).
  • ci aralarında sıkışan her şeyi boşaltmak için.
  • :! standart uygulamaları başlatmak için.
    • Bir kabuk istemi, mysql istemcisi, apache günlük dosyaları vb. Başlatmak için eşlemelerim var.
    • Subversion entegrasyonu her zaman iyidir. Hızlı diffs, stats vb.
  • :abbr büyük blokların tekrar tekrar yazılmasını sağlamak için.
  • Sekmeler. Daha da anlatmalı mıyım?
  • Dosyaları bölmek, her zaman iyi. :Sexher zaman iyidir.
  • :set paste! otomatik girintiyi amok yapmaktan kaçınmak.

Ben kısaltmak hariç bunların hepsini kullanıyorum. Kısaltmalardan çok daha fazla makro yapma eğilimindeyim.
Frew Schmidt


1

C / Tcl / Perl kodu yazarken veya gezerken aşağıdaki komutları yoğun bir şekilde kullanıyorum:

kopyala-yapıştır kodu

CTRL-fve blok öbek CTRL-bçapraz geçiş için sayfa ileri ve geri geçişi
%için
^ satır başlangıcına
$ son satır sonuna git

Yapıştır kopyalamak için komut v(görsel mod) ve yukarıdaki geçiş tuşlarından birini kullanarak kod seçmeye başlayın
y
p

s karakter silmek ve yeni metin yazmak için ekleme moduna geçmek için.

Kod düzeyinde geçişler (kodlama stili disiplini gerektirir)

]]sonraki işlevin
[[başlaması için önceki işlevin başlaması için

CTRL-] Etiketler varsa bir değişkenin / fonksiyonun / makronun tanımına atlamak için

Arama

* => arama sözcüğü (veya v kullanılarak seçilen metin) ileri yönde
# => arama sözcüğü (veya v kullanılarak seçilen metin) geri yönde
n => önceki arama komutunu ileri yönde
N yürüt => önceki arama komutunu geri yönde yürüt

Yukarıdaki tüm komutlar, kaç kez çalıştırılacağını belirtmek için bir sayıyla başlayabilir. Bu ek boyutun gücünün gerçekleşmesi, vim'i giderek daha fazla kullandıkça ve kendini geliştirmek için zorlandığından yavaşça gelir.


Ah,]] ve [[benim için yeni. Çok havalı!
Frew Schmidt

0

Sadece Metin giriyorum. Diğer her şey sadece ... Şeker.


0

TextPad'in eski bir kullanıcısıyım ve o programın hızlandırıcı tuşlarının çoğunu ezberlemiştim. Vim'de yaptığım ilk şeylerden biri tutarlılığı korumak için harita işlevini öğrenmekti (F5 arama, F8 değiştirme vb.). Kişisel renkler planımı oluşturdum ve başkalarının vimrc dosyalarından çok ödünç aldım. Viva Vim! Her dereceye kadar yapılandırılabilir.

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.