Как передать содержимое буфера энергии через оболочку, управляют и получают вывод к окну с несколькими панелями

Я считал много потоков о рабочих командах оболочки от энергии, много документации относительно команд энергии, .vimrc и всего этого, но я просто, может казаться, не понимаю "исключая" языком или отображениями энергии достаточно хорошо, чтобы сделать то, что я хочу, таким образом, здесь я задаю этот вопрос. Здесь идет:

У меня есть открытый буфер в энергии (использующий последнего стабильного MacVim на Snow Leopard, но не в gui режиме), чье содержание я позже подам в инструмент командной строки, который обработает его и даст мне некоторый вывод. То, что я хочу, должно смочь:

  1. Нажмите клавишу (или сочетание клавиш, или дайте vi команду),
  2. Выполните мою утилиту командной строки с содержанием моего текущего буфера (который не мог бы быть сохранен в файл), переданный по каналу в него
  3. Получите его вывод и покажите его в энергии, предпочтительно в новом окне с несколькими панелями (как: справка делает),

Так, таким образом: Я могу работать

$ cat ~/myinput.txt | myScript > output.txt

Но я хочу сделать что-то как эта внутренняя часть энергии, помещая вывод в новое окно с несколькими панелями, если это возможно.

ОБНОВЛЕНИЕ:
Конечно, сразу после регистрации, я нашел еще некоторую информацию о предмете. Я теперь знаю, что могу сделать эту внутреннюю энергию:

:%! myScript

И это поместит вывод myScript (с содержимым буфера, переданным по каналу к нему) в мой текущий буфер, заменяя независимо от того, что я имею в нем прямо сейчас.

Так существует ли способ поместить это содержание в новое, окно с несколькими панелями, буфер?Спасибо!

7
задан 15.05.2013, 15:11

1 ответ

Я поместил бы что-то вроде этого в свой ~/.vimrc или файл с .vim расширением в ~/.vim/plugin/:

command! FW call FilterToNewWindow('myscript')

function! FilterToNewWindow(script)
    let TempFile = tempname()
    let SaveModified = &modified
    exe 'w ' . TempFile
    let &modified = SaveModified
    exe 'split ' . TempFile
    exe '%! ' . a:script
endfunction

Затем можно просто сделать":FW".

Это могла бы быть хорошая идея изменить определение команды, чтобы потребовать, чтобы аргумент названия сценария фильтра передал функции вместо "трудного кодирования" его.

7
ответ дан 07.12.2019, 15:00

Теги

Похожие вопросы