如tommcdo所解释的,在Vim中插入破折号的标准方法是使用有向图。
不过,我觉得有向图一般,而且特别是这一个(Ctrl+k,-,Shift+N)很尴尬的类型。为了更快地输入破折号,您可以将以下一对插入模式映射添加到文件类型文件中,例如.vim/after/ftplugin/markdown.vim
。
分别用于en / em破折号:
inoremap <buffer> --<space> –<space>
inoremap <buffer> -- —
注意:这<buffer>
意味着此映射将仅适用于Markdown文件。这是必要的,因为在某些情况下(例如编程),我不希望将两个连字符替换为破折号。
这些映射利用了以下事实:在我通常使用的上下文中,破折号用空格包围,而破折号没有用空格包围。*因此,使用这些映射意味着我可以在功能欠佳的文本编辑器中使用完全相同的按键,有时我不得不使用它们,但仍会得到合理的输出。**
实际上,我使用的解决方案比上述方法稍微复杂一些,因为出于排印的原因,我喜欢将短划线包围在空格处。在Markdown中将它们包含在内会使它的可读性降低,但是幸运的是,Vim具有一个解决方案,它具有“隐藏”功能,当光标在另一行时,该功能可以隐藏某些语法项:***
inoremap <buffer> --<space> –<space>
inoremap <buffer> --  — 
syntax match entity_hairspace " " conceal
setl conceallevel=2
*如果我需要使用不带空格的破折号,那么我可以在键入映射后直接按退格键。
**如果您通常不使用这样的破折号,或者您从未尝试过使用Vim,则可以使用其他方式来触发映射:例如--.
和---
。如果使用其他触发器,则也可以将其直接放在.vimrc中,然后删除<buffer>
选项。
***您还可以使用隐藏字符cchar
用单个字符替换语法项,而不是完全隐藏它们。如果您担心编码问题,可以使用它来使Vim以–
短划线显示文件中的HTML实体。