Этот вопрос подобен Vim: выполнить текущий файл? но вместо того, чтобы выполнить текущий файл я хочу выполнить только текущую строку.
Действительно ли это возможно?
Обновление: Идеально, я ищу решения, которые могут иметь побочные эффекты во внешней оболочке. Например, предположите, что у меня есть следующая строка:
alias foo=bar
После выполнения команды в энергии, если я запускаю оболочку с :sh
, псевдоним foo
доступно, но если я вышел vim
использование :q
, затем псевдоним больше не доступен.
Добавьте это отображение на свой .vimrc файл,
nmap <leader>E yyp:.!csh<CR>
Объяснение:
yy
янки текущая строка p
Вставка дергала строку ниже (и курсор переходит к этой следующей строке) :.!csh<CR>
, Выполняют (использование csh
) эту недавно вставляемую строку на месте. Вывод этой строки заменяет эту текущую строку, таким образом прежде, чем выполнить строку дергалось и вставлялось ниже. Если у меня есть команда на строке текста в vi/vim как это"
, расположите ls - la
курсор где угодно на строку и сделайте ":.!!" и нажмите возврат.
, Который является: точка двоеточия ударяет по возврату удара
, Который выполнит текст в той строке в текущей оболочке из vi/vim и вставлять вывод в текстовом файле.
я думаю, именно это Вы спрашивали? это похоже на волшебство.
Полагайте, что следующая команда работает на терминале,
seq 0 10 | xargs printf "%02x "
, Ожидаемый вывод,
00 01 02 03 04 05 06 07 08 09 0a
Полагают, что у Вас есть это выше команды, записанной в файле. Для выполнения этой команды возвращают этот соответствующий вывод в том файле, можно включить это отображение Ваш .vimrc,
nmap <leader>E :exec 'r!'.getline('.')<CR>
Примечание, что, для выполнения вышеупомянутой строки необходимо записать, что она с добавляющим символом Escape для' %
' следующим образом,
seq 0 10 | xargs printf "\%02x "
Идет эта строка в файле и нажимает <leader>E
. В моем случае, <leader>
отображается на ,
следовательно, я нажму ,E