Menavigasi banyak file

11

Jika saya membuka vim dengan beberapa file pada baris perintah, misalnya vim debug.log*yang memuat debug.log, debug.log.1dan debug.log.2, bisakah saya menavigasi di antara mereka, menetapkannya ke beberapa jendela ( :split/ :vsplit) atau semacamnya?

Satu-satunya jalan pintas yang saya tahu untuk mode operasi ini adalah :n, yang memuat file berikutnya dalam daftar. Apa lagi yang bisa saya lakukan dalam mode operasi multi-file ini? (atau subjek bantuan mana yang mencakup hal itu?)

SF.
sumber
3
:previous(atau :prev) adalah kebalikan dari :n, dan mengembalikan file.
Kaya

Jawaban:

13

Topik bantuan yang paling relevan adalah :ls, juga dikenal sebagai :filesatau :buffers.

Dalam vim debug.log*contoh Anda , jika Anda memberi :lsperintah, Anda akan melihat:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

... menunjukkan bahwa yang pertama adalah buffer aktif.

Untuk membuka debug.log.2di jendela saat ini, berikan perintah :b 3atau :b debug.log.2untuk menampilkan buffer 3.

Untuk membagi jendela dan membuka buffer 2 di dalamnya, berikan :sb 2perintah. Versi vertikal-split itu adalah :vert sb 2.

Ada banyak varian :bperintah; telusuri topik bantuan yang dikutip di sini untuk merasakannya.


Selain itu, Anda dapat meminta vim -o debug.log*untuk membuka semua file, masing-masing di split sendiri, atau vim -O debug.log*untuk membukanya masing-masing dalam split vertikal.

200_sukses
sumber
6

Selain fungsionalitas vim mentah yang disebutkan oleh 200_success, ekosistem Vim penuh dengan plugin untuk memberikan fungsionalitas tambahan, seperti:

Namun, sebelum Anda pergi dan mulai menggunakan plugin, yang terbaik adalah memahami sepenuhnya buffer dan windows di vim.

Polling Cody
sumber
1
Harap baca kebijakan kami tentang jawaban rekomendasi-plugin dan tambahkan beberapa detail tentang bagaimana sebenarnya plugin ini dapat menguntungkan pengguna.
200_sukses
5

Anda juga dapat membuka vim dengan parameter berbeda.

Buka file di tab:

vim -p debug.log*

Membuka file dalam pemisahan vertikal:

vim -o debug.log*

Ada plugin keren dan cukup kuat yang disebut CtrlSpace:

https://github.com/szw/vim-ctrlspace

Ini sangat berguna jika Anda perlu bekerja dengan banyak file. Cukup Anda bisa membayangkan ctrl-space sebagai daftar buffer sendiri untuk setiap tab. Ini memberikan cara yang sangat mudah untuk menavigasi antara file, seperti yang dinyatakan penulis:

Vim-CtrlSpace adalah plugin Vim untuk mengontrol dan mengatur ruang kerja Anda di Vim. Termasuk mengelola buffer, file, tab, sesi, dan akhirnya proyek. Pendekatannya agak unik, tetapi tentu saja Anda akan merasa di rumah, terutama jika Anda sudah menggunakan windows, tab, buffer, dll.

Martin Höger
sumber
Selamat datang di Vi / Vim! Silakan baca kebijakan kami tentang jawaban rekomendasi-plugin dan tambahkan beberapa detail tentang bagaimana sebenarnya plugin menjawab pertanyaan.
200_sukses
4

Jika Anda ingin membuka file tertentu tanpa harus melalui :ls, Anda dapat menggunakan salah satu dari berikut ini:

  • :vs filename membuka file dalam pemisahan vertikal
  • :sp filename melakukan hal yang sama, tetapi dalam pemisahan horizontal
  • :tabe filename terbuka di tab baru

Perlu diketahui juga, bahwa jika Anda tidak menentukan nama file, Anda akan membuka split / tab baru dari file saat ini, yang dapat berguna untuk file yang panjang.

Tom
sumber
2
:tadalah perintah salin. Untuk :tabeditAnda memerlukan setidaknya :tabe.
tommcdo
Oh sial, kau benar sekali. Terima kasih, saya akan mengedit!
Tom
0

Ada beberapa cara pintas yang berguna untuk menavigasi banyak file:

  • CTRL-^(di mana Nnomor buffer) untuk melompat ke file yang diedit sebelumnya.
  • N CTRL-^(di mana Nnomor buffer) untuk melompat ke buffer tertentu.

    Sebagai contoh:

    • 1Control+^ - buka buffer 1
    • 2Control+^ - buka buffer ke-2
    • dll.

    Ini setara dengan :buffer N.

  • Gunakan :Ex/ :Sex/ :Vexuntuk menavigasi direktori saat ini.

  • Gunakan :tabssebagai gantinya ( vim -p) dengan beberapa pintasan khusus di Anda .vimrcseperti:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • Gunakan :ba/ :vert bauntuk membagi, lompat ke buffer yang dipilih melalui Control+w, w/ W, lalu jadikan itu jendela saat ini ( :on).

kenorb
sumber