要插入破折号,我使用^v u 2014,它是七个按键。有更容易的方法吗? (我在看有向图,但在那儿没找到破折号。)

评论

仅供参考,U + 2014是EM DASH。 U + 2013是EN DASH。 fileformat.info/info/unicode/char/2014/index.htm,fileformat.info/info/unicode/char/2013/index.htm

如果您使用的是X11,我会说XCompose ...,因为它可以在您的所有应用程序上运行,而不仅限于Vim。或者,如果您使用的是OSX或Windows,则该操作系统提供的功能。

也许不是最简单的方法,但是我倾向于使用 2013 ,因为它可以在任何地方使用。几个关键代码有很长的路要走(我主要使用U + 2013,U + 2014,U + 2026,U + 2212,U + 2192,U + B0; – / — /…/ − /→//°)。 br />
出于好奇,您如何显示破折号? AFAIK,无法正确显示非固定宽度的字体(即字符宽度和字距不均匀),因此,长划线和长划线始终看起来像连字符,延伸到字符边界的最边缘。您是否不介意在Vim中如何显示角色以及如何在其他位置呈现角色之间存在极端的脱节?

我与@Carpetsmoker在一起:撰写---表示连字符,撰写--。一个破折号。 Compose具有魔力,尤其是当您将其映射到原本完全未使用的Caps-Lock时。

#1 楼

您可以使用有向图:Ctrl + k-N(大写N

在插入模式下,由Ctrl + k输入有向图,后跟两个字符的序列。对于破折号,序列是-N

正如昆西指出,U+2014是破折号。如果要使用图来输入,则序列为-M

评论


同样,可以在 -M中插入EM DASH。

–昆西凉亭
15年2月25日在14:40

U + 2014不是破折号吗?我一生都是骗人的!编辑:现在我明白了:我的终端字体(Inconsolata)以相同的方式渲染两个破折号。

– Tomas Tomecek
2015年2月25日在15:11



要得出此答案:十六进制2013是十进制8211。使用:digraphs命令显示所有有向图,并查找8211。

– 200_success
2015年2月25日在18:04

#2 楼

如果没有预定义的图,或者您想要一个更难忘的键序列,则可以在vimrc中定义图。例如,下面将为破折号(8211)和破折号(8212)定义两个有向图,它们反映了它们的XCompose序列。

digraph -. 8211 -- 8212


:digraph命令需要该值用十进制而不是十六进制指定,这就是为什么它是8211而不是2013。

评论


破折号是内置的。

– 200_success
2015年2月25日在21:39

@ 200_success我没有说不是。 :) Vim的有向图选择并不总是与更标准的选择保持一致,因此,即使已经存在一个,也知道如何定义自己的有向图是有用的。

–詹姆斯
2015年2月25日在21:49

#3 楼

在Vim中插入破折号的标准方法是使用二字图,如tommcdo解释。

但是,我发现总体上有二字图,尤其是图(Ctrl + k,-,Shift + N )很难输入。为了更快地输入破折号,可以将以下一对插入模式映射添加到文件类型文件中,例如.vim/after/ftplugin/markdown.vim

分别用于en / em破折号:

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- —


NB <buffer>表示此映射仅适用于Markdown文件。这是必要的,因为在某些上下文(例如编程)中,我不想将两个连字符替换为破折号。

这些映射利用了这样的事实,即在上下文中我通常使用它们,破折号用空格包围,而破折号没有用空格包围。*因此,使用这些映射意味着我有时可以在功能不强的文本编辑器中使用完全相同的按键,有时我不得不使用它们,但仍会得到有意义的输出。**

实际上,我使用的解决方案比上述方法稍微复杂一些,因为出于印刷原因,我喜欢在短划线周围加上空格。在Markdown中将它们包含在内会使它的可读性降低,但是幸运的是,Vim具有一个解决方案,它具有“隐藏”功能,该功能可让您在光标位于另一行时隐藏某些语法项:***

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- &#8202;—&#8202;

syntax match entity_hairspace "&#8202;" conceal
setl conceallevel=2


*如果我需要使用不带空格的破折号,那么只需在输入映射后按退格键即可。**如果您通常不使用这样的破折号,或者您从未尝试过使用Vim ,您可以使用其他方法来触发映射:例如--.---。如果使用其他触发器,也可以将其直接放在.vimrc中,并删除<buffer>选项。***您还可以使用隐藏字符cchar用单个字符替换语法项,而不是完全隐藏它们。如果您担心编码问题,可以使用它来使Vim以短划线显示文件中的&ndash; HTML实体。

评论


因此,您在Vim中使用破折号吗?因为它们只有一个列宽,它们看起来不是很奇怪吗?您是否知道使破折号实际占用大量空间的技巧,也许值得两列?

–凯尔·斯特兰德(Kyle Strand)
18年2月28日在21:35

@KyleStrand您想获得怎样的技巧?试试这个:set conceallevel = 1 |语法match longdash'-'隐藏cchar = -(请注意,此命令中的第一个破折号是em-dash,第二个破折号是全角连字符减号。)

–丰富
18-2-28在22:18



我看不到显示的差异,也看不出为什么这会使显示占据两列。您是不是偶然误解了我的问题,还是我可能误解了您的建议?

–凯尔·斯特兰德(Kyle Strand)
18年2月28日在22:58

....实际上,我对Vim语法规范一无所知。语法match命令甚至可以在语法文件的上下文之外工作吗?

–凯尔·斯特兰德(Kyle Strand)
18-2-28在23:08

@KyleStrand我理解你的问题。您是否尝试过将该行复制到vimrc中?还是只在Vim中运行它? :)

–丰富
18-2-28在23:12



#4 楼

在我的法语AZERTY Mac键盘上,我可以使用Alt +-插入破折号。您的里程可能明显不同。

评论


Alt +-(或者更确切地说是Option +-)是Mac专用的快捷方式。它可以在OS X的任何地方使用,但与vi或vim无关。

–ash108
2015年2月25日在19:52



在MacVim中可以使用,但是在终端vim中,它的作用类似于[Esc],后跟-,从而切换到“普通”模式,并将光标置于前一行的开头。

– 200_success
2015年2月25日在21:51



#5 楼

安装我的unicode插件,输入Vim并键入DASH,然后按CtrlXCtrlZ来激活unicode补全。字符)

#6 楼

受Rich出色答案的启发,我在vimrc中添加了以下几行:

" For en/em dashes, respectively
autocmd FileType markdown imap -- –
autocmd FileType markdown imap --- —


像对待东西一样工作!

#7 楼

对于破折号来说,最好的方式是去,如其他答案所示。但是对于任意的unicode字符,另一种方法是在插入模式下使用^V(请参阅:he i_CTRL-V_digit)。

对于破折号,例如^Vu2013

评论


我现在意识到这实际上是OP已经在做的! (尽管破折号是2013年,而不是2014年-这是破折号。)但是,我认为在答案中找到某个地方可能仍然很好。

– Tremby
17年9月6日在22:45