Откройте новое окно во встроенном в Vim скрипте Python - PullRequest
2 голосов
/ 23 августа 2010

Я только что начал думать о сценариях vim + python (не имея опыта работы с собственными сценариями vim).

Как открыть новое окно, содержащее стандартный вывод из фонового процесса?

В настоящее время, после прочтения: help python, я вижу только один вариант:

cmd = ":bel new"
vim.command(cmd) 

1 Ответ

3 голосов
/ 03 ноября 2010

Поскольку vim.command может выполнять большинство (если не все?) Ex-команд, вы можете просто вызвать :new +read!ls из него.

:new разбивает текущее окно и помещает новое (пустое,без имени) буфер в верхнее окно.Он принимает аргумент +[cmd], который мы используем для выполнения read!cmd, который считывает стандартный вывод cmd после взрыва в буфер.Имейте в виду, что вам нужно экранировать пробелы в вашей команде с помощью \

В целом вы получаете vim.command("new +read!cmd")

:python vim.command("new +read!ls")

для чтения содержимого текущего каталога в новыйбуфер в cichew, горизонтально разделенном окне.

Если вы хотите обрабатывать экранирование специальных символов, рассмотрите использование re.escape () python:

:py import re;vim.command("new +read!"+re.escape("ls Dire*"))

, что должно быть достаточно в большинстве случаев,Если сомневаетесь, проверьте его документацию и сравните с документом вашей оболочки.

...