Получение возвращаемого значения из внутренней команды vim в vimscript - PullRequest
4 голосов
/ 15 сентября 2011

Я хочу сделать что-то вроде

let colors = execute(":highlight")

Это, очевидно, не правильно, все, что я могу сделать, это execute(":highlight"), который откроет окно, но мне действительно нужно получить содержимое этого окна в переменную - так же, как вызов system() сделает для внешние команды. Можно ли это сделать?

Ответы [ 2 ]

5 голосов
/ 16 сентября 2011

Существует команда под названием :redir, специально предназначенная для записать вывод одной или нескольких команд в файл, регистр или Переменная. В последнем случае использование как в следующем Пример.

:redir => colors
:silent highlight
:redir END

Чтобы увидеть полный список способов вызова команды, обратитесь к :help :redir. Смотри также мой ответ на вопрос Расширение группа выделения в Vim для практического использования :redir.

3 голосов
/ 15 сентября 2011
let colors = lh#askvim#exe(':hi')

Который просто инкапсулирует :redir. Или еще лучше:

let colors = lh#askvim#execute(':hi')

, который возвращает результат в виде переменной списка, либо через :redir, если у нас нет выбора, либо через execute(), когда он определен. Этот новый подход следует отдавать предпочтение, так как он имеет меньше нежелательных побочных эффектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...