Tampilkan nama file saat ini di vim?


157

Bagaimana Anda menampilkan nama file file yang sedang Anda kerjakan di vim?


1
Jika terminal Anda diatur dengan benar, Anda harus mendapatkan nama file di judul jendela.
Cascabel



2
ctrl + g adalah dapat menampilkan info file
Dhiren Hamal

Jawaban:


200

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


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

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.


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.


5

Kenapa begitu rumit? Control-G akan melakukan pekerjaan itu


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'))}\ %*

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.


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 :)


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.


'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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.