Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vim的插入模式下动态添加文本_Vim_Vim Plugin - Fatal编程技术网

如何在Vim的插入模式下动态添加文本

如何在Vim的插入模式下动态添加文本,vim,vim-plugin,Vim,Vim Plugin,我想做的是为在我的文件中添加注释创建一个干净的结构,如下所示: /********************* * This is a comment * *********************/ 我已经设法添加了开始评论所需的初始结构,即: /********** * [TEXT] * **********/ 使用snipMate。但是现在,每当我在区域[text]中输入任何文本时,对于我输入的每个字符,都应该在上面和下面的行中添加一个星号(希望你能理解我的观点) 我想我可以使用

我想做的是为在我的文件中添加注释创建一个干净的结构,如下所示:

/*********************
 * This is a comment *
 *********************/
我已经设法添加了开始评论所需的初始结构,即:

/**********
 * [TEXT] *
 **********/
使用snipMate。但是现在,每当我在区域
[text]
中输入任何文本时,对于我输入的每个字符,都应该在上面和下面的行中添加一个星号(希望你能理解我的观点)

我想我可以使用键映射
imap
实现这一点,但不确定如何实现这一点。即使这样,我认为它会有点慢,所以有没有任何方法可以通过vim编程实现这一点?我只想有人给我指出正确的方向


如果有任何插件可用于此,也请提及。

我有一个75宽的块,如下所示:

/***********************************/
/***********************************/
/***********************************/
/****************************************
  This is a comment
****************************************/
保存在命名寄存器中(“e”,但可以是任何内容)。然后,我只是在需要时粘贴它,并用注释文本覆盖(“r”替换)中心线


没有脚本,但快速有效。如果我需要一个不同的注释方法,比如说Python的“#”,交换“e”寄存器的内容很简单。

我有一个75宽的块,如下所示:

/***********************************/
/***********************************/
/***********************************/
/****************************************
  This is a comment
****************************************/
保存在命名寄存器中(“e”,但可以是任何内容)。然后,我只是在需要时粘贴它,并用注释文本覆盖(“r”替换)中心线


没有脚本,但快速有效。如果我需要一个不同的注释方法,比如Python中的“#”,那么交换“e”寄存器的内容就很简单了。

尽管snipMate插件提供了镜像(即将当前占位符的键入内容复制到另一个位置),但它无法对其运行转换(这里需要这样做:您希望每个键入的字符都翻译成星号)。这应该可以通过更现代的插件实现

尽管如此,我还是想请你重新考虑你的“清洁”方法评论。如果你的风格需要在特定编辑器中使用自定义插件进行特殊设置,那么你的同事/合作者很可能不会有相同的设置,因此可能会忽略你的方案。甚至你也可能会这样,当你被迫在另一台计算机/编辑器上进行编辑时。依我看,你不会失去太多美感,但会失去更多n如果您坚持使用更简单的格式,则可维护性会有很大提高,如:

/***********************************/
/***********************************/
/***********************************/
/****************************************
  This is a comment
****************************************/

特别是,删除尾随右对齐的
*
使您能够使用
gq

快速重新格式化注释。尽管snipMate插件提供镜像(即,将当前占位符的键入内容复制到另一个位置),但它无法对其运行转换(这里需要这样做:您希望每个键入的字符都翻译成星号)。这应该可以通过更现代的插件实现

尽管如此,我还是想请你重新考虑你的“清洁”方法评论。如果你的风格需要在特定编辑器中使用自定义插件进行特殊设置,那么你的同事/合作者很可能不会有相同的设置,因此可能会忽略你的方案。甚至你也可能会这样,当你被迫在另一台计算机/编辑器上进行编辑时。依我看,你不会失去太多美感,但会失去更多n如果您坚持使用更简单的格式,则可维护性会有很大提高,如:

/***********************************/
/***********************************/
/***********************************/
/****************************************
  This is a comment
****************************************/
特别是,删除尾随的右对齐的
*
使您能够使用
gq

快速重新格式化注释。我使用此映射:

nnoremap <leader>g I// <Esc>A //<Esc>yyp0llv$hhhr-yykPjj
进入

我相信您可以轻松更改它以匹配您的横幅样式。

我使用此映射:

nnoremap <leader>g I// <Esc>A //<Esc>yyp0llv$hhhr-yykPjj
进入


我相信您可以轻松更改它以匹配您的横幅样式。

这是一个很好的建议。谢谢!这是一个很好的建议。谢谢!