2010-07-27 54 views
4

是否有某种方法可以配置vim的gq函数,以便允许在连字符后面(在复合词中)换行?例如用gq连字符后连续vim

twentieth- 
century 

顺便说一句,我不是我自己的笔记本电脑,但在实验室中,它运行Windows之一,因此任何解决方案不使用程序,如parfmt获得积分:-)(虽然我也对使用这些工具的解决方案感兴趣,如果这不可能仅使用vim来做到这一点 - 至少我可以在笔记本电脑上做到这一点)。

在此先感谢。

+0

我没有看到让Vim的内部格式化操作的方法;我认为你可能会被限制为'formatexpr'或'formatprg' - 并且编写你自己的Vim代码来复制内部格式并进行轻微的修改将会很难......所以不幸的是外部程序可能是唯一的直截了当的方式。 – Cascabel 2010-07-27 12:23:39

+0

那么,你知道如何配置'par'吗? (我是用纯粹的懒惰来问这个问题的,我不想今天阅读'par'的超长页面:-))谢谢。 – antony 2010-07-27 15:37:22

+0

如何在**' - '**之前或之后添加空间? – 2012-04-07 17:56:11

回答

2

对于ASCII连字符(0x2d),这是不可能的。如果您可以使用Unicode,则可以使用相同的Unicode变体(U + 2010,cp。http://en.wikipedia.org/wiki/Dash)。这可以通过Ctrl-V(在大多数Windows安装的Vim中的Ctrl-Q)插入,然后是u2010。或者定义一个有向图吧:

:digraph -- 8208 " hyphen, U+2010 

随着

:set formatoptions+=m 

Vim会

在多字节字符也突破255

瞧!如果你需要将文本保存为ASCII,你甚至可以写出映射/来自gq的映射,来自:substitute的连字符来回。

+0

尽管en短划线在大多数字体中看起来相同,但是在语义上却有U + 2010 HYPHEN字符。 – ZyX 2012-10-30 14:49:02

+0

@ZyX:谢谢,编辑。维基百科页面几乎没有提到连字符。 – 2012-10-30 15:09:56

+0

一种迟到的反应,但绝对非常好。 – antony 2012-10-30 18:45:39