如何在Vim中使用粘贴模式使imap工作?

17

我最近开始使用 :imap jj 并试图放弃 Ctrl+[。

然而,当粘贴模式开启时,imap无法工作。如何使它在粘贴模式下也能工作呢?


Heptite说的。当处于粘贴模式时,您必须使用真正的<ESC>或基于Ctrl的键,如Ctrl-[Ctrl-C - mike3996
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
17

如果启用'paste'模式,则映射将无法工作,因为这正是Vim的'paste'模式的全部意义。

Vim的'paste'模式旨在允许您在终端中使用控制台Vim的情况下粘贴内容,而Vim可能不知道您正在使用鼠标粘贴,因此您希望插入来自粘贴缓冲区的文字而不触发映射或自动/智能/表达式缩进等。

我建议您查看:

:help 'paste'
:help 'pastetoggle'


当“粘贴”选项被打开(即使它已经打开):在插入模式和命令行模式下的映射将被禁用。 - wisbucky

6
将以下代码添加到您的.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

From: https://coderwall.com/p/if9mda


1
“通过终端粘贴”是什么意思? - Rushi Agrawal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,