vim mengedit / beralih di antara banyak file secara efisien dalam struktur direktori besar

11

Saya sama sekali bukan pengguna daya vim, saya baru mulai memahami gerakan maju dan perintah dengan vim. Tapi ada satu kekurangan yang sepertinya tidak bisa kudapatkan.

Saya tumbuh dengan program grafis untuk menulis kode, tetapi saya baru saja mulai menggunakan vim pada ssh & layar untuk bekerja pada proyek yang cukup besar dengan banyak folder.

Saya ingin tahu apa yang dilakukan master vim untuk bekerja dengan banyak file dengan cepat dan mudah. Pertimbangkan aplikasi rel sebagai contoh. Katakanlah Anda ingin mengedit controller sehingga Anda menjalankan.

vim app/controllers/controller.rb

Tapi kemudian Anda dengan cepat ingin mengubah ke mengedit tampilan atau migrasi db, insting pertama saya adalah :wq, kembali ke bash untuk menavigasi ke direktori itu dan mulai vim lagi dalam buffer baru.

Ini jelas salah.

Saya telah belajar tentang beberapa hal seperti:

  • Clienterver (tapi saya tidak ingin menggunakan X lebih dari ssh dan ini sepertinya satu-satunya cara)
  • :euntuk membuka file lain dengan menjelajah, tapi sepertinya saya tidak bisa melakukannya dengan sangat cepat. Tab selesai benar-benar membuat saya tersandung.
  • Membuka seluruh direktori dan mencari melalui buffer.
  • NERDTree menjanjikan, tetapi saya benar-benar ingin menjauh dari representasi grafis untuk terus memaksa saya menguasai navigasi baris perintah

Saya minta maaf karena naif, tetapi saya benar-benar ingin belajar cara yang benar untuk melakukannya meskipun sangat subyektif.

Apa metode Anda, dan apa yang akan Anda rekomendasikan?

Februari
sumber
Khususnya untuk Ruby on Rails, plugin rails.vim Tim Pope memiliki beberapa perintah yang bagus (dengan penyelesaian; dapat diperluas ke hierarki baru) untuk membuka file untuk model / tampilan / pengontrol / migrasi / tes / ... (lihat rails-type-navigationdalam dokumentasi , atau :help rails-type-navigationketika Anda sudah terinstal).
Chris Johnsen

Jawaban:

7

Dimungkinkan untuk mengatur vim untuk mengedit banyak file tanpa harus keluar sama sekali. Anda menggunakan beberapa buffer dan beralih di antara mereka. Karena Anda menggunakan vim di dalam layar, Anda dapat meletakkan yang berikut di ~ / .vimrc Anda untuk mengaktifkannya.

   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>

Pemetaan kunci tersebut memetakan ke tombol Ctrl-Kiri dan Kanan untuk beralih di antara buffer. Tombol F4 memanggil menu yang sama dengan yang ditampilkan GUI. Menekan tab juga sekarang menampilkan sedikit menu untuk memilih penyelesaian ketika tab pers Anda.

Keith
sumber
Tip yang sangat bagus, ketiga jawaban ini benar-benar membantu saya merasa lebih nyaman. Manajemen buffer yang baik tanpa plugin adalah keterampilan yang bagus untuk dimiliki. Cintai wildmenu!
Februari
5

Hah! Saya dulu persis seperti Anda, jadi saya tahu persis dari mana Anda berasal. Bahkan sekarang saya tahu apa yang saya lakukan sampai batas tertentu (saya bukan dewa vim, tapi saya berharap untuk sampai di sana) Saya masih akan sesekali melakukan: wq dan kembali ke cangkang saya.

Lihat ini - ini mungkin membantu Anda. (Ini akan membantu saya juga, karena saya tidak pernah tahu tentang hal ini. Itulah yang luar biasa tentang situs pertukaran stackex - Anda belajar dengan membantu orang lain belajar!)

Inilah beberapa hal yang saya lakukan.

  1. The :eperintah. Dari dalam vim, saat mengedit file, Anda dapat melakukan sesuatu seperti :e dir/subdir/otherfiledan itu akan membukanya di buffer baru, yang berarti Anda akan memiliki dua file terbuka sekaligus.

  2. Ctrl-Shift-6(Tidak tahu nilai ascii yang sebenarnya). Jika Anda memiliki dua buffer terbuka, Anda dapat beralih di antara mereka dalam sekejap dengan toggle ini.

  3. bd- buffer delete. Memungkinkan Anda menghapus buffer.

  4. Ini sangat berguna - :sh. Jika Anda harus kembali ke shell untuk alasan apa pun (misalnya, untuk melihat direktori dan chmod file), Anda dapat menjalankan perintah shell vim untuk melakukan hal itu. Keluar dari shell membawa Anda kembali ke tempat Anda berada di vim.

  5. Dalam kategori yang sama dengan mengetik di atas :!dan perintah unix sesudahnya akan menjalankan perintah itu. Coba ini dengan ls. (Saya pikir itu juga berfungsi dengan builtin shell, tapi saya tidak yakin.)

Itulah yang saya gunakan sepanjang waktu. Ada juga :nuntuk selanjutnya, dan :puntuk file sebelumnya, karena Anda dapat memiliki lebih dari dua buffer terbuka dalam vim sekaligus (walaupun saya biasanya tidak melakukan ini).

makan siangme317
sumber
Luar biasa terima kasih untuk tipsnya. Saya juga menemukan ini: wincent.com/products/command-t . Saya siked untuk mulai menggunakannya. Satunya downside adalah bahwa Anda perlu ruby ​​(tidak begitu ramah dengan hal-hal ssh), tapi itu persis apa yang saya cari. Itu dikombinasikan dengan :sh, :edan manajemen buffer yang tepat, dan segala sesuatunya menjadi seksi
Februari
Dalam kebanyakan shell (yaitu shell dengan kontrol pekerjaan) Ctrl+Zharus menunda proses ( fgdari shell untuk menampilkannya lagi) - yang merupakan alternatif :sh.
maxschlepzig
Tip hebat lainnya! Luar biasa! Saya harus mengkompilasi ini dalam posting blog atau sesuatu.
Februari
2

Di situlah Anda mulai menggunakan plugin . Untuk manajemen file (atau buffer) NERD tree dan MiniBufExplorer adalah pilihan umum. Dalam kasus Anda, saya akan google " vim ruby ​​ide " dan mengikuti salah satu dari banyak tutorial yang saya temukan. Saya menggunakan Python dan 3 perintah dalam tutorial ini mengkonfigurasi semua yang saya butuhkan dari Vim.

phhehehe
sumber
2

Saya juga merekomendasikan menggunakan split windows untuk melihat banyak file sekaligus. Tambahkan beberapa keterampilan dengan Buffer dan manajemen Window dalam VIM, dan Anda akan menjadi ninja VIM dalam waktu singkat.

Untuk dokumentasi yang sebenarnya, saya akan mengarahkan Anda ke Dokumentasi VIM Windows , tetapi saya akan mencoba memberi Anda permulaan di sini.

Mulai VIM dengan 2 (atau lebih) jendela yang terbagi secara horizontal, jendela atas memiliki file1, jendela berikutnya memiliki file2, dll.

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

Mulai VIM dengan 2 (atau lebih) jendela yang terbagi secara vertikal, jendela paling kiri memiliki file1, jendela berikutnya memiliki file2, dll.

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

Pindahkan kursor ke jendela yang berbeda:

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

Sudah mengedit satu file, tetapi ingin membagi jendela dan mengedit file yang berbeda juga:

:split <file2>
:vsplit <file2>

Untuk split Horisontal dan Vertikal masing-masing.

Ada juga perintah untuk memindahkan windows, mengubah ukurannya, dll.

5mi11er
sumber
1

Gunakan perintah vi: split untuk membuka jendela edit kedua. split dapat melakukan split horizontal dan vertikal dan lebih dari dua sekaligus. Saya telah membuka 10 file dalam sesi vi yang sama.

wesmat
sumber