Оболочки (по крайней мере, что я знаю) имеют действительно плохие возможности редактирования команд.
Например:
- Я не могу навести курсор на любую точку команды.
- Я не могу выделить и вернуться / удалить / заменить текст в команде.
В настоящее время они настолько отвлекают, я использую gedit для редактирования команд перед их вставкой в терминал.
Есть ли какое-то решение, которое подходит для них?
command-line
bash
gnome-terminal
UniversallyUniqueID
источник
источник
Ответы:
Баш действительно хорош в этом. Вам просто нужно изучить его ярлыки. Например (в режиме emacs по умолчанию):
И еще много. Читайте,
man readline
чтобы увидеть, что еще доступно. Вы можете назначить разные ярлыки, поместив их в~/.inputrc
. Например, чтобы сделать Ctrl+ Leftвернуться на одно слово и Ctrl+ Rightперейти на одно слово вперед, добавьте это к своему~/.inputrc
:Чтобы узнать, что означают эти странные коды, нажмите Ctrl+, Vа затем нажмите клавишу, которую вы хотите использовать. Если вы попробуете с Ctrl+ Right, вы увидите
^[[1;5C
. Заменить^[
с\e
в~/.inputrc
.Вы также можете захотеть заглянуть в другие оболочки. Популярные "современные", многофункциональные оболочки включают в себя:
источник
gnome-terminal
вам придется использоватьESC
кнопку вместо того,ALT
чтобы перемещаться на одно слово вперед и назад. , .. или переключитесь на терминал, который не использует Alt для своего меню приложения. , , как xterm или sakuraВы можете отредактировать пустую или частично набранную команду в редакторе по вашему выбору, установив
EDITOR
в редакторе по вашему выбору и нажав CTRL+ X+ Eили CTRL+ X/ CTRL+ E, чтобы открыть редактируемую строку вEDITOR
;Например, установка
EDITOR
на +gedit
заставит CTRL+ X+ Eи CTRL+ X/ CTRL+ Eоткрыть текущую строку в Gedit.Чтобы сделать это постоянное решение, вы можете установить
EDITOR
в~/.bashrc
.Это позволяет использовать даже полнофункциональный графический текстовый редактор для редактирования команды; чтобы запустить отредактированную команду, просто сохраните и закройте документ.
Эту же функцию можно включить в Zsh, добавив следующее в
~/.zshrc
:источник
fc
командой, если установлена переменная FCEDIT. Хороший ответ!fc
открывает предыдущую команду (которая даже аккуратнее определенным образом). Я не знал об этом, спасибо!Терминалы не имеют возможности редактирования текста сами. Терминалы обеспечивают область текста и соединяют клавиатуру с чем-то. Но то, что вы запускаете внутри терминала, определяет, что он может делать.
Такие оболочки , как
bash
правило, являются первым, что вы найдете внутри терминала. Поскольку оболочки работают на основе команд, вы можете редактировать только текущую команду. bash обеспечивает отличное редактирование команд по сравнению с оболочкой Bournecsh
или,ksh
тем не менее, вряд ли вы захотите отредактировать даже небольшой рассказ.Текстовые редакторы - это одна из команд, которые вы можете вызывать в оболочке. Ведущими примерами являются vim и emacs .
vim
илиemacs
даст вам возможность редактировать почти все. Оба включают встроенные среды программирования для расширения их возможностей для любой проблемы, с которой вы сталкиваетесь.Таким образом, решение состоит в том, чтобы лучше понять, что эти инструменты делают и предназначены для этого, и выбрать правильный для работы .
источник
Обычно терминалы позволяют выделять текст мышью, но оболочка не знает об этом. Так , к сожалению , ни
bash
,zsh
,fish
ниes
поддерживает редактирование мыши основе. Я думаю, что для этого им нужно будет взять под контроль терминал.Однако (и это является немного растянуть) , если открыть Вим или GVim, а затем ввести команды оболочки с помощью:
затем вы можете щелкнуть мышью, чтобы перейти в любое место строки . (Вам нужно будет
:set mouse=a
сначала, если это еще не включено.) Клавиши редактирования в этом режиме можно увидеть с:help cmdline-editing
Vim также имеет довольно мощный командный режим истории, который может быть достигнут нажатием q:. Оттуда вы можете вытащить, удалить и вставить, используя команды нормального режима Vim. В этом режиме вы можете получить выбор с помощью мыши, а затем удалить желаемую функцию (нажав d).
Важным предупреждением здесь является то, что Vim на самом деле не поддерживает сеанс live shell. Каждая выполняемая вами команда будет выполняться в дочернем процессе. Поэтому любые изменения, внесенные в переменные среды или параметры оболочки дочерним процессом, будут потеряны.
Тем не менее, вы можете изменять переменные окружения из в процессе Vim, и использовать их из командной строки Vim, и они будут даже в дочерние процессы:
Так что если вы хотите притвориться, что Vim на самом деле какая-то странная оболочка, тогда вы можете наслаждаться ее расширенными возможностями редактирования! Вероятно , самым большим недостатком является то , что вы должны будете начать каждую команду, набрав либо
:!
илиq:
Да, и, кстати, если вы хотите получить выходные данные команды оболочки в текущий буфер Vim, вы можете сделать это следующим образом (но будьте осторожны, это приведет к засорению вашей текущей строки):
источник