如何使用一个键映射在光标下运行多行vimscript命令?

如何使用一个键映射在光标下运行多行vimscript命令?,vim,keyboard-shortcuts,Vim,Keyboard Shortcuts,概述:1个问题+类似上下文的半个问题(在类似用例下) 目标: 我在缓冲区中有一些vimL代码,我想通过按键运行它们 说明: 类似于gc{motion\u或\u text\u object}--键入'gcip'注释整个段落,或 'gc3j'注释4行。(安装tComment后) 或'>i}'缩进块,'4 拔掉那些线 执行:@“ 在视觉模式映射中: xnoremap <key> y:@"<CR> xnoremap y:@” 用法: vip<key> vip

概述:1个问题+类似上下文的半个问题(在类似用例下

目标: 我在缓冲区中有一些vimL代码,我想通过按键运行它们

说明

类似于
gc{motion\u或\u text\u object}
--键入
'gcip'
注释整个段落,或
'gc3j'
注释4行。(安装tComment后)

'>i}'
缩进块,
'4
  • 拔掉那些线
  • 执行
    :@“
  • 在视觉模式映射中:

    xnoremap <key> y:@"<CR>
    
    xnoremap y:@”
    
    用法:

    vip<key>
    
    vip
    
    但是,坦率地说,保证映射太容易了。

    您需要一个自定义操作符来执行
    {motion}
    移动的文本。当Vim将其转换为两个标记时,解决方案类似于可视化模式映射(只要您只想执行整行)。以下内容基于
    :help:map operator

    nnoremap <F2> :set opfunc=ExecuteLines<CR>g@
    function! ExecuteLines(type)
        exec join(getline("'[","']"),"\n")
    endfunction
    
    nnoremap:set opfunc=ExecuteLinesg@
    功能!执行线(类型)
    exec join(getline(“[”,“]”),“\n”)
    端功能
    

    这样,您可以使用
    {motion}
    执行这些行。要处理任意文本(而不仅仅是整行),您必须计算
    a:type
    参数,并获取准确的文本,可能需要定义一个可视选择并将其拖动到寄存器中。

    您可能会发现我的vimteractive插件提供了您想要的功能,因为它允许您使用组合键Ctrl-S(以及许多其他REPL)将行从缓冲区发送到bash终端:


    这绝对不是我想要的。请注意,在我对问题的描述中,我当前的解决方案“视觉选择”然后“按下”比您当前提出的解决方案更有效。我要问的是一种比这更有效的方法.“使用运算符挂起模式”对您意味着什么?还有“线魔法”?如果你想定义一个操作符,你不能简单地要求它(在阅读相应的帮助页面并尝试一些东西之后)?操作符挂起(带动作):“qr5j”运行当前行和下面的5行。运算符挂起(使用文本对象):“qrip”运行当前代码段。行魔术,6qr运行6行代码。请参见
    :h operator
    :h operator pending
    :h text object
    我知道什么是“operator pending mode”,谢谢。但是“线魔法”在Vim中毫无意义。你想要的是一个“接线员”。。。您是否阅读了
    :help:map operator
    ?否,您当前的解决方案并不比我建议的解决方案更有效。operator-pending(带动作):“qr5j”运行当前行和下面的5行。运算符挂起(使用文本对象):“qrip”运行当前代码段。行魔术,6qr运行6行代码。请参阅
    :h ip
    :h operator
    :h operator pending
    :h text object
    ,以及类似的选项,--以防有人怀疑。对于可能想尝试上述keymap的人。注意:我已禁用宏
    映射q
    ,并使用q作为另一个引线键。此外,我还将“让mapleader=”“
    作为我的主要领导密钥”。
    vip<key>
    
    nnoremap <F2> :set opfunc=ExecuteLines<CR>g@
    function! ExecuteLines(type)
        exec join(getline("'[","']"),"\n")
    endfunction