Bagaimana saya bisa secara permanen menampilkan jalur file saat ini di Vim?


91

Saya tahu CTRLgmenampilkan file yang sedang Anda kerjakan. Apakah ada cara untuk memodifikasi .vimrcnama file / path saya agar selalu ditampilkan?

Jawaban:


129

Di baris status Anda, tambahkan %Funtuk menampilkan jalur lengkap:

:help statusline

" Add full file path to your existing statusline
set statusline+=%F

Catatan, %Fakan menjadi jalur lengkap. Untuk mendapatkan jalur relatif ke direktori kerja, gunakan %f.

Jika baris status Anda belum terlihat, Anda mungkin perlu mengkonfigurasinya terlebih dahulu agar selalu terlihat, melalui laststatus=2

set laststatus=2

Lihat :help laststatusapa arti opsi tersebut. Biasanya, garis status mungkin disembunyikan, atau disembunyikan kecuali beberapa buffer terbuka, tetapi saya merasa sangat berguna untuk memiliki penyesuaian seperti ini setiap saat, sangat berharga untuk menyerahkan satu baris layar cadangan untuk itu.


1
Saya pasti lebih suka jawaban Anda daripada saya, tetapi menambahkan jawaban set statusline+=%Fsaya ~/.vimrcsepertinya tidak sesuai dengan apa yang Anda katakan. Meskipun dokumen tampaknya setuju dengan Anda ...
Tim Pote

1
Ini tidak berpengaruh. Permintaan maaf jika saya melewatkan sesuatu yang sederhana, apakah Anda punya pemikiran tentang itu?
zallarak

1
@TimPote Versi vim apa? Bekerja untuk saya. Mungkin baris status Anda sudah mendorongnya keluar atau membatasi lebarnya. Coba saja :set statusline=%Ftanpa+
Michael Berkowski

@zallarak Lihat komentar saya untuk Tim. Apakah garis status Anda berubah jika Anda melakukannya :set statusline=%F? Lihat ke kanan atau kiri untuk melihat apakah nama file tersembunyi di sana dalam statusline
Michael Berkowski

2
@TimPote Mungkin set laststatus=2untuk menjaga statusline terlihat sepanjang waktu. Aku lupa aku pakai itu.
Michael Berkowski

20

set ls = 2

tambahkan ini di vimrc, dan Anda akan selalu melihat nama file di bagian bawah.


set modeline tidak melakukan apa pun untuk saya, apa yang harus dilakukan? (set ls = 2 memang melakukan sesuatu). Bagaimana saya bisa membantu saya untuk mengetahuinya sendiri di lain waktu? Terima kasih! :)
Charlie Parker

1
set modelinesedikit berbahaya dan tidak ada hubungannya dengan pertanyaan tersebut. Ini memungkinkan eksekusi perintah Vim di 5 baris awal / akhir file. Ini harus diaktifkan hanya oleh mereka yang tahu mengapa dan benar-benar menginginkan ini. (Itulah mengapa saya -1 jawaban ini)
DrBeco

16

Saya menemukan 2 cara untuk menampilkan jalur file di bilah Judul gnome-terminal saat mengedit file dengan Vim.

Cara yang lebih sederhana (dan lebih baik): Tambahkan baris berikut ke ~/.vimrc:

set title

Yang akan menunjukkan Anda di atas:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

Cara yang lebih rumit akan menunjukkan kepada Anda jalur file absolut. Ini didokumentasikan lebih detail dalam posting blog yang baru-baru ini saya tulis.


The "set title" akan menampilkan nama file pada tab terminal. Fitur menarik.
duleshi

Menarik sekali, tidak menjawab pertanyaan yang diajukan. Anda juga menegaskan itu lebih baik - tetapi mungkin tidak. Misalnya jika Anda vim Anda terbuka di terminal yang dalam mode layar penuh, judul tidak terlihat. Jadi downvote.
apprenticeDev

8

Satu-satunya cara saya menemukan untuk mendapatkan path lengkap dari file saya bekerja di adalah: :echo expand('%:p'). Anda dapat memetakan ulang ctrl + g jika Anda mau, tetapi saya pribadi tidak suka terlalu banyak bergeser dari standar. Saya telah memetakan F7 seperti ini:

map  <F7> <Esc>:echo expand('%:p')<Return>

4
:help CTRL-G, dan lihat dua paragraf ke bawah CTRL-Gdengan hitungan.
Stefan Majewsky

1
Terima kasih, @StefanMajewsky. 1 CTRL-Gmenunjukkan nama file lengkap. Saya sedang mencari opsi ini.
Anton Kiselev

I love u Tim, ini adalah satu-satunya cara untuk benar-benar menunjukkan jalur absolut, bahkan tanpa ~.
ryancheung

7

Jika Anda menggunakan vim-airline , masukkan .vimrc:

let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'

Ini adalah modifikasi dari default maskapai, diubah %foleh %F.


6

Saya selalu menggunakan :f , tetapi jawaban dan tautan dari @MichaelBerkowski luar biasa!

:f menunjukkan jalur, jumlah baris, status yang diubah, posisi kursor saat ini, dan banyak lagi ...

Saya tidak tahu tentang CTRLGtetapi tampaknya hampir sama.


5

Statusline sangat kuat dan praktis menurut saya. Keluar dari kotak itu akan menampilkan nama file, posisi kursor dan beberapa bendera. Tetapi Anda ingin melakukan hal yang sama seperti saya dan mengganti nama file- bagian dengan path lengkap ke file tersebut.

Jadi saat mengedit .vimrcbaris status saya bisa terlihat seperti ini sebagai default:

.vimrc                                                        26,16           7%

Anda dapat melihat pengaturan statusline Anda dengan:

:set statusline?

Tetapi jika Anda belum membuat perubahan apa pun dan tidak ada modul yang mengubahnya, itu akan kosong. Tetapi dengan contoh di bagian bantuan ( :help statusline) Anda dapat menemukan bahwa defaultnya adalah:

:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

Jadi, sertakan ini dalam Anda .vimrcdan ubah %fke %F. Saya juga menambahkan menambahkan bendera tipe file ( %y) ke baris status saya karena saya merasa nyaman. Jadi konfigurasi yang saya hasilkan terlihat seperti ini:

:set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P

Dan hasilnya akan terlihat seperti ini:

~/.vimrc [vim]                                                26,16           7%

Bacaan yang bagus:

PS. Saya menjalankan vim 7.3


4

Jika Anda ingin jalur menyertakan symlink yang diselesaikan, gunakan yang berikut ini:

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

Untuk mempertahankan singkatan '~' untuk direktori home Anda, sertakan fnamemodify

set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*

Keduanya bekerja untuk saya di VIM 7.4 menggunakan iTerm2 ke SSH ke Ubuntu 16.04 LTS
James Nicholson
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.