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_Keymapping - Fatal编程技术网

Vim键映射范围的高级使用

Vim键映射范围的高级使用,vim,keymapping,Vim,Keymapping,我的vimrc中有一个映射,它向下注释c代码的区域: nmap comc :normal! I//<ESC> 在编辑文本时,我更喜欢键入“-6comc”之类的内容,或者使用向上的范围对“Comc”进行映射。很遗憾,我没能成功地做到这一点 类似地,范围操作支持注释,直到达到搜索模式,例如: .,/int main/ comc 不过,我希望这样做时不必打字 尽管在没有任何插件的情况下尽可能多地使用插件是值得称赞的,但有时它们只是最好的选择。当您开始使用带有或(*..*)注释的语言工作

我的vimrc中有一个映射,它向下注释c代码的区域:

nmap comc :normal! I//<ESC>
在编辑文本时,我更喜欢键入“-6comc”之类的内容,或者使用向上的范围对“Comc”进行映射。很遗憾,我没能成功地做到这一点

类似地,范围操作支持注释,直到达到搜索模式,例如:

.,/int main/ comc

不过,我希望这样做时不必打字

尽管在没有任何插件的情况下尽可能多地使用插件是值得称赞的,但有时它们只是最好的选择。当您开始使用带有
(*
..
*)
注释的语言工作时,您会怎么做?是否为这些注释字符添加新映射

我建议您使用支持文件类型的注释

commentation.vim中的默认注释运算符是
gc
。您可以将其与运动相结合,并在视觉模式下使用它

您的用例:

  • 向下注释N行(例如,3):
    :,.+3normalgcc
    ,或
    gc3j
    4gcc

  • 向上注释5行:
    :,-5normal gcc
    ,或者干脆
    gc5k

  • 注释直到
    int-main
    :,/int-main/-1normal gcc
    ,或者只需在
    gc/int-main
    后按Enter键即可


尽管在没有任何插件的情况下尽可能多地使用插件是值得称赞的,但有时它们只是最好的选择。当您开始使用带有
(*
..
*)
注释的语言工作时,您会怎么做?是否为这些注释字符添加新映射

我建议您使用支持文件类型的注释

commentation.vim中的默认注释运算符是
gc
。您可以将其与运动相结合,并在视觉模式下使用它

您的用例:

  • 向下注释N行(例如,3):
    :,.+3normalgcc
    ,或
    gc3j
    4gcc

  • 向上注释5行:
    :,-5normal gcc
    ,或者干脆
    gc5k

  • 注释直到
    int-main
    :,/int-main/-1normal gcc
    ,或者只需在
    gc/int-main
    后按Enter键即可


您请求的行为通常通过
:h map操作符
映射完成。有了这个注释,下面的3行将变成
comc2j
,但是现在3行也同样容易:
comc2k

您也可以在不更改映射的情况下使用可视模式:
V2kcomc
。您必须使用相同的
lhs
rhs
添加
xnoremap
,因为
nnoremap
仅适用于正常模式。()

第三个选项是将
-
映射到某个移动
{count}
的对象,该对象将排队并返回计数:

nnoremap <expr> - (v:count ? ":\<C-u>\n" . (v:count-1) . 'k' . v:count : '')
nnoremap-(v:count?”:\\n.“(v:count-1)。“k”。v:count:“”)
。这假设您正在编写
6-comc
,而不是
-6comc


//顺便说一句,如果涉及到插件,我会建议
书呆子评论员

您请求的行为通常是通过
:h map操作符
映射完成的。有了这个注释,下面的3行将变成
comc2j
,但是现在3行也同样容易:
comc2k

您也可以在不更改映射的情况下使用可视模式:
V2kcomc
。您必须使用相同的
lhs
rhs
添加
xnoremap
,因为
nnoremap
仅适用于正常模式。()

第三个选项是将
-
映射到某个移动
{count}
的对象,该对象将排队并返回计数:

nnoremap <expr> - (v:count ? ":\<C-u>\n" . (v:count-1) . 'k' . v:count : '')
nnoremap-(v:count?”:\\n.“(v:count-1)。“k”。v:count:“”)
。这假设您正在编写
6-comc
,而不是
-6comc


//顺便说一句,如果涉及到插件,我建议
NERD Commenter

事实上,我有一个映射“comp”注释掉perl和python代码,还有一个映射“comh”注释掉haskell代码。我有一个自动命令,它递归地将“com”映射到我正在使用的文件类型所需的任何键映射。既然我已经这么做了,我宁愿避免切换到插件。不过,这听起来确实像是一个很棒的插件,当我完成“我要学习VIM”时,我可能会切换到它。事实上,我有一个映射“comp”注释perl和python代码,还有一个“comh”注释haskell代码。我有一个自动命令,它递归地将“com”映射到我正在使用的文件类型所需的任何键映射。既然我已经这么做了,我宁愿避免切换到插件。不过,这听起来确实像是一个很棒的插件,当我完成“我要学习VIM”时,我可能会切换到它。