У Vim, який елегантний спосіб отримати вихід з командного рядка?


14

Якщо я перебуваю у Vim і хочу отримати деякий вихід з командного рядка і вкласти його в мій поточний файл, я можу запустити це:

:! echo "foo" >> %

Це додасть "foo" до мого поточного файлу, і мені доведеться перезавантажити.

Чи є більш елегантний спосіб зробити це - чи повинен цей вихід перейти в буфер, який я можу вставити, наприклад?

Відповіді:


24

Так:

:r !echo "foo"

Побачити

:help :r!

Це буде вставляти результат команди після поточного рядка. Якщо ви хочете зафіксувати вихід команди в регістр, який ви можете вставити, ви можете зробити це:

:let @a = system('echo "foo"')

Тепер вихід команди (включаючи останній новий рядок) знаходиться в регістрі a. Побачити

:help let-@
:help system()

Подивившись на допомогу та експериментуючи, я бачу, що 1) :rє скороченням "читати" (тому ви можете набрати "читати" або просто "r", і це та сама команда), і 2) робити:r path/to/foo.txt додавання вмісту цього файл після курсору.
Натан Лонг

Також - я не знав про systemдзвінок. Це круто!
Натан Лонг

1
Я також не знав, що ви можете вручну встановити регістри, як let @a = 'foo'. Однією цікавою ідеєю було б, виконавши пошук і заміни, ви можете зберегти пошуковий термін до реєстру для вставки в іншому місці, зробивши це let @a = @/- «зробити так, щоб реєстр містив те, що містить / реєстр, а саме мій останній пошук».
Натан Лонг

1
@Nathan Long: Вітаємо вас. Інші способи вставки з / регістру: 1) виконати, :put /щоб помістити вміст регістра в наступний рядок, і 2) перебуваючи у режимі вставки, набрати Ctrl-R з подальшим /вставленням вмісту регістра в позицію курсору. Більш детальну інформацію про тих см :help :putі :help i_CTRL-R.
garyjohn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.