Макрос VIM для взаимодействия с несколькими вкладками - PullRequest
0 голосов
/ 24 сентября 2010

Это то, что я хочу сделать с помощью GVIM 7.3:

  1. открыть файл в новой вкладке (первая вкладка)
  2. получить все строки, содержащие шаблон -> вставить их в регистр / буфер обмена
  3. открыть новую вкладку (вторая вкладка)
  4. вставить код из буфера обмена
  5. сделать процесс замены регулярных выражений во второй вкладке.

Я могу вручную выполнить команды одну за другой.

Я даже могу последовательно выполнять команды, используя этот пример:

: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 голосов
/ 24 сентября 2010

У вас неправильный синтаксис в первой строке: команды 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>
...