Bagaimana Anda kembali dari 'gf' di Vim

187

Saya menggunakan Vim untuk windows yang diinstal dalam mode Unix. Berkat situs ini saya sekarang menggunakan gfperintah untuk pergi ke file di bawah kursor.

Saya mencari perintah untuk:

  1. kembali ke file sebelumnya (mirip dengan Ctrl+ Tuntuk ctag), atau
  2. remap gf untuk secara otomatis meluncurkan file baru di jendela baru.
JayG
sumber

Jawaban:

294

Saya menggunakan Ctrl-O

pel
sumber
43
CTRL-O untuk pergi ke posisi yang lebih lama di daftar lompatan, <Tab> atau CTRL-I untuk pergi ke posisi yang lebih baru.
Sébastien RoccaSerra
4
@ g33kz0r mnemonik akan menjadi O = OUT, I = IN => Ctrl - O membawa Anda keluar, Ctrl membawa Anda masuk. Jika setiap lompatan seperti melalui pintu, itu.
kronn
CTRL-O akan melompat ke posisi terakhir dikunjungi, ini menjengkelkan ketika file baru telah dicari. Saya lebih suka Shift-Ctrl-6 (dalam kasus saya Ctrl-6 tidak bekerja)
Adriano
71

Saya sering menggunakan Ctrl- 6untuk ini.

Ini berguna karena memungkinkan saya untuk dengan cepat bolak-balik antara dua file.

Dominic Dos Santos
sumber
47

Anda mungkin ingin menggunakan CTRL-W gf untuk membuka file di tab baru.

Anda dapat menutup file yang baru dibuka seperti biasa dengan :bd, atau menggunakan CTRL-6dan cara biasa mengubah buffer.

Roman Odaisky
sumber
7
tab lebih nyaman daripada buffer untuk saya, dan menggunakan nnoremap gf <C-W>gfuntuk membuka di tab baru mungkin lebih baik.
Searene
13

Gunakan gf untuk turun ke dalam file dan gunakan: bf untuk kembali

Ram
sumber
1
Saya memiliki dua jendela yang terbuka di tab dan ini hanya membuka jendela kedua di yang pertama daripada melompat kembali ke buffer sebelumnya.
Kenny Evitt
12

Cukup gunakan :e#diikuti oleh Enter- yang pada dasarnya mengatakan untuk mengedit file terakhir (terbaru).

paxdiablo
sumber
9

Ctrl-Shift-6 adalah satu.

:e#↲ adalah yang lain.

tzot
sumber
8
Pergeseran itu tidak perlu. Berhentilah menyalahgunakan jari-jari Anda.
Zathrus
6
Um Saya agak tua. Ctrl-6 tidak akan bekerja dengan vi pada terminal Wyse yang saya gunakan di tempat kerja bertahun-tahun yang lalu. Lihat, beberapa hal tetap terukir. Dan tidak menggunakan Shift dalam kombo ini tidak akan membuat perbedaan pada penyalahgunaan jari total saya. Hei, setidaknya kamu sudah mencoba yang terbaik. HTH. TANGAN.
tzot
Ini beralih ke apa yang disebut file alternatif .
jpaugh
5

Saya dapat CTRL-W untuk bekerja.
Sangat menyedihkan bahwa saya telah menghabiskan begitu lama menyempurnakan peta untuk perintah ini hanya untuk menemukan bahwa ada versi bawaan.


sumber
5

Saya tidak tahu jawaban untuk bagian 2 dari pertanyaan Anda, tetapi saya dapat membantu dengan bagian 1. Gunakan

:e#

Vim menyimpan daftar file (buffer) yang sedang diedit. Jika Anda mengetik

:buffers

itu akan mencantumkan semua file yang sedang Anda edit. File dalam daftar itu dengan% di sampingnya adalah file saat ini. Yang dengan # di sebelahnya adalah file alternatif. : e # akan beralih antara file saat ini dan file alternatif. Daripada mengetik sebanyak itu, saya memetakan F2 ke: e # jadi saya dapat dengan mudah membalik antara file saat ini dan file alternatif. Saya memetakan perintah ke F2 dengan menambahkan ini ke .vimrc

nmap `<F2> :e#<CR>`
codebunny
sumber
2
Saya tidak berpikir Anda ingin menggunakan: e # karena itu berpotensi memuat ulang file. : b # melakukan yang setara tanpa masalah ini.
lambacck
Poin yang bagus. Itu beralih ke buffer lain tanpa memuat ulang.
codebunny
2

Ketika Anda membuka file baru (dengan gf atau : n atau perintah lain) file lama tetap dalam daftar buffer. Anda dapat membuat daftar file yang terbuka dengan : ls

Jika Anda ingin menavigasi dengan mudah di antara buffer di vim, Anda dapat membuat pemetaan seperti ini:

nmap <M-LEFT> :bN<cr>
nmap <M-RIGHT> :bn<cr>

Sekarang Anda dapat beralih di antara buffer dengan Alt + panah kiri atau Alt + panah kanan.

Dokumentasi lengkap tentang pemetaan ada di sini:

:help map.txt
Oli
sumber
0

Saya belum melihat perintah gf Anda tetapi saya membayangkannya menggunakan perintah : e atau : find .
Dengan asumsi bahwa ini benar, cukup ganti : e atau : find dengan : new (atau : vnew untuk pemisahan vertikal) dan file akan terbuka di jendela baru, bukan yang sama.

misalnya

"Beralih antara header dan cpp
nmap, s: find%: t: ​​r.cpp <CR>
nmap, S: new%: t: ​​r.cpp <CR>
nmap, h: find%: t: ​​rh <CR>
nmap, H: new%: t: ​​rh <CR>
nmap, F: baru = perluas ("<cfile>: t") <CR> <CR>
nmap, d: new = expand ("<cfile>") <CR> <CR> 


sumber
2
gfbuilt-in. Itu milik kita semua. :-)
jpaugh