]> git.rmz.io Git - dotfiles.git/blobdiff - vim/vimrc
vim: Y copies to clipboard in visual mode
[dotfiles.git] / vim / vimrc
index c74b75c6708e6fde68ec96b8a4bd44d140f69bc0..ef8aa3b8e34aa518680e6c444c18d73150a71f5d 100644 (file)
--- a/vim/vimrc
+++ b/vim/vimrc
@@ -338,8 +338,21 @@ nnoremap <leader>p* :silent! set paste<CR>"*p:set nopaste<CR>
 " paste from clipboard
 nnoremap <leader>p+ :silent! set paste<CR>"+p:set nopaste<CR>
 
-" Clean trailing whitespace
-nnoremap <silent> <leader>ww m':%s/\s\+$//<cr>:let @/=''<cr>``zz
+" strip trailing whitespace
+function! StripWhitespace(line1, line2, ...)  " {{{2
+  let s_report = &report
+  let &report=0
+  let pattern = a:0 ? a:1 : '[\\]\@<!\s\+$'
+  let oldview = winsaveview()
+  exe 'keepjumps keeppatterns '.a:line1.','.a:line2.'substitute/'.pattern.'//e'
+  if oldview != winsaveview()
+    redraw
+  endif
+  call winrestview(oldview)
+  let &report = s_report
+endfunction  " }}}2
+command! -range=% -nargs=0 -bar Untrail keepjumps call StripWhitespace(<line1>,<line2>)
+nnoremap <silent> <leader>ww :Untrail<CR>
 
 " Source
 vnoremap <leader>S y:execute @@<cr>:echo 'Sourced selection.'<cr>
@@ -423,7 +436,9 @@ nnoremap <MiddleMouse> i<MiddleMouse>
 vnoremap <MiddleMouse> s<MiddleMouse>
 
 " fix legacy vi inconsistency
-map Y y$
+nnoremap Y y$
+" copy to clipboard
+xnoremap Y "+y
 
 " allow repeat operator on visual
 vnoremap . :normal .<CR>