]> git.phdru.name Git - dotfiles.git/commitdiff
.vimrc: Improved bracketed paste mode
authorOleg Broytman <phd@phdru.name>
Thu, 18 Jul 2019 19:28:59 +0000 (22:28 +0300)
committerOleg Broytman <phd@phdru.name>
Thu, 18 Jul 2019 19:28:59 +0000 (22:28 +0300)
.vimrc

diff --git a/.vimrc b/.vimrc
index 6a16d72fc7b32845b97bc2c8a213de75be51fe6f..849d8acd34511f7a10604cfca00b14f8f13e12d6 100644 (file)
--- a/.vimrc
+++ b/.vimrc
@@ -279,29 +279,24 @@ else
       endif
    endif
 
-   " Automatically set paste mode in Vim when pasting in bracketed paste mode
-   " https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode
-   function! WrapForTmux(s)
-     if !exists('$TMUX')
-       return a:s
-     endif
+   " Bracketed paste mode
+   " https://github.com/ConradIrwin/vim-bracketed-paste/blob/master/plugin/bracketed-paste.vim
+   let &t_ti .= "\<Esc>[?2004h"
+   let &t_te = "\e[?2004l" . &t_te
 
-     let tmux_start = "\<Esc>Ptmux;"
-     let tmux_end = "\<Esc>\\"
-
-     return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end
-   endfunction
-
-   let &t_SI .= WrapForTmux("\<Esc>[?2004h")
-   let &t_EI .= WrapForTmux("\<Esc>[?2004l")
-
-   function! XTermPasteBegin()
-     set pastetoggle=<Esc>[201~
+   function! XTermPasteBegin(ret)
+     set pastetoggle=<f29>
      set paste
-     return ""
+     return a:ret
    endfunction
 
-   inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
+   execute "set <f28>=\<Esc>[200~"
+   execute "set <f29>=\<Esc>[201~"
+   map <expr> <f28> XTermPasteBegin("i")
+   imap <expr> <f28> XTermPasteBegin("")
+   vmap <expr> <f28> XTermPasteBegin("c")
+   cmap <f28> <nop>
+   cmap <f29> <nop>
 endif
 
 " Multiline comments often confuse vim syntax highlighting - these maps