इस पोस्ट का मेरा पसंदीदा उत्तर है, https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode
मूल रूप से यदि आप इन्सर्ट मोड में शुरू करते हैं और अपने माउस के साथ Ctrl + Shift + V या राइट क्लिक पेस्ट का उपयोग करते हैं, Vim यह पता लगाता है कि यह टर्मिनल से आया है और स्वचालित रूप से पेस्ट मोड सेट करता है, तो इसे एक बार अनसेट कर देता है, इसलिए आप रीमैप कीज़ को नहीं खोते (जो पेस्ट मोड में काम नहीं कर सकता क्योंकि इसका राइटिंग रॉ डेटा है) और जब यह किया जाता है तो आप "साने" स्थिति में वापस आ जाते हैं।
सिर्फ विम के लिए (अपने .vimrc में डालें)
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
यदि आप Tmux के तहत विम का उपयोग करते हैं (अभी भी .vimrc में जाता है)
function! WrapForTmux(s)
if !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_SI .= WrapForTmux("\<Esc>[?2004h")
let &t_EI .= WrapForTmux("\<Esc>[?2004l")
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()