Я использую Vim для сценариев Bash. иногда я не хочу создавать новый файл, делать его исполняемым, выполнять его и затем удалять. Я имею в виду сценарии, которые будут использоваться только один раз.
Например, я открываю vim и набираю это:
#!/bin/bash
ll | while read line
do
echo $line
done
Я не сохранил этот файл, я просто использую vim для упрощения bash-скриптинга. Я знаю, что могу выполнить команду bash через !
vim. Но как насчет выполнения всего, что находится в буфере?
command-line
external-command
bash
St.Antario
источник
источник
<C-x><C-e>
и выполнять ее при записи, верно?set -o vi
, вы можете нажатьEsc-v
для редактирования командной строки в vi. ЗатемEsc-:wq
выполнить.Ответы:
Я написал довольно обширный ответ на этот вопрос о переполнении стека . Основная идея заключается в том, что поскольку команда write предназначена для записи без сохранения , вы можете записать текст в своем буфере во внешнюю программу, такую как python или bash. В вашем случае вы хотели бы сделать что-то вроде:
или
Эти команды буквально просто записывают текст в вашем буфере непосредственно в указанную вами программу
!
, что удобно, потому что тогда вам не нужно сохранять файл. Конечно, вы также можете сделать что-то вроде:который сохраняет ваш файл, а затем запускает его как скрипт bash. Вы можете выбрать тот, который имеет больше смысла для вас.
источник
:w !bash -a test
но получил "не могу выполнить двоичный файл"test
файлом, он работает нормально для меня. Что должна делать команда и что должнаtest
содержать?test
содержать?test
это просто аргумент-a
.test
должен был быть файл. Я не совсем уверен, что делать. Если вы пытаетесь что-то сложное, может быть лучше просто сохранить его в файле. Возможно, стоит задать отдельный вопрос, чтобы вы могли предоставить более подробную информацию. Вероятно, это был бы также хороший вопрос для Unix и LinuxСценарий: вы работаете в оболочке bash. Во-первых, убедитесь, что режим локального редактирования имеет вид vi:
Теперь, когда вы обнаружите, что работаете над длинной командой, подобной следующей, нажмите Esc+ v.
Это загрузит вашу команду во временную
vi
сессию. Теперь вы можете редактировать его по своему усмотрению и даже добавить еще одну команду ...Когда вы закончите редактирование, введите Esc
:wq
и команда (ы) будут выполнены, например:источник
Esc
ключа;)Esc
ключей !? Как они могут использовать Vim тогда?Esc
ключ при запуске Vim в терминале.