diff options
| -rw-r--r-- | README.md | 34 | ||||
| -rw-r--r-- | plugin/system_copy.vim | 35 | 
2 files changed, 52 insertions, 17 deletions
| @@ -1,7 +1,7 @@  System Copy  =========== -System copy provides vim mappings for copying / pastying text to the os specific +System copy provides vim mappings for copying / pasting text to the os specific  clipboard.  Most people will be happy just setting their Vim clipboard to the  system clipboard, but I find that doing so pollutes my clipboard history.  Instead, this plugin creates a unique mapping that explicitly pulls content @@ -22,25 +22,45 @@ object. For instance:  In addition, `cP` is mapped to copy the current line directly. -The sequence `cv` is mapped to paste the content of system clipboard. +The sequence `cv` is mapped to paste the content of system clipboard to the +next line.  Clipboard Utilities  ------------------- - - OSX     - pbcopy - - Windows - clip - - Linux   - xsel + - OSX     - `pbcopy` and `pbpaste` + - Windows - `clip` and `paste` + - Linux   - `xsel` + +Options +------- + +`system-copy` uses default copy and paste command based on your OS, but +you can override either of these commands if you have more specific needs. + +To declare custom copy command use following example: +``` vim +let g:system_copy#copy_command='xclip -sel clipboard' +``` +And to declare custom paste command use: +``` vim +let g:system_copy#paste_command='xclip -sel clipboard -o' +```  Installation  ------------ -If you don't have a preferred installation method, I recommend using [Vundle][]. +If you don't have a preferred installation method, I recommend using [Vundle](https://github.com/VundleVim/Vundle.vim).  Assuming you have Vundle installed and configured, the following steps will  install the plugin: -Add the following line to your `~/.vimrc` and then run `PluginInstall` from +Add the following line to your `~/.vimrc` and then run `:PluginInstall` from  within Vim:  ``` vim +call vundle#begin() +" ...  Plugin 'christoomey/vim-system-copy' +" ... +call vundle#end()  ``` diff --git a/plugin/system_copy.vim b/plugin/system_copy.vim index 2c6bc7c..d280e1e 100644 --- a/plugin/system_copy.vim +++ b/plugin/system_copy.vim @@ -1,3 +1,8 @@ +if exists('g:loaded_system_copy') || v:version < 700 +  finish +endif +let g:loaded_system_copy = 1 +  let s:blockwise = 'blockwise visual'  let s:visual = 'visual'  let s:motion = 'motion' @@ -6,11 +11,6 @@ let s:mac = 'mac'  let s:windows = 'windows'  let s:linux = 'linux' -if exists('g:loaded_system_copy') || &cp || v:version < 700 -  finish -endif -let g:loaded_system_copy = 1 -  function! s:system_copy(type, ...) abort    let mode = <SID>resolve_mode(a:type, a:0)    if mode == s:linewise @@ -21,8 +21,9 @@ function! s:system_copy(type, ...) abort    else      silent exe "normal! `[v`]y"    endif -  silent call system(s:CopyCommandForCurrentOS(), getreg('@')) -  echohl String | echon 'Copied to system clipboard via: ' . mode | echohl None +  let command = s:CopyCommandForCurrentOS() +  silent call system(command, getreg('@')) +  echohl String | echon 'Copied to clipboard using: ' . command | echohl None  endfunction  function! s:system_paste() abort @@ -59,6 +60,9 @@ function! s:currentOS()  endfunction  function! s:CopyCommandForCurrentOS() +  if exists('g:system_copy#copy_command') +    return g:system_copy#copy_command +  endif    let os = <SID>currentOS()    if os == s:mac      return 'pbcopy' @@ -70,6 +74,9 @@ function! s:CopyCommandForCurrentOS()  endfunction  function! s:PasteCommandForCurrentOS() +  if exists('g:system_copy#paste_command') +    return g:system_copy#paste_command +  endif    let os = <SID>currentOS()    if os == s:mac      return 'pbpaste' @@ -85,12 +92,20 @@ nnoremap <silent> <Plug>SystemCopy :<C-U>set opfunc=<SID>system_copy<CR>g@  nnoremap <silent> <Plug>SystemCopyLine :<C-U>set opfunc=<SID>system_copy<Bar>exe 'norm! 'v:count1.'g@_'<CR>  nnoremap <silent> <Plug>SystemPaste :<C-U>call <SID>system_paste()<CR> -if !hasmapto('<Plug>SystemCopy') || maparg('cp','n') ==# '' -  xmap cp <Plug>SystemCopy +if !hasmapto('<Plug>SystemCopy', 'n') || maparg('cp', 'n') ==# ''    nmap cp <Plug>SystemCopy +endif + +if !hasmapto('<Plug>SystemCopy', 'v') || maparg('cp', 'v') ==# '' +  xmap cp <Plug>SystemCopy +endif + +if !hasmapto('<Plug>SystemCopyLine', 'n') || maparg('cP', 'n') ==# ''    nmap cP <Plug>SystemCopyLine  endif -if !hasmapto('<Plug>SystemPaste') || maparg('cv','n') ==# '' +if !hasmapto('<Plug>SystemPaste', 'n') || maparg('cv', 'n') ==# ''    nmap cv <Plug>SystemPaste  endif + +" vim:ts=2:sw=2:sts=2 | 
