Пишите структурированные команды в несколько строк с активированной клавишей табуляции

10

Я хотел бы написать структурированную команду в несколько строк, как

$ for i in *;
 do
    file $i;
 done
bmdt.md: ASCII text
breakfast.md: ASCII text
brmdh.md: ASCII text
test.sh: Bourne-Again shell script text executable, ASCII text

но найти вкладку не работает,

Как я могу активировать клавишу табуляции в консоли bash?

Исчисление
источник
4
вместо этого нажмите вкладку Control-V; По умолчанию вкладка привязана к завершению файла / команды.
Мосви

Ответы:

10

Когда вы нажмете Enterпосле ввода неполной команды, bashоболочка покажет приглашение продолжения (вторичное приглашение $PS2) и позволит вам выполнить введенную команду. Средства редактирования командной строки оболочки в этой точке такие же, как и в исходном приглашении (первичное приглашение $PS1), что означает, что Tabключ будет выполнять завершение команды и имени файла как обычно.

Чтобы вставить символ табуляции, используйте Ctrl+V Tabили используйте пробелы для отступа. Символы табуляции (или любой другой буквенный символ) всегда могут быть вставлены, если перед ними стоит префикс Ctrl+V.


В качестве альтернативы, если в режиме редактирования командной строки Emacs (который, я считаю, используется по умолчанию bash), используйте, Ctrl+X Ctrl+Eчтобы вызвать редактор для ввода вашей команды. Используется редактор, указанный в EDITORпеременной shell / environment, или emacsесли эта переменная не установлена.

В режиме редактирования командной строки Vi нажмите, Escape vчтобы сделать то же самое.

Команда будет выполнена после сохранения и выхода из редактора.

Кусалананда
источник
Могу я спросить, что такое командная строка vi, я знаю, что Vim - это редактор, который следует открывать заранее, заходить внутрь и редактировать, а не вводить непосредственно в команду и запускать.
Исчисление
1
@avirate Vim - это вариант оригинального редактора Vi. «Режим редактирования командной строки Vi» - это режим, который вы включаете set -o viи который дает вам возможность использовать команды редактирования Vi / Vim в командной строке, например ( Esc), dwчтобы удалить до конца текущего слова и т. Д. Используйте set -o emacsдля возврата в режим редактирования командной строки Emacs.
Кусалананда
Удивительно, я сразу ищу и исследую это.
Исчисление
1
@avirate Обратите внимание, что редактор не нужно открывать заранее. Если вы нажмете Ctrl+X Ctrl+E, оболочка откроет его для вас.
Кусалананда