Jika Anda ingin meletakkan nama file buffer saat ini di clipboard tingkat sistem Anda, coba ubah register ke @ +:
" relative path
:let @+ = expand("%")
" full path
:let @+ = expand("%:p")
" just filename
:let @+ = expand("%:t")
Sunting 20140421: Saya biasanya menggunakan ini, jadi saya membuat beberapa cara pintas. Linux Vims tampaknya beroperasi sedikit berbeda dari Mac Vims , jadi ada kasus khusus untuk itu juga. Jika Anda memasukkan yang berikut ini di ~/.vimrc
:
" copy current file name (relative/absolute) to system clipboard
if has("mac") || has("gui_macvim") || has("gui_mac")
" relative path (src/foo.txt)
nnoremap <leader>cf :let @*=expand("%")<CR>
" absolute path (/something/src/foo.txt)
nnoremap <leader>cF :let @*=expand("%:p")<CR>
" filename (foo.txt)
nnoremap <leader>ct :let @*=expand("%:t")<CR>
" directory name (/something/src)
nnoremap <leader>ch :let @*=expand("%:p:h")<CR>
endif
" copy current file name (relative/absolute) to system clipboard (Linux version)
if has("gui_gtk") || has("gui_gtk2") || has("gui_gnome") || has("unix")
" relative path (src/foo.txt)
nnoremap <leader>cf :let @+=expand("%")<CR>
" absolute path (/something/src/foo.txt)
nnoremap <leader>cF :let @+=expand("%:p")<CR>
" filename (foo.txt)
nnoremap <leader>ct :let @+=expand("%:t")<CR>
" directory name (/something/src)
nnoremap <leader>ch :let @+=expand("%:p:h")<CR>
endif
Maka misalnya <leader>cf
akan menyalin path relatif dari buffer saat ini (pemimpin default adalah backslash ( \
)). Saya sering menggunakan ini untuk menjalankan perintah pada file atau melakukan hal-hal lain pada baris perintah. Saya tidak terlalu sering menggunakan nama file / nama direktori.
Anda dapat mempertimbangkan pemetaan yang lebih intuitif seperti <leader>cfr
untuk relatif, <leader>cfa
untuk absolut, <leader>cff
hanya nama file, <leader>cfd
untuk direktori.