这篇文章有我最喜欢的答案,https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode
基本上,如果您以插入模式启动并使用 Ctrl+Shift+V 或用鼠标右键单击粘贴,Vim 会检测到这是来自终端并自动设置粘贴模式,然后在完成后取消设置,这样您就不会丢失重新映射的键(它不能在粘贴模式下工作,因为它写入原始数据)并且完成后您将回到“正常”状态。
仅适用于 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
Run Code Online (Sandbox Code Playgroud)
如果你在 Tmux 下使用 vim(仍然在 .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()
Run Code Online (Sandbox Code Playgroud)
正如其他人所写,您不想保留“粘贴”设置。我只是想指出,有了一个好的终端模拟器和一个正确编译和配置的vim,你不应该需要更改“粘贴”。您需要一个良好的终端模拟器,例如 xterm 或 GNOME 终端、包含 X11 功能的 vim,以及将“鼠标”选项设置为“a”。然后vim将“知道”您何时使用鼠标粘贴,并将有效地为您设置和取消设置“粘贴”选项。
获得vimX11 功能的一种方法是gvim使用-v选项运行或创建别名,
alias vim='gvim -v'
Run Code Online (Sandbox Code Playgroud)
然后放
set mouse=a
Run Code Online (Sandbox Code Playgroud)
在你的 ~/.vimrc 中。
| 归档时间: |
|
| 查看次数: |
19301 次 |
| 最近记录: |