如何在vim中自动匹配qoutes,doubleqoutes括号括号和大括号?

时间:2018-03-02 08:50:46

标签: vim mapping

我开始在日常编码中使用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"");}

我该怎么做才能防止这种情况发生?

2 个答案:

答案 0 :(得分:5)

这是因为您使用终端模拟器或桌面环境的快捷方式而不是Vim进行粘贴:文本未粘贴&#34;,它是&#34;插入&#34; 34;,就像你很快输入它一样,并触发插入模式映射。

为了防止这种情况发生,您可以在粘贴前:set paste:set nopaste之后使用,或者您可以使用Vim自己的yp和{{1} }命令。

对于第一个选项,请参阅P:help 'paste'

对于第二个选项,请参阅:help 'pastetoggle':help y:help p:help registers。请注意,您可能需要使用剪贴板支持构建Vim。

答案 1 :(得分:0)

尝试使用rainbow插件。它突出显示括号对,并通过更改突出显示颜色来指示您所处的“深度”。

相关问题