Copy filename to clipboard

From Vim Tips Wiki

Jump to: navigation, search
Tip 600 Printable Monobook Previous Next

created 2003 · complexity basic · author Igor Keselman · version 5.7


Sometimes I need to use the name of the file that I'm editing in another application (compiler, e-mail attachment, reference in a document, etc).

These mappings are useful for copying the file name to the clipboard.

" Convert slashes to backslashes for Windows.
if has('win32')
  nmap ,cs :let @*=substitute(expand("%"), "/", "\\", "g")<CR>
  nmap ,cl :let @*=substitute(expand("%:p"), "/", "\\", "g")<CR>

  " This will copy the path in 8.3 short format, for DOS and Windows 9x
  nmap ,c8 :let @*=substitute(expand("%:p:8"), "/", "\\", "g")<CR>
else
  nmap ,cs :let @*=expand("%")<CR>
  nmap ,cl :let @*=expand("%:p")<CR>
endif

This maps the following keys:

  • ,cs copies just the filename.
  • ,cl copies the filename including it's full path.
  • ,c8 copies the filename in 8.3 format for DOS and Windows 9x

You can then simply paste the name into another document using the regular paste command.

[edit] Copying to the Gnome Clipboard

Under linux, the script above will copy the file path or filename to X Server clipboard (accessed by pressing the middle mouse button). To copy text to the Gnome Clipboard instead replace the following lines:

  nmap ,cs :let @*=expand("%")<CR>
  nmap ,cl :let @*=expand("%:p")<CR>


with

  nmap ,cs :let @+=expand("%")<CR>
  nmap ,cl :let @+=expand("%:p")<CR>


This uses the + register instead of the * register.


Note: this may work with KDE and XCFE as well, I simply haven't tested (yet).

[edit] References

[edit] Comments

Personal tools