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

Lan*_*nce 0 mapping vim

我开始在日常编码中使用vim.在我探索的过程中,我发现了使用*map.所以我决定将以下映射添加到我的.vimrc文件中.

inoremap ' ''<left> 
inoremap " ""<left> 
imap ( ()<left>
imap { {}<left>
imap [ []<left>
imap < <><left>
Run Code Online (Sandbox Code Playgroud)

我的想法是匹配每个',',(,{,[,<与其结束等效.这个问题是,即使我在插入模式下粘贴,映射仍然有效.

// Pasting this 
()=>{ console.log("Hello World"); }

//Will result to something like this
())=>{} console.log())""Hello World"");}
Run Code Online (Sandbox Code Playgroud)

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

rom*_*inl 5

发生这种情况是因为您使用终端模拟器或桌面环境的快捷方式而不是Vim进行粘贴:文本未被"粘贴",它被"插入",就像您非常快速地键入它一样,并且触发插入模式映射.

为了防止这种情况,你可以:set paste粘贴之前和:set nopaste之后,也可以使用Vim的自己y,p和P命令.

对于第一个选项,请参阅:help 'paste'和:help 'pastetoggle'.

对于第二个选项,见:help y,:help p,:help registers,和:help 'clipboard'.请注意,您可能需要使用剪贴板支持构建的Vim.