我开始在日常编码中使用vim。在我探索的过程中,我发现了使用* map。所以我决定将以下映射添加到我的.vimrc文件中。
inoremap ' ''<left>
inoremap " ""<left>
imap ( ()<left>
imap { {}<left>
imap [ []<left>
imap < <><left>
这个想法是匹配每个&#39;,#,...,(,{,[,&lt;与其等效结果相同。问题在于即使我在粘贴时映射仍然有效在插入模式下。
// Pasting this
()=>{ console.log("Hello World"); }
//Will result to something like this
())=>{} console.log())""Hello World"");}
我该怎么做才能防止这种情况发生?
答案 0 :(得分:5)
这是因为您使用终端模拟器或桌面环境的快捷方式而不是Vim进行粘贴:文本未粘贴&#34;,它是&#34;插入&#34; 34;,就像你很快输入它一样,并触发插入模式映射。
为了防止这种情况发生,您可以在粘贴前:set paste
和:set nopaste
之后使用,或者您可以使用Vim自己的y
,p
和{{1} }命令。
对于第一个选项,请参阅P
和:help 'paste'
。
对于第二个选项,请参阅:help 'pastetoggle'
,:help y
,:help p
和:help registers
。请注意,您可能需要使用剪贴板支持构建Vim。
答案 1 :(得分:0)
尝试使用rainbow插件。它突出显示括号对,并通过更改突出显示颜色来指示您所处的“深度”。