Buka nama file di bawah kursor seperti gf, tetapi di tab baru (atau split)?

43

Perintah mode normal gfpergi ke file dengan jalur kursor saat ini.

Tetapi ia melakukannya di jendela saat ini, menggantikan teks saat ini. Itu berarti Anda harus menavigasi kembali secara eksplisit untuk pergi ke belakang nanti, dan bahwa Anda perlu menulis perubahan di buffer saat ini secara potensial.

Saya yakin itu mungkin dengan membuka file di bawah kursor di tabview baru?

Volker Siegel
sumber
3
Mengaktifkan 'hidden'opsi ( set hidden) memungkinkan Anda bernavigasi dari buffer yang belum disimpan. Bagi saya, ini adalah pendongkrak produktivitas yang sangat besar, dan sangat penting untuk berhenti mengandalkan pemisahan dan tab.
tommcdo

Jawaban:

56

EDIT: Sarankan pemetaan yang simetris dengan baik untuk case split vertikal, karena Vim secara default memiliki dua pemetaan untuk case split horizontal.

Ada beberapa cara untuk mengedit "file di bawah kursor", dan walaupun Anda tentu saja dapat memetakan kembali gfuntuk mengedit dalam tabpage baru seperti @ alexander-myshov menyebutkan, itu berarti Anda memiliki dua cara untuk mengeditnya di tabpage baru, tetapi tidak ada cara untuk mengeditnya. sunting di jendela saat ini, yang terkadang juga ingin Anda lakukan. Tidak sulit untuk menggunakan pemetaan standar, tetapi jika Anda ingin memetakan salah satunya gf, saya sarankan mengganti pemetaan, sehingga Anda tidak kehilangan salah satunya.

Beberapa cara untuk mengedit nama file di bawah kursor adalah

  • gf - Edit file yang ada di bawah kursor di jendela yang sama
  • C-Wf - Edit file yang ada di bawah kursor di jendela terpisah
  • C-WC-F - Edit file yang ada di bawah kursor di jendela terpisah
  • C-Wgf - Edit file yang ada di bawah kursor di halaman tab baru

Tidak ada pemetaan standar untuk mengedit file yang ada di bawah kursor dalam pemisahan vertikal, tetapi Anda dapat mencapainya dengan terlebih dahulu membelah jendela secara vertikal dan kemudian mengedit file di bawah kursor di jendela saat ini.

  • C-Wv+ gf- Edit file yang ada di bawah kursor di jendela yang terbagi secara vertikal

Seperti yang Anda lihat di atas, ada dua pemetaan default untuk mengedit file di bawah kursor dalam pemisahan horizontal. Karena itu Anda dapat memetakan ulang salah satu dari mereka ke keystring di atas, memperluas kelompok peta untuk juga mencakup kasus perpecahan vertikal. Anda dapat mengikat apa pun, tentu saja, tapi ini tampaknya untuk menyelesaikan simetri baik: nnoremap <C-W><C-F> <C-W>vgf. Sekarang kamu punya

  • gf - Edit file yang ada di bawah kursor di jendela yang sama
  • C-Wf - Edit file yang ada di bawah kursor di jendela terpisah
  • C-WC-F - Edit file yang ada di bawah kursor di jendela yang terbagi secara vertikal
  • C-Wgf - Edit file yang ada di bawah kursor di halaman tab baru

Anda juga dapat pergi ke baris tertentu di file, jika nama file di bawah kursor diikuti oleh nomor baris. Jika Anda memiliki

filename:10

Anda dapat mengedit file dan meminta kursor pindah ke baris 10 gF. Persamaannya berlaku untuk C-WFsplit dan C-WgFtabpage. Melengkapi simetri untuk split vertikal tidak sesederhana di sini, tapi saya akan menyarankan bahwa C-WC-S-Fpeta diperoleh dengan nnoremap <C-W><C-S-F> <C-W>vgF, meniru Fatau Shift+ fdari default peta sebagai kandidat.

Sebagai :contoh, Anda dapat menggunakan karakter apa pun yang bukan karakter nama file (lihat :h 'isfname').


Semua perintah ini datang dengan saus apel, seperti

  • perluas wildchar
  • lihat di lebih banyak tempat daripada direktori saat ini, sesuai dengan 'path'pilihan Anda
  • menambahkan ekstensi file ke nama file, sesuai dengan 'suffixesadd'pilihan Anda
  • kalau tidak ubah nama file yang diberikan untuk menemukan kecocokan, sesuai dengan 'includeexpr'pilihan Anda

Baca selengkapnya di :help gfdan topik bantuan untuk berbagai opsi ini.


Jika nama file di bawah kursor menamai file yang tidak ada, Anda mungkin lebih baik menggunakan perintah edit standar dengan <cfile>, seperti

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

dan dengan ini tentu saja Anda dapat menggunakan hal-hal seperti :spl+10 filenameuntuk memindahkan kursor ke garis tertentu atau :tabe+/cologne filenameuntuk memindahkan kursor ke kemunculan pola yang pertama.

jjaderberg
sumber
+1 Komentar terbaik dengan penjelasan yang jelas, jauh lebih baik daripada dokumentasi yang dibagi dalam beberapa topik.
Loves Probability
8

Cukup gunakan binding untuk ini:

membuka di jendela baru (terpecah):

nnoremap gf <C-W>f
vnoremap gf <C-W>f

membuka di tab baru:

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

periksa juga ini: :help CTRL-W_gf

Alexander Myshov
sumber
Apakah ini bekerja untuk Anda? Vim tampaknya tidak ingin saya memetakan kembali gfke hal lain. Bahkan nnoremap gf :echo "hello"<CR> masih membuka file di bawah kursor dalam buffer baru (dan ya, saya bersumber vimrc).
tandrewnichols
Ah, nevermind - Saya memiliki plugin yang mengganggu.
tandrewnichols