Bagaimana cara mengetahui file mana yang saat ini dibuka di vim?

61

Ini mungkin terdengar sepele tetapi, pada lebih dari satu kesempatan, saya telah menemukan diri saya lupa file mana yang vimtelah saya buka (mis. Ketika saya melihat melalui file log yang berbeda dan semacamnya) dan satu-satunya cara saya tahu bagaimana mengetahuinya adalah dengan menutup file dan lihat di histori perintah untuk perintah terbaru.

Apakah ada perintah dalam vim untuk memberi tahu Anda file mana yang telah Anda buka tanpa keluar dari program atau file yang telah Anda buka (misalnya :<which_file_cmd>?)

amfibi
sumber
5
Jika Anda tidak menelepon vimdengan begitu banyak argumen, gunakan :args.
41754

Jawaban:

76

Selain jawaban uprego , Anda dapat menekan Ctrl+ G(dalam mode normal) untuk mendapatkan nama buffer saat ini serta jumlah total baris di dalamnya dan posisi Anda saat ini di dalamnya.

Memperbarui

Sesuai komentar rxdazn , Anda dapat menekan 1sebelum Ctrl+ Guntuk mendapatkan path file lengkap. Jika Anda menekan 2, Anda mendapatkan path file lengkap dan nomor buffer yang saat ini telah Anda buka (berguna ketika Anda telah membuka banyak file dengan vim).

Joseph R.
sumber
Seperti banyak perintah vim, ini juga berlaku untuk lessperintah yang saya gunakan saat melihat file yang bertentangan dengan pengeditan.
jmathew
18
juga, menekan 1 sebelum Ctrl + G memberi Anda path lengkap file
rxdazn
23

Saat masuk vimsaya selalu menggunakan :lsperintah.

Contoh

:ls
  1 %a   "blah.txt"                         line 1

Di mana blah.txtnama file itu.

slm
sumber
20
:f

memberi nama file saat ini terbuka.

mtk
sumber
1
brilian dan sangat minimalis
amfibi
7

Ketika vimtidak dipanggil dengan banyak args, :argssangat membantu.

41754
sumber
4
Masalah lain dengan ini adalah bahwa jika file dibuka setelah vim diluncurkan, itu tidak akan terdaftar.
Patrick
4

Jika Anda dapat memiliki file konfigurasi vim default, Anda dapat menambahkan statuslineuntuk selalu memiliki detail file yang tersedia. Saya mengerti bahwa jika Anda terus-menerus mengirim ulang ke server yang berbeda ini tidak akan banyak membantu. Inilah yang agak rumit saya tarik dari .vimrc saya.

" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%

" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black

" Make sure it always shows
set laststatus=2

Dan sepertinya ini di MacVim (tetapi juga berfungsi di terminal). masukkan deskripsi gambar di sini

Seperti biasa yang dapat Anda lakukan :help statuslineuntuk mendapatkan lebih banyak opsi dan detail. Dan checkout Learning Vim the Hard Way bab 17 untuk penjelasan yang baik tentang statusline.

jathath
sumber
Saya selalu menggunakan statusline juga. +1
Rob
1

Ada juga :echo @%, yang memberi Anda nama file relatif ke direktori saat ini.

kojiro
sumber
1

Ada banyak cara untuk mendapatkan info seperti ini, tetapi jika Anda menginginkan sesuatu sehingga Anda hanya perlu menekan tombol dan nama file akan ditampilkan kemudian masukkan yang berikut ini ke ~/.vimrc:

map <F4> <ESC>:file<CR>

Ini mengatakan,

bind the `F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)

Dan fileperintah, seperti yang mungkin terlihat, mengembalikan nama file saat ini bersama dengan info lainnya.

Anda juga dapat mengatur baris status sehingga Anda bahkan tidak perlu melakukan apa pun kecuali melihat.

Untuk menjaga status-line selalu masukkan yang berikut ini ke Anda ~/.vimrc:

set laststatus=2

Ini memberitahu ViM untuk selalu menampilkan garis status, opsi lain adalah 0, untuk tidak pernah, dan 1hanya ketika Anda memiliki dua atau lebih jendela terbuka di ViM.

Alexej Magura
sumber
1

Saya biasanya cukup mengetik :e dan ini menunjukkan saya path file lengkap dan jumlah baris dan karakter juga.

Peringatan : itu membuka kembali file dari disk pada dasarnya, jadi ini sangat berguna ketika file sudah disimpan.

:help :e mengatakan:

                          *:e* *:edit*
Edit the current file.  This is useful to re-edit the
current file, when it has been changed outside of Vim.
This fails when changes have been made to the current
buffer and 'autowriteall' isn't set or the file can't
be written.
David d C e Freitas
sumber
1

Saya vimrc saya punya pemetaan ini

nnoremap <leader>pfn :echo expand('%:p')<CR>

Jadi jika saya mengetik ,pfn, atau "print file name", itu akan menggema seluruh path file.

Philip
sumber