Tampilkan nama file saat ini di vim?

Jawaban:

200

:f( :file) akan melakukan hal yang sama dengan <C-G>. :f!akan memberikan versi yang tidak dikunci, jika ada.

smilingthax
sumber
2
Bagus, tetapi apakah mungkin untuk menunjukkannya di bar bagian atas terminal? (atau terminator) atau di suatu tempat tanpa mengetikkan perintah.
eMarine
21
:f!tidak selalu berfungsi, tekan 1, lalu Ctrl-G untuk path lengkap.
ives
1
Bagaimana dengan jalur penuh? Ketika saya mulai vim dari ~/dev/file.pydan mengeksekusi :fdalam vim, saya mendapatkan file.pysebagai output bukan ~/dev/file.py.
gxyd
1
@ives apa artinya 1 dan Ctrl + g artinya terpisah?
jobima
2
@jobima: ini memodifikasi ctrl-guntuk mengembalikan path + file. :fakan mengembalikan nama file tanpa jalur, seperti yang mungkin ctrl-g. A 1sebelum ctrl-gakan menunjukkan jalur & nama (belum perlu diperluas). yaitu akan ditampilkan ~/dev/file.pysebagai gantinya file.py. 2diikuti oleh ctrl-gakan mencakup yang penyangga: buf 1: "~/dev/file.py".
ives
71

ctrl+ gakan melakukannya.

Juga, saya ingin memiliki:

set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"

Yang menghasilkan:

foo.c [C] [0x23] <kode / foo.c 1, 1 2% dari 50

Juga, seperti seseorang yang disebutkan (tetapi sekarang dihapus) %akan diganti dengan nama file saat ini. Sebagai contoh:

:! echo "file saat ini:%"
file saat ini: foo.c
Tekan ENTER atau ketik perintah untuk melanjutkan
David Wolever
sumber
2
Apa arti [C]dan [0x23]bagian?
LangeHaare
@LangeHaare Filetype dan nilai hex karakter di bawah kursor masing
'statusline'adalah string, tetapi Anda tidak memasukkan tanda kutip di set: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesjuga membutuhkan ruang yang lolos
D. Ben Knoble
18

atur garis status. info lebih lanjut dengan:help statusline

Perintah-perintah ini bisa masuk dalam file .vimrc Anda, atau Anda dapat memasukkannya sebagai perintah saat vim dengan mengetikkan ':' dalam mode perintah.

Pertama, atur status terakhir ke 2 menggunakan yang berikut:

set laststatus=2

Kemudian setel baris status ke% f untuk nama file pendek.

set statusline=%f

Untuk path lengkap ke file, gunakan% F.

Brian Clements
sumber
E518: Opsi Tidak Diketahui:% f
Isius
Saya sudah memperbarui jawabannya, Isius. Semoga itu membuatnya lebih jelas.
Brian Clements
5

:set title untuk menampilkan nama file di bilah judul jendela.

Ryan Le
sumber
5

Kenapa begitu rumit? Control-G akan melakukan pekerjaan itu

sean
sumber
4

Untuk menampilkan path lengkap untuk file apa pun, termasuk symlink yang diselesaikan, gunakan yang berikut ini.

:echo resolve(expand('%:p'))

Ini dapat ditambahkan ke bilah status Anda dengan menambahkan baris di bawah ini ke ~./vimrc

set statusline +=%{resolve(expand('%:p'))}\ %*
joelostblom
sumber
2

Salah satu saran di atas harus diubah menjadi

set statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines

untuk membuatnya bekerja. Juga

set laststatus=2

digunakan.

cucujoidea
sumber
Selamat Datang di Stack Overflow ! Ini mungkin seharusnya merupakan sunting atau komentar yang disarankan untuk jawaban yang relevan — Anda belum memiliki reputasi yang cukup untuk berkomentar atau mengedit, tetapi Anda akan segera melakukannya jika Anda mengajukan pertanyaan yang bagus dan menulis jawaban yang baik! Sementara itu, saya akan menyarankan perbaikan yang relevan kepada penulis jawaban. Tangkapan yang bagus!
D. Ben Knoble
1

Saya menggunakan yang menakjubkan vimrcdari amix: https://github.com/amix/vimrc

Menggunakan lightline.vimpluging dan menampilkan nama file pada bilah status.

Hal yang hebat tentang penggunaan amix/vimrcadalah bahwa plugin ini menangani sebagian besar penyesuaian, sangat stabil, dan telah diuji oleh ribuan orang, karena Anda dapat memeriksa dengan melihat jumlah bintang github .. dan masalah yang jarang terjadi.

Ini juga cukup sering diperbarui.

PS: bukan penulis salah satu dari plugin .. hanya penggemar :)

alpha_989
sumber
1

Saya juga perlu meletakkan ini di file .vimrc saya:

set noruler
set laststatus=2

Kemudian saya bisa memasukkan sesuatu seperti set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"dalam file .vimrc saya dan setelah me-restart terminal saya baris status ditampilkan dengan benar.

Alex Fenwood Hughes
sumber
'statusline'adalah string, tetapi Anda tidak menyertakan tanda kutip di set: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesjuga membutuhkan ruang yang lolos
D. Ben Knoble