在Vim中的Yank列号

时间:2015-11-24 14:22:32

标签: vim

我希望能够通过创建宏来轻松地在vim中制作漂亮的代码标题。我希望他们喜欢这样的东西:

################################################################################
### Preamble                                                                 ###
################################################################################

为了做到这些,我想从一行开始:

Preamble

然后宏会产生周围的散列和空格。要做到这一点,我需要以某种方式抽出标题中的字符数。所以在前言的情况下;我想将8的长度复制到某个寄存器中。

任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:2)

我不推荐这种风格,因为它的维护需要很高的努力(并不是每个人都使用像Vim这样强大的编辑器,或者有你的宏),但你可以用{{{{{{ 1}}功能:

strdisplaywidth()

较旧的Vim版本没有这个; :echo strdisplaywidth(getline('.')) 是一个只能处理普通ASCII字母的替换。

哦,在你问之前,你可以用strlen()

创建标题行

答案 1 :(得分:2)

正如@FDinoff所说,我会使用替换模式粘贴,而不是计算长度。首先,将以下行放入寄存器,例如t寄存器: t y y

###                                                                          ###

接下来,抓住没有结束线的Preamble行: 0 v g _ < KBD> d

然后,从t粘贴我们的行并移动到适当的位置: t P 4 < / KBD>

最后,使用替换模式粘贴Preamble R Ctrl + r