用于与多个选项卡交互的VIM宏

时间:2010-09-24 04:44:50

标签: vim function macros tabs

这就是我想用GVIM 7.3做的事情:

  1. 在新标签页(第一个标签页)中打开文件
  2. 获取包含模式的所有行 - >将它们插入寄存器/剪贴板
  3. 打开新标签页(第二个标签页)
  4. 粘贴剪贴板中的代码
  5. 在第二个标签中执行一些正则表达式替换过程。
  6. 我可以成功地逐个手动执行命令。

    我甚至可以使用此示例按顺序执行命令:

    :let @b="This Value should be pasted in second tab"  | :set dir=$TEMP | :tabe tabname | "bp | :%s/tab/tab and replaced in second tab/gi
    

    但是当我将它们录制成宏时;宏在第3步停止

    是否有处理多个选项卡的函数/宏的特殊技术

    谢谢。

    这是命令示例

        :let @b="This Value should be pasted in second tab" 
        :set dir=$TEMP
        ":tabe tabName
        "bp 
    :%s/tab/tab and replaced in second tab/gi 
    

1 个答案:

答案 0 :(得分:0)

第一行语法错误:Ex命令不应以:开头:使用:打开命令行,它不是Ex命令指示符。因此,"bp在此序列中执行的所有操作都是以"开头的整行注释。如果要执行普通命令"bp,请使用execute 'normal! "bp',但也可以使用put b进行粘贴。可以做你想做的事情的功能(放在~/.vimrc中):

function! FindToTab(regex)
    let @b=""
    execute 'g/'.escape(a:regex, '/').'/.yank B'
    set dir=$TEMP
    tabe tabName
    put b
    %s/tab/tab and replaced in second tab/gi
endfunction
noremap <special> ,r :<C-u>call FindToTab(input("What to find? /", @/))<CR>