В VIM, когда я использую
:r !ls somefilename
он вставляет вывод этой команды в новую строку ниже текущей строки.
Если я сделаю
let @a = system("ls")
и позже
"ap
он по-прежнему вставляет вывод в новую строку ниже текущей строки.
Есть ли способ сделать вывод vim вставки в текущем месте?
command-line
vim
Дешмук
источник
источник
Ответы:
Вы можете вставить содержимое буфера обмена между символами с помощью Ctrl-R * в режиме вставки (и аналогичный подход для других буферов). Так что, если вы можете получить системную команду в буфер, вы должны быть установлены. (Источник: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position ).
:let @a=system("ls -l")
поместит выводls -l
в регистрa
. Затем вы можете вставить его (в режиме вставки) с помощью^R-a
.источник
*
), поэтому, если вы передадите выходные данные своей команды в буфер обмена,"*
вы сможете ее использовать.прочитает вывод команды и вставит его в строку под текущей строкой. Вот как программируется vi, вы не можете изменить поведение.
Но скажите, если вы находитесь в строке № 3. Если вы попытаетесь
:r !date
. Он вставит значение даты в строку № 4.Если вы хотите, чтобы значение даты отображалось в строке № 3, попробуйте
:2r !date
вставить значение даты в строку № 3.источник
Вот альтернативный способ вставки вывода из внешней команды перед курсором:
или используйте выражение register (
:help @=
):затем нажмите P. Или более коротким путем:
источник
:exe
), которое может быть включено в команды.