Vim 视觉模式的按键映射

Vim key mapping for visual mode

我正在尝试为可视模式创建一个映射,我在其中按 F7,所选代码将分别用 /* 和 / 包装。 我希望 / 和 */ 自己在一条线上。

我的 vimrc 中有这个:

autocmd BufNewFile,BufRead *.c,*.js xmap <F7> I <ENTER> <ESC> k I /* <ESC> gv A */ <ENTER> <ESC>

因为我希望这个映射只对 C 和 js 文件有效。 它几乎可以按我的意愿工作。唯一的问题是代码在 /* 之后换行,代码之后和结束 */ 之前会有一个空行。

我真的不明白为什么,因为手动执行每个操作都是我想要的。

按F7的结果应该会变成这段代码:

for (size_t a = 0; a<5; a++) {
    printf("%d\n", somearray[a]);
 }

进入这个

  /*
    for (size_t a = 0; a<5; a++) {
            printf("%d\n", somearray[a]);
         }
 */

尽管如此,由于某种原因最终会变成这样:

/*for (size_t a = 0; a<5; a++) {
        printf("%d\n", somearray[a]);
     }
---newline---
*/

现在有效。

autocmd BufNewFile,BufRead *.c,*.js xmap <F7> I<CR><ESC>kI /*<ESC> gv A*/ <CR> <ESC>