Оболочки (по крайней мере, я знаю) имеют действительно плохие возможности редактирования команд.
Например:
Я не могу указать курсор на любую точку команды. Я не могу выбрать и переместить / удалить / заменить текст в команде.В настоящее время они настолько отвлекают, я использую gedit для редактирования команд, прежде чем вставлять их в терминал.
Есть ли какое-нибудь решение, которое хорошо для них?
Вы можете отредактировать пустую или частично типизированную команду в выбранном вами редакторе, установив EDITOR в выбранный вами редактор и нажав CTRL + X + E или CTRL + X / CTRL + E, которые откроют текущий редактирование строки в EDITOR;
Например, установка EDITOR на gedit сделает CTRL + X + X и CTRL + [d3 ] E / CTRL + CTRL откройте текущую строку в Gedit.
Чтобы сделать это постоянным решением, вы можете установить EDITOR в ~/.bashrc.
Это позволяет использовать даже полнофункциональный графический текстовый редактор для редактирования команды; для запуска отредактированной команды просто сохраните и закройте документ.
В Zsh можно включить такую же функцию, добавив следующее к ~/.zshrc:
autoload -U edit-command-line
zle -N edit-command-line
bindkey '^xe' edit-command-line
bindkey '^x^e' edit-command-line
Терминалы сами не имеют возможности редактирования текста. Терминалы предоставляют область текста и соединяют клавиатуру с чем-то. Но что-то, что вы запускаете внутри терминала, определяет, что он может сделать.
Терминалы , такие как bash, как правило, это первое, что вы найдете для запуска внутри терминала , Поскольку оболочки работают на основе команд, вы можете редактировать текущую команду. bash обеспечивает превосходное редактирование команд по сравнению с оболочкой Bourne или csh или ksh, но это вряд ли то, что вы хотели бы отредактировать даже в коротком рассказе.
Текстовые редакторы - одна из команд, которые вы можете вызывать в оболочке. Ведущими примерами являются bash и emacs. vim или emacs даст вам возможность редактировать практически все.
Таким образом, решение состоит в том, чтобы лучше понять, что делают эти инструменты и что нужно сделать, и выбрать текстовые редакторы [!]. d8].
Обычно терминалы позволяют выбирать текст с помощью мыши, но оболочка не узнает об этом. К сожалению, ни bash, zsh, fish, ни es не могут поддерживать редактирование на основе мыши. Я думаю, что для этого потребуется больше контроля над терминалом.
Однако (и это немного растягивается), если вы открываете Vim или GVim, а затем вводите команды оболочки, используя: [ ! d1]
:!...
, тогда вы можете щелкнуть мышью, чтобы перейти в любую точку линии. (Сначала вам нужно будет :set mouse=a, если это еще не включено.) Клавиши редактирования в этом режиме можно увидеть с помощью :help cmdline-editing
. У Vim также есть довольно мощный режим истории команд, который может быть достигнутый путем удара q :. Оттуда вы можете вытаскивать, удалять и вставлять команды Vim в обычном режиме. В этом режиме вы можете щелкнуть мышью , чтобы перейти в любую желаемую строку (нажав d).
Существенным препятствием здесь является то, что Vim не на самом деле сохранить сеанс живой оболочки. Каждая выполняемая вами команда будет выполняться в дочернем процессе. Таким образом, любые изменения, внесенные в переменные среды или параметры оболочки дочерним процессом, будут потеряны.
Тем не менее, вы можете изменить переменные среды из в процесс Vim и использовать их из Командная строка Vim, и они будут даже экспортированы в дочерние процессы:
:let $FOO="bar" " the $ and the quotes are mandatory here
:echo $FOO " Vim's own echo command
bar
:!echo "$FOO" " Passing the variable to a shell command
bar
:!bash " Opening a child shell
$ echo "$FOO"
bar
Итак, если вы готовы притвориться, что Vim на самом деле какая-то странная оболочка, то вы можете наслаждаться ее расширенными функциями редактирования! Вероятно, самым большим недостатком является то, что вам придется начинать каждую команду, набирая либо :!, либо q:
О, и, кстати, если вы хотите получить вывод команды оболочки в текущий Vim, вы можете сделать это вот так (но будьте осторожны, он будет сжимать вашу текущую строку):
:,!ls