Jawaban:
Saya yakin ada cara lain untuk melakukan ini ... tetapi perintah utama yang Anda inginkan adalah :r[ead]
yang menyisipkan output dari perintah ke buffer.
Jadi, untuk memasukkan hanya nama file:
:r! echo %
Dan, untuk memasukkan jalur lengkap:
:r! echo %:p
Untuk info lebih lanjut:
:help read
:help filename-modifiers
Nama file saat ini ada dalam "%
register, sehingga Anda dapat memasukkannya (saat dalam mode insert) dengan <c-r>%
; path lengkap dapat dimasukkan dengan <c-r>=expand("%:p")
. Anda bisa membuat makronya jika Anda sering menggunakannya. Untuk selengkapnya, trik serupa, lihat :h expand
dan :h "=
.
<c-r>
tentukan bahwa karakter selanjutnya adalah register.
"%p
dalam mode normal atau visual.
Seperti dapat dilihat di :h registers
, "%
register berisi nama file saat ini. The :pu[t]
perintah menyisipkan isi dari register ke dalam teks.
Jadi, untuk memasukkan nama file yang sebenarnya Anda dapat mengetikkan salah satu dari ini, dalam mode perintah:
:put %
atau
"%p
Untuk memasukkan nama file dengan path lengkap, ketik
:put=expand('%:p')
dalam mode perintah.
Info lebih lanjut:
:h pu[t]
Dengan mengetik "rp
Anda bisa menempelkan isi register "r
.
:put "%:p"
tampaknya tidak bekerja untuk saya. Tampaknya hanya berfungsi dengan expand () , seperti pada :put =expand('%:p')
:, yang membuatnya tidak lebih rumit daripada <c-r>=expand('%:p')
sayangnya.
Cara sederhana adalah menjalankan:
!!echo %
!!
mengganti baris saat ini dengan hasil dari perintah yang mengikutinya.
%
diganti dengan nama file yang diedit dalam perintah sehingga ini akan secara efektif memasukkan nama itu dalam file yang diedit.
Nama file adalah yang Anda berikan ke perintah vi (m) dan mungkin berisi path relatif atau absolut. Jika Anda ingin menghapusnya dan hanya menyimpan nama file, jalankan
!!basename %
Jika Anda perlu sering melakukan ini, mungkin berguna untuk mengikat urutan kunci ke apa yang Anda inginkan, sesuai http://vim.wikia.com/wiki/Insert_current_filename
menyisipkan nama file saat ini tanpa ekstensi pada posisi kursor, ketika Anda berada dalam mode insert.
:inoremap \fn <C-R>=expand("%:t:r")<CR>
Untuk tetap menggunakan ekstensi:
:inoremap \fn <C-R>=expand("%:t")<CR>
Untuk memasukkan path absolut dari direktori file sedang digunakan:
:inoremap \fn <C-R>=expand("%:p:h")<CR>
Untuk memasukkan jalur relatif dari direktori file digunakan:
:inoremap \fn <C-R>=expand("%:h")<CR>
Semua di atas bekerja langsung vim
untuk sesi ini, atau Anda dapat memasukkannya ke dalam .vimrc
(di mana titik dua di baris adalah opsional).
Saya sedang mencari cara termudah untuk menyisipkan nama file saat ini (tanpa jalur atau ekstensi) ke posisi saat ini (tidak ada baris baru, tidak ada ganti baris saat ini). Jadi menggabungkan jawaban sebelumnya dan tautan ini, inilah yang saya cari.
Dalam mode sisipkan :
<C-R>=expand("%:t:r")
Kemudian waktu berikutnya (dengan perintah sudah ada dalam sejarah):
<C-R>=<UP>
<c-r>
dipetakan sebagai perintah redo?