:redir >name_of_registers_file
:registers
:redir END
:r name_of_registers_file
:help redir
Последняя команда очень полезна, так как существует множество опций для перенаправления: на переменные, на регистры, как добавить, еще один рог изобилия.
Я все еще нахожу странным и раздражающим, что он использует END таким образом, но поскольку все остальное, что может следовать за redir
, должно начинаться с несловарного символа, по крайней мере, это не является двусмысленным.
PS AFAIK (что довольно далеко в данном случае), нет способа прочитать его непосредственно в буфер: сначала нужно сохранить его в регистре или переменной. Обратитесь к справке за информацией о том, как это сделать.
PPS Если вы хотите сделать это, используя переменную - возможно, инкапсулирующую ее в функцию и избегающую засорения регистров или глобальных переменных - вам придется преобразовать многострочную строку, которая записывается в Переменная в список. EG
:call append( '.', split(variable_you_redirected_to, "\n") )
В противном случае (если вы просто выполните append('.',var)
), вы получите ^ @ (нули) вместо новых строк, поскольку именно это vimscript использует для представления новых строк в строковых переменных.
edit : как упоминает @Bill Odom, использование :put =variable_you_redirected_to
намного проще, чем сложное выражение append()
. Спасибо, Билл!
PPPS
Я написал фрагмент , чтобы сделать этот материал более удобным. Он объявляет функцию Redir(command, target)
и команду R
.
Команда анализирует последнюю серию непробельных символов как цель перенаправления и передает ее функции, которая выполняет шаблон для перенаправления вывода команды в цель перенаправления.
Команда - все после R
и перед последним пробелом.
EG
" Store the vim buffer list in buffer_list.txt
:R ls >buffer_list.txt
" Store error messages emitted by a function being debugged
" in the 'unnamed register'
:R call FunctionBeingDebugged() @">
Есть несколько ограничений: например, вы не сможете записать имя файла с пробелом. Плюс в том, что вам не нужно цитировать свою команду. Я разместил его на gist.github.com и постараюсь держать его в курсе, если в конечном итоге улучшу его Или вы можете раскошелиться на это !
В любом случае фрагмент доступен здесь . Его можно поместить в файл .vimrc или в файл ~ / .vim / plugins.