Ketika saya masuk ke mode perintah dan ketik
:!mycommand %
Saya mendapatkan perintah saya dieksekusi pada file saat ini ( %
diperluas ke nama file saat ini). Apakah ada konstruksi serupa yang memperluas nama file lengkap (dengan jalur lengkap)?
Saya menggunakan Windows.
Jawaban:
:!mycommand %:p
Terkait:
:!cd %:p:h
sumber
:help filename-modifiers
:%p
adalah jalur absolut ke file, bukan jalur relatif.:%p%h
adalah jalur absolut ke direktori induk file. Menggunakan just%:h
dapat menghasilkan jalur relatif.cd ~ ; vim .vimrc
Vim :,:!echo %:h
harus menampilkan '.' untuk jalur relatif.Dua jawaban lainnya tidak berhasil untuk saya (untuk beberapa alasan). Namun, saya menemukan bahwa kombo ini menampilkan jalur lengkap ketika diketik dalam mode Normal:
Tekan 1laluCtrlG
Sumber: " Dapatkan nama file saat ini " di Wiki Tips Vim. Lihat juga
{count}CTRL-G
bagian:help CTRL-G
.sumber
:!
).{count}CTRL-G
Urutan Anda adalah untuk menampilkan jalur lengkap di UI.Tambahkan
:p
, misalnyaDan
%:p:h
akan memberi Anda jalur direktori tempat file tersebut berada.sumber
Untuk mencetak nama file vim saat ini:
Misalnya (dengan fungsi vim), untuk
resolve()
danexpand()
setiap symlink ke jalan mutlak untuk naskah saat ini<sfile>:p
(bukan%:p
), dan kemudianexec
kesource
dalamfnameescape
nama file -ed terkandung dalam variabel vim fungsi-lokall:vimrcfilename
:Catatan:
:help fnamemodify
%:p
(file buffer) /<sfile>:p
(file script)expand('<sfile>')
tidak bekerja dari dalam suatu fungsil:varname
tidak berfungsi; jadi,exec
- rangkaian string - danfnameescape
:messages
mencetak pesan 200 vim [kesalahan] terbaruReferensi
sumber
Dapatkan nama file saat ini http://vim.wikia.com/wiki/Get_the_name_of_the_current_file
Set_working_directory_to_the_current_file http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file
sumber
Jika Anda ingin menggunakan jalur lengkap di Anda
vimrc
, Anda dapat menggunakan sesuatu seperti ini:Ini akan memberi Anda jalur dengan garis miring terbalik di Windows.
sumber