Si desea poner el nombre de archivo del búfer actual en su portapapeles a nivel del sistema, intente cambiar el registro a @ +:
" relative path
:let @+ = expand("%")
" full path
:let @+ = expand("%:p")
" just filename
:let @+ = expand("%:t")
Editar 20140421: Normalmente los uso, así que creé algunos accesos directos. Los Vims de Linux aparentemente funcionan de manera ligeramente diferente a los Vims de Mac , por lo que también hay un caso especial para eso. Si pones lo siguiente en tu ~/.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
Luego, por ejemplo <leader>cf
, copiará la ruta relativa del búfer actual (el líder predeterminado es la barra invertida ( \
)). A menudo los uso para ejecutar comandos en un archivo o hacer otras cosas en la línea de comandos. Realmente no uso el último nombre de archivo / nombre de directorio a menudo.
Puede considerar asignaciones más intuitivas como <leader>cfr
para relativo, <leader>cfa
para absoluto, <leader>cff
solo para nombre de archivo, <leader>cfd
para directorio.