Se si desidera inserire il nome del file buffer corrente nella clipboard a livello di sistema, provare a cambiare il registro per @ +:
" relative path
:let @+ = expand("%")
" full path
:let @+ = expand("%:p")
" just filename
:let @+ = expand("%:t")
Edit 20.140.421: Ho comunemente uso questi , quindi ho creato alcune scorciatoie. Linux Vims apparently operate slightly differently than Mac Vims, quindi c'è anche un caso speciale. Se si mette il seguente nella vostra ~/.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
Poi per esempio <leader>cf
copierà il percorso relativo del buffer corrente (il leader di default è backslash (\
)). Li uso spesso per eseguire comandi su un file o fare altre cose sulla riga di comando. In realtà non utilizzo l'ultimo nome di file/nome spesso.
si potrebbe considerare mappature più intuitivi come <leader>cfr
per il parente, <leader>cfa
per assoluta, <leader>cff
solo per il nome del file, <leader>cfd
per directory.
fonte
2013-06-13 20:09:17
Simile a http://stackoverflow.com/q/741024/80161 e http://stackoverflow.com/q/2233905/80161 –
negli Appunti: http: //vi.stackexchange.com/questions/3686/copy-the-full-path-of-current-buffer-to-clipboard –