VIM的特殊注释片段

VIM的特殊注释片段,vim,Vim,我想根据我正在编写的列添加注释,例如,如果我在代码上添加注释,该代码缩进4个空格,注释应该是这样的 /* Comment -------------*/ 需要多少破折号来填充该行直到第100列。它应该识别位置以及注释的长度 我自己无法用vimscript解决这个问题。可以用表达式映射来解决这个问题;请参见:帮助:映射表达式: :inoreabbrev <expr> comsep '/* Comment ' . repeat('-', 17 - indent('.')) . '*/'

我想根据我正在编写的列添加注释,例如,如果我在代码上添加注释,该代码缩进4个空格,注释应该是这样的

/* Comment -------------*/
需要多少破折号来填充该行直到第100列。它应该识别位置以及注释的长度


我自己无法用vimscript解决这个问题。

可以用表达式映射来解决这个问题;请参见
:帮助:映射表达式

:inoreabbrev <expr> comsep '/* Comment ' . repeat('-', 17 - indent('.')) . '*/'
:inoreabbrev comsep'/*Comment'。重复('-',17-缩进('.')。*/'
这通过从常量中减去当前缩进(通过
indent()
)来确定宽度。您也可以在这里使用
&textwidth

无论何时键入
comsep
,它都会展开。或者,您也可以使用
:inoremap…

要插入注释文本,可以使用
input()
,也可以先插入破折号,然后通过附加一些
“\
键代码来重新定位光标


如果您使用snipMate或Ultisnips之类的代码段插件,这些插件可能具有动态修改代码段的功能,但内置的方法应该足够了。

您可以通过表达式映射来解决此问题;请参见
:help:map expr

:inoreabbrev <expr> comsep '/* Comment ' . repeat('-', 17 - indent('.')) . '*/'
:inoreabbrev comsep'/*Comment'。重复('-',17-缩进('.')。*/'
这通过从常量中减去当前缩进(通过
indent()
)来确定宽度。您也可以在此处使用
&textwidth

无论何时键入
comsep
,它都会被展开。或者,您也可以使用
:inoremap…

要插入注释文本,可以使用
input()
,也可以先插入破折号,然后通过附加一些
“\
键代码来重新定位光标


如果您使用snipMate或Ultisnips等代码段插件,这些插件可能具有动态修改代码段的功能,但内置的方法应该足够了。

我会尝试一下。在snipmate的文档中,我没有发现与我的问题类似的东西(比如重复n次),原始snipmate无法在您键入注释时动态执行此操作(Ultisnips可能会)。您可以在backticks中使用Vimscript表达式,但这些表达式在扩展代码段时只计算一次。您发布的命令实际上不起作用。在按enter键后,它只将代码放入行中。您需要
;它将在空格或enter之后展开。是的,我的意思是我实际上键入了“comsep”,按enter键,然后它将插入以下内容:“/*注释”。重复('-',17-缩进('.')。*/'我试试看。在snipmate的文档中,我没有发现与我的问题类似的东西(比如重复n次),原始snipmate无法在您键入注释时动态执行此操作(Ultisnips可能会)。您可以在backticks中使用Vimscript表达式,但这些表达式在扩展代码段时只计算一次。您发布的命令实际上不起作用。在按enter键后,它只将代码放入行中。您需要
;它将在空格或enter之后展开。是的,我的意思是我实际上键入了“comsep”,按enter键,然后它将插入以下内容:“/*注释”。重复('-',17-缩进('.')。*/'