vim düzenleme / büyük dizin yapılarında birden çok dosya arasında verimli bir şekilde geçiş yapma


11

Hiç bir şekilde vim gücü kullanıcısı değilim, gelişmiş hareketleri ve komutları vim ile kavramaya başladım. Ama dolaşamadığım bir dezavantaj var.

Kod yazmak için grafik programlarla büyüdüm, ancak son zamanlarda birçok klasör içeren oldukça büyük projelerde çalışmak için ssh & screen üzerinden vim kullanmaya başladım.

Vim ustalarının birden fazla dosyayla hızlı ve kolay bir şekilde çalışmak için ne yaptığını merak ediyorum. Örnek olarak raylar uygulamasını ele alalım. Diyelim ki çalıştırmak için bir denetleyiciyi düzenlemek istiyorsunuz.

vim app/controllers/controller.rb

Ama sonra hızlıca bir görünümü veya bir db geçişini düzenlemeye geçmek istiyorsunuz, ilk içgüdüm, :wqo dizine gitmek için bash'a dönüp yepyeni bir arabellekte yeniden başlamak.

Bu açık bir şekilde yanlıştır.

Gibi birkaç şey öğrendim:

  • İstemci sunucusu (ama X'i ssh üzerinde kullanmak istemiyorum ve bu tek yol gibi görünüyor)
  • :egöz atarak başka bir dosyayı açmak için, ancak çok hızlı bir şekilde yapamıyorum. Sekme tamamlandı beni gerçekten yukarı.
  • Bir dizinin tamamını açma ve arabellekler arasında arama yapma.
  • NERDTree umut vericidir, ancak beni komut satırı navigasyonunda ustalaşmaya zorlamak için herhangi bir grafik gösterimden uzak durmak istiyorum

Saf olduğum için özür dilerim, ama gerçekten sübjektif olsa bile bununla ilgili doğru yolu öğrenmek istiyorum.

Yöntemleriniz nelerdir ve ne önerirsiniz?


Özellikle Ruby on için, Tim Papa'nın rails.vim eklentisi (tamamlanması ile; yeni hiyerarşilerine genişletilebilir) bazı güzel komutları vardır modeller / görünümler / kontrolörleri / göçler / testler için dosyaları açmak için / ... (bkz rails-type-navigationiçinde belgelerine veya :help rails-type-navigationsizi yüklediyseniz).
Chris Johnsen

Yanıtlar:


7

Hiç çıkmak zorunda kalmadan vim'i birden fazla dosyayı düzenleyecek şekilde ayarlamak mümkündür. Birden çok arabellek kullanır ve aralarında geçiş yaparsınız. Vim ekranını kullandığınız için ~ / .vimrc'nize bunu etkinleştirmek için aşağıdakileri koyabilirsiniz.

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

Bu tuş eşlemeleri, arabellekler arasında geçiş yapmak için Ctrl-Sol ve Sağ ok tuşlarıyla eşleşir. F4 tuşu GUI'nin göstereceği menüyü çağırır. Sekmeye basmak artık sekmeye bastığınızda tamamlanmayı seçmek için küçük bir menü görüntüler.


Çok iyi bir ipucu, bu üç cevap gerçekten daha rahat hissetmeme yardımcı oldu. Eklentiler olmadan iyi tampon yönetimi sahip olmak büyük bir beceridir. Wildmenu seviyorum!
Şubat'ta

5

Hah! Biliyorum bu yüzden, tam olarak senin gibi eskiden tam size nereden geldiklerini. Şimdi bile belli bir dereceye kadar ne yaptığımı bildiğime göre (vim tanrısıyım, ama oraya varmayı umuyorum) hala ara sıra a: wq yapacağım ve kabuğuma döneceğim.

Şuna bir bakın - bu size yardımcı olabilir. (Bana da yardımcı olacak, çünkü bunu hiç bilmiyordum. Stackexchange siteleri hakkında harika olan şey budur - başkalarının öğrenmesine yardımcı olarak öğrenirsin!)

İşte yaptığım bazı şeyler.

  1. :eKomut. Vim'in içinden, bir dosyayı düzenlerken, benzer bir şey yapabilirsiniz :e dir/subdir/otherfileve yeni bir tamponda açılacaktır, yani aynı anda iki dosyanız olacaktır.

  2. Ctrl-Shift-6(Gerçek ascii değerlerini bilmiyorum). Açık iki arabellek varsa, bu geçişle bir flaşta aralarında geçiş yapabilirsiniz.

  3. bd- arabellek silme. Bir tamponu temizlemenizi sağlar.

  4. Bu gerçekten çok kullanışlı :sh. Herhangi bir nedenden ötürü bir kabuğa geri dönmeniz gerekiyorsa (örneğin, bir dizine bakmak ve bir dosyayı chmod etmek için), vim'in shell komutunu sadece bunu yapmak için çağırabilirsiniz. Kabuktan çıkmak sizi tam olarak vim olduğunuz yere götürür.

  5. Yukarıdakiyle aynı kategoride - :!daha sonra yazarak ve bir unix komutu bu komutu yürütür. Bunu ile deneyin ls. (Bence kabuk yapılarıyla da çalışıyor, ama emin değilim.)

Bunlar her zaman kullandığım şeyler. Bir :nsonraki ve :pönceki dosya için de var, çünkü bir kerede vim'de açık olan ikiden fazla arabelleğe sahip olabilirsiniz (Bunu genellikle yapmıyorum).


Bu ipuçları için harika teşekkürler. Ben de buldum: wincent.com/products/command-t . Kullanmaya başlamak için sikildim. Sadece olumsuz, yakut (ssh malzeme ile çok kolay değil) gerekir, ama tam olarak ne aradığını. İle birleştiğinde :sh,:e ve uygun tampon yönetimi ve işler seksi olsun
FEBS

Çoğu mermide (yani iş kontrollü mermiler) Ctrl+Z işlemi askıya almalıdır (mermiden fgtekrar görüntülemek için) - buna alternatif olarak :sh.
maxschlepzig

Başka bir harika ipucu! Mükemmel! Bunları bir blog gönderisinde derlemem gerekecek.
Şubat'ta


2

Ayrıca aynı anda birden fazla dosyayı görüntülemek için bölünmüş pencereler kullanmanızı tavsiye ederim. VIM içinde Tampon ve Pencere yönetimi ile bazı beceriler ekleyin ve hemen bir VIM ninja olacaksınız.

Gerçek belgeler için, sizi VIM Windows Belgelerine yönlendireceğim , ancak size burada bir başlangıç ​​yapmaya çalışacağım.

VIM'i 2 (veya daha fazla) yatay bölünmüş pencereyle başlatın, üst pencerede dosya1, bir sonraki pencerede dosya2 vb.

vim -o <file1> <file2> (file3 file4 ...)

VIM'i dikey olarak bölünmüş 2 (veya daha fazla) pencereyle başlatın, en soldaki pencerede dosya1, bir sonraki pencerede dosya2 vb.

vim -O <file1> <file2> (file3 file4 ...)

İmleci farklı bir pencereye taşıma:

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

Zaten bir dosyayı düzenliyor, ancak pencereyi bölmek ve farklı bir dosyayı düzenlemek istiyorsanız:

:split <file2>
:vsplit <file2>

Sırasıyla Yatay ve Dikey bölme için.

Ayrıca pencereleri hareket ettirme, yeniden boyutlandırma vb. Komutlar da vardır.


1

İkinci bir düzenleme penceresi açmak için vi: split komutunu kullanın. split, hem yatay hem de dikey bölmeleri ve aynı anda ikiden fazlasını yapabilir. Aynı vi oturumunda 10 kadar dosya açtım.

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.