Якщо ви хочете помістити поточне ім'я буфера в буфер обміну на рівні системи, спробуйте змінити регістр на @ +:
" relative path
:let @+ = expand("%")
" full path
:let @+ = expand("%:p")
" just filename
:let @+ = expand("%:t")
Редагувати 20140421: Я зазвичай їх використовую, тому я створив деякі ярлики. Linux Vims, мабуть, працює дещо інакше, ніж Mac Vims , тому для цього є і особливий випадок. Якщо ви помістіть його в вашому ~/.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
Тоді, наприклад, <leader>cf
буде скопійовано відносний шлях поточного буфера (лідером за замовчуванням є зворотна косою ( \
)). Я часто використовую їх для запуску команд у файлі або для виконання інших завдань у командному рядку. Я не дуже часто використовую прізвище / ім'я файлу часто.
Ви можете розглянути більш інтуїтивні відображення, такі як <leader>cfr
відносне, <leader>cfa
абсолютне, <leader>cff
просто ім'я файлу, <leader>cfd
каталог.