我开始在日常编码中使用vim。在我探索的过程中,我发现了*map的使用。所以我决定将以下映射添加到我的 .vimrc 文件中。
inoremap ' ''<left>
inoremap " ""<left>
imap ( ()<left>
imap { {}<left>
imap [ []<left>
imap < <><left>
这个想法是将每个 ',",(,{,[,<与其结束等价物匹配。这样做的问题是,即使我在插入模式下粘贴,映射也可以工作。>
// Pasting this
()=>{ console.log("Hello World"); }
//Will result to something like this
())=>{} console.log())""Hello World"");}
我能做些什么来防止这种情况发生?
发生这种情况是因为您使用终端模拟器或桌面环境的快捷方式而不是 Vim 的快捷方式进行粘贴:文本不是"粘贴"的,而是"插入"的,就像您键入它非常快一样,并且会触发插入模式映射。
为了防止这种情况,您可以在粘贴之前:set paste
,然后再:set nopaste
,也可以使用 Vim 自己的 y
、 p
和 P
命令。
有关第一个选项,请参阅 :help 'paste'
和:help 'pastetoggle'
。
有关第二个选项,请参阅:help y
、:help p
、:help registers
和 :help 'clipboard'
。请注意,您可能需要一个支持剪贴板的 Vim。
试试彩虹插件。它会突出显示括号对,并通过更改突出显示颜色来指示您所在的"深度"。