В энергии, когда я использую
:r !ls somefilename
это вставляет вывод той команды на новой строке ниже текущей строки.
Если я делаю
let @a = system("ls")
и позже
"ap
это все еще вставляет вывод на новой строке ниже текущей строки.
Существует ли способ заставить энергию вставить вывод в текущем местоположении?
Можно вставить содержание буфера буфера обмена между символами с 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
.
:r !command
считает вывод из команды и вставит его в строку под текущей строкой. Это - то, как vi программируется, Вы не можете изменить поведение.
, Но говорят, находитесь ли Вы в номере строки 3. Если Вы пробуете :r !date
. Это вставит значение даты в номер строки 4.
, Если Вы захотите, чтобы значение даты появилось на номере строки 3, затем Вы пробуете :2r !date
, вставит значение даты в номер строки 3.
Вот альтернативный способ вставить вывод от внешней команды перед курсором:
:exe 'norm i' . system("ls -l")
или регистр выражения использования (:help @=
):
"=system('ls -la')
затем совершает нападки P . Или более короткий путь:
<CTRL-R>=system('ls -la')<CR>
В дополнение к let
и p , мы также можем использовать функции vim setreg ()
и положить
следующим образом:
:call setreg('f',system("ls"))
:put f
Обратите внимание, регистр f
был выбран в этом примере просто для мнемонического представления слова «файлы». В этом нет ничего особенного, и вы можете выбрать свой собственный регистр.