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>
我正在尝试为可视模式创建一个映射,我在其中按 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>