How to copy path to current file/directory to system clipboard
Revision as of 14:27, 26 November 2018 by Xaizek (talk | contribs) (→On *nix like operating systems using xsel: More readable formatting)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This is a matter of communicating current path from Vifm to system buffer via external command.
On *nix like operating systems using xclip
Commands to copy paths to current directory and currently selected file could look like this:
" yank current directory path into the clipboard
nnoremap yd :!echo -n %d | xclip %i<cr>
" yank current file path into the clipboard
nnoremap yf :!echo -n %c:p | xclip %i<cr>
" yank current filename without path into the clipboard
nnoremap yn :!echo -n %c | xclip %i<cr>
" yank root of current file's name into the clipboard
nnoremap yr :!echo -n %c:r | xclip %i<cr>
On *nix like operating systems using xsel
Commands to copy paths to current directory and currently selected file into both primary and selection clipboards could look like this:
" yank current directory path into primary and selection clipboards
nnoremap yd :!echo -n %d | xsel --input --primary %i &&
\ echo -n %d | xsel --clipboard --input %i<cr>
" yank current file path into primary and selection clipboards
nnoremap yf :!echo -n %c:p | xsel --input --primary %i &&
\ echo -n %c:p | xsel --clipboard --input %i<cr>
" yank current filename without path into primary and selection clipboards
nnoremap yn :!echo -n %c | xsel --input --primary %i &&
\ echo -n %c | xsel --clipboard --input %i<cr>
" yank root of current file's name into primary and selection clipboards
nnoremap yr :!echo -n %c:r | xsel --input --primary %i &&
\ echo -n %c:r | xsel --clipboard --input %i<cr>
On macOS using pbcopy
Commands to copy paths to current directory and currently selected file could look like this:
" yank current directory path into the clipboard
nnoremap yd :!echo -n %d | pbcopy %i<cr>
" yank current file path into the clipboard
nnoremap yf :!echo -n %c:p | pbcopy %i<cr>
" yank current filename without path into the clipboard
nnoremap yn :!echo -n %c | pbcopy %i<cr>
" yank root of current file's name into the clipboard
nnoremap yr :!echo -n %c:r | pbcopy %i<cr>
On Windows using clip
Similar commands, but those that operate on full paths have two versions for different types of slashes.
" yank current directory path to Windows clipboard with forward slashes
nnoremap yp :!echo %"d:gs!\!/! %i | clip<cr>
" yank current directory path to Windows clipboard with backward slashes
nnoremap yP :!echo %"d %i | clip<cr>
" yank path to current file to Windows clipboard with forward slashes
nnoremap yf :!echo %"c:gs!\!/! %i | clip<cr>
" yank path to current directory to Windows clipboard with backward slashes
nnoremap yF :!echo %"c %i | clip<cr>
" yank current filename without path to Windows clipboard
nnoremap yn :!echo %"c %i | clip<cr>
" yank root of current file's name to Windows clipboard
nnoremap yr :!echo -n %c:r | clip<cr>