Do you get extra
1~ characters around the text you paste into a ssh terminal? Such as something like this:
0~this should not paste like this1~
Well the fix is easy. Just run this on your ssh command line:
If this happens when you log in, you can add this to your
# Disable bracketed paste if [ "$PS1" ]; then printf "\e[?2004l" fi
What is causing this?
bracketed paste mode, and it’s a little known feature of some shells and other programs. Why a “feature”? Well, it allows your terminal to know the difference between something you’ve typed and something you’ve pasted. You can read more about it here
Vim may keep causing it
Vim, in some modes, can cause this to keep on coming back. For example, on one of my machines when I pasted text into the terminal at first, it would work good:
[user ~]# Pasted Text Here
But after I run vim, it makes it so when I paste in the text, it adds the ‘0~ 1~’:
[user ~]# vim ~/file [user ~]# 0~Pasted Text Here1~
We can fix that with running
printf "\e[?2004l" but that’ll be annoying to use after each time I use vim. Which is a lot.
:set paste with this, as it will add characters when you paste something into vim.
" Code from: " http://stackoverflow.com/questions/5585129/pasting-code-into-terminal-window-into-vim-on-mac-os-x " then https://coderwall.com/p/if9mda " and then https://github.com/aaronjensen/vimfiles/blob/59a7019b1f2d08c70c28a41ef4e2612470ea0549/plugin/terminaltweaks.vim " to fix the escape time problem with insert mode. " " Docs on bracketed paste mode: " http://www.xfree86.org/current/ctlseqs.html " Docs on mapping fast escape codes in vim " http://vim.wikia.com/wiki/Mapping_fast_keycodes_in_terminal_Vim if !exists("g:bracketed_paste_tmux_wrap") let g:bracketed_paste_tmux_wrap = 1 endif function! WrapForTmux(s) if !g:bracketed_paste_tmux_wrap || !exists('$TMUX') return a:s endif let tmux_start = "\<Esc>Ptmux;" let tmux_end = "\<Esc>\\" return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end endfunction let &t_ti .= WrapForTmux("\<Esc>[?2004h") let &t_te .= WrapForTmux("\<Esc>[?2004l") function! XTermPasteBegin(ret) set pastetoggle=<f29> set paste return a:ret endfunction 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>