Difference between revisions of "How to copy path to current file/directory to system clipboard"

From Vifm Wiki
Jump to: navigation, search
(Update *nix and Windows sections to correspond better to each other)
(Add displaying yanked text)
 
(8 intermediate revisions by 3 users not shown)
Line 9: Line 9:
 
<source lang="vim">
 
<source lang="vim">
 
" yank current directory path into the clipboard
 
" yank current directory path into the clipboard
nnoremap yd :!echo -n %d | xclip %i<cr>
+
nnoremap yd :!echo -n %d | xclip %i<cr>:echo expand('%"d') "is yanked to clipboard"<cr>
  
 
" yank current file path into the clipboard
 
" yank current file path into the clipboard
nnoremap yf :!echo -n %c:p | xclip %i<cr>
+
nnoremap yf :!echo -n %c:p | xclip %i<cr>:echo expand('%"c:p') "is yanked to clipboard"<cr>
  
 
" yank current filename without path into the clipboard
 
" yank current filename without path into the clipboard
nnoremap yn :!echo -n %c | xclip %i<cr>
+
nnoremap yn :!echo -n %c | xclip %i<cr>:echo expand('%"c') "is yanked to clipboard"<cr>
 +
 
 +
" yank root of current file's name into the clipboard
 +
nnoremap yr :!echo -n %c:r | xclip %i<cr>:echo expand('%"c:r') "is yanked to clipboard"<cr>
 +
</source>
 +
 
 +
=== On *nix like operating systems using [http://www.vergenet.net/~conrad/software/xsel/ xsel] ===
 +
 
 +
Commands to copy paths to current directory and currently selected file into
 +
both primary and selection clipboards could look like this:
 +
 
 +
<source lang="vim">
 +
" 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>:echo expand('%"d') "is yanked to clipboard"<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>:echo expand('%"c:p') "is yanked to clipboard"<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>:echo expand('%"c') "is yanked to clipboard"<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>:echo expand('%"c:r') "is yanked to clipboard"<cr>
 +
</source>
 +
 
 +
=== On macOS using [https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/pbcopy.1.html pbcopy] ===
 +
 
 +
Commands to copy paths to current directory and currently selected file could
 +
look like this:
 +
 
 +
<source lang="vim">
 +
" yank current directory path into the clipboard
 +
nnoremap yd :!echo -n %d | pbcopy %i<cr>:echo expand('%"d') "is yanked to clipboard"<cr>
 +
 
 +
" yank current file path into the clipboard
 +
nnoremap yf :!echo -n %c:p | pbcopy %i<cr>:echo expand('%"c:p') "is yanked to clipboard"<cr>
 +
 
 +
" yank current filename without path into the clipboard
 +
nnoremap yn :!echo -n %c | pbcopy %i<cr>:echo expand('%"c') "is yanked to clipboard"<cr>
 +
 
 +
" yank root of current file's name into the clipboard
 +
nnoremap yr :!echo -n %c:r | pbcopy %i<cr>:echo expand('%"c:r') "is yanked to clipboard"<cr>
 
</source>
 
</source>
  
Line 23: Line 68:
 
different types of slashes.
 
different types of slashes.
  
<pre>
+
<source lang="vim">
 
" yank current directory path to Windows clipboard with forward slashes
 
" yank current directory path to Windows clipboard with forward slashes
 
nnoremap yp :!echo %"d:gs!\!/! %i | clip<cr>
 
nnoremap yp :!echo %"d:gs!\!/! %i | clip<cr>
Line 38: Line 83:
 
" yank current filename without path to Windows clipboard
 
" yank current filename without path to Windows clipboard
 
nnoremap yn :!echo %"c %i | clip<cr>
 
nnoremap yn :!echo %"c %i | clip<cr>
</pre>
+
 
 +
" yank root of current file's name to Windows clipboard
 +
nnoremap yr :!echo -n %c:r | clip<cr>
 +
</source>
 +
 
 +
[[Category:HOWTO]]

Latest revision as of 14:55, 25 March 2020

This is a matter of communicating current path from Vifm to system buffer via external command.

On *nix like operating systems using xclip[edit]

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>:echo expand('%"d') "is yanked to clipboard"<cr>

" yank current file path into the clipboard
nnoremap yf :!echo -n %c:p | xclip %i<cr>:echo expand('%"c:p') "is yanked to clipboard"<cr>

" yank current filename without path into the clipboard
nnoremap yn :!echo -n %c | xclip %i<cr>:echo expand('%"c') "is yanked to clipboard"<cr>

" yank root of current file's name into the clipboard
nnoremap yr :!echo -n %c:r | xclip %i<cr>:echo expand('%"c:r') "is yanked to clipboard"<cr>

On *nix like operating systems using xsel[edit]

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>:echo expand('%"d') "is yanked to clipboard"<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>:echo expand('%"c:p') "is yanked to clipboard"<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>:echo expand('%"c') "is yanked to clipboard"<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>:echo expand('%"c:r') "is yanked to clipboard"<cr>

On macOS using pbcopy[edit]

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>:echo expand('%"d') "is yanked to clipboard"<cr>

" yank current file path into the clipboard
nnoremap yf :!echo -n %c:p | pbcopy %i<cr>:echo expand('%"c:p') "is yanked to clipboard"<cr>

" yank current filename without path into the clipboard
nnoremap yn :!echo -n %c | pbcopy %i<cr>:echo expand('%"c') "is yanked to clipboard"<cr>

" yank root of current file's name into the clipboard
nnoremap yr :!echo -n %c:r | pbcopy %i<cr>:echo expand('%"c:r') "is yanked to clipboard"<cr>

On Windows using clip[edit]

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>