Каков наилучший способ передвижения по заданной очень длинной командной строке в терминале?
Скажем, я использовал клавишу со стрелкой или Ctrl-, Rчтобы получить эту длинную командную строку:
./cmd --option1 --option2 --option3 --option4 --option5 --option6 --option7 --option8 --option9 --option10 --option11 --option12 --option13 --option14 --option15 --option16 --option17 --option18 --option19 --option20 --option21 --option22 --option23 --option24 --option25 --option26 --option27 --option28 --option29 --option30 --option31 --option32 --option33 --option34 --option35 --option36 --option37 --option38 --option39 --option40 --option41 --option42 --option43 --option44 --option45 --option46 --option47 --option48 --option49 --option50
Теперь мне нужно переместить (начиная с начала или конца строки) курсор, чтобы --option25
что-то там изменить.
Какой самый быстрый способ добраться туда? Что я обычно делаю, так это Ctrl- Aчтобы добраться до начала, а затем многократно Alt- Fдвигаться вперед, слово за словом (или Ctrl- Eидти до конца и Alt- Bпотом идти назад). Но на длинной очереди, которая занимает слишком много времени. Должен быть способ поиска и перехода непосредственно к той части, которую мне нужно изменить, например option25
?
Удерживая нажатой клавишу «Option», щелкните, куда вы хотите переместить курсор, и Терминал переместит курсор в это точное место.
источник
Я предпочитаю режим редактирования vi (поскольку эти нажатия клавиш теперь встроены в мой спинной мозг (мозг вообще не используется), наряду с CTRL-K, CTRL-X из WordStar 3.3 :-). Вы можете использовать командную строку,
set -o vi
чтобы активировать ее (иset -o emacs
вернуться).В Vi это было бы (ESC-K, чтобы сначала выстроить линию в очередь) "
f5;;B
" (без двойных кавычек).Конечно, вы должны понимать, что на кону, чтобы сойти с рук. В основном это
Давайте посмотрим, смогут ли поклонники emacs найти лучшее решение, менее чем за 5 нажатий клавиш (хотя я не хочу начинать религиозную войну).
Задумывались ли вы о том, хотите ли вы добавить эту ужасно длинную команду в сценарий? :-)
На самом деле, я могу пойти на один лучше: «
3f5B
», чтобы найти третье вхождение «5», а затем вернуться к началу слова.источник
Используйте Meta-b / Meta-f для перемещения назад / вперед на слово соответственно.
В OSX Meta переводится как ESC, что отстой.
Но в качестве альтернативы вы можете открыть настройки терминала -> настройки -> профиль -> клавиатура и установить флажок «использовать опцию как мета-ключ».
источник
Запустив команду один раз, запустите
fc
Он запустится
$EDITOR
с предыдущей командой, затем вы можете использовать свой обычный редактор для изменения команды. При сохранении и выходе файл будет выполнен.... но, как сказал Пакс - командная строка не особенно хороша для редактирования нелепо длинных строк - почему бы не превратить команду в сценарий?
источник
Если вы хотите продвинуться на определенное количество слов, нажмите
M-<n>
(M-
для меты и обычно это клавиша escape), затем нажмите число. Это отправляет повторный аргумент в readline, так что вы можете повторить любую команду, которую хотите - если вы хотите перейти вперед, нажмитеM-<n> M-f
и курсор переместится вперед.<n>
количество слов .Например
Так что для вашего примера из курсора в начале строки, которую вы нажмете,
M-26 M-f
и ваш курсор будет в--option25|
-или- от конца строкиM-26 M-b
поместит ваш курсор в--|option25
источник
Инкрементальный поиск истории
в терминал введите:
затем скопируйте вставьте и сохраните
все, что вам нужно сделать, чтобы найти предыдущую команду, это ввести первые 2 или 3 буквы, и стрелка вверх приведет вас туда быстро, говоря, что я хочу:
все, что мне нужно сделать, это войти
и нажмите стрелку вверх команда скоро появится
источник
Одним из вариантов является использование
M-x shell
вemacs
. Это обеспечивает все редактирования объектов и нажатия клавиш , чтоemacs
имеет, поэтомуC-s
могут быть использованы для поиска текстаoption25
, например.(Но я все же предпочел бы быть в настоящей терминальной оболочке, если кто-то может указать мне на хорошие возможности поиска и редактирования.)
источник
Использовать мышь
Иногда самый простой способ редактировать командную строку - использовать мышь. Некоторые предыдущие ответы дают команду, чтобы открыть вашу текущую строку в вашем $ EDITOR. Для меня (жс с grml config) эта комбинация есть
Alt+e
. Если вы включите мышь в вашем редакторе, вы можете использовать ее.Чтобы включить мышь в Vim, добавьте это в ваш ~ / .vimrc
Если вы затем хотите сделать выделение текста в терминале (вместо передачи щелчка мышью на vim), удерживайте Shift при нажатии; это, конечно, специфично для терминала.
Системные администраторы не должны бояться мыши.
источник
В Cygwin вы можете активировать такую функцию, щелкнув правой кнопкой мыши на окне. Во всплывающем окне выберите « Параметры» -> «Мышь» -> «Активировать клики», поместите курсор командной строки -> «Применить».
Отныне простой щелчок левой кнопкой мыши в некоторой позиции в командной строке поместит курсор туда.
источник
первый: экспорт EDITOR = 'nano -m'
затем: CTRL + X CTRL + E в последовательности.
Ваша текущая строка откроется в нано-редакторе с включенной мышью. Вы можете нажать на любую часть текста и редактировать
затем CTRL + X для выхода и y для подтверждения сохранения.
источник
Я сделал скрипт для перемещения курсора командной строки по щелчку мыши :
Можно найти на GitHub
Больше информации о другой пост
Будет работать, если
echo -e "\e[?1000;1006;1015h" # Enable tracking
печатать escape-последовательности на терминале при щелчке мышьюисточник
Это может быть не самый быстрый, но это должно быть здесь, некоторые читают о перемещениях курсора ANSI
Экранирующие последовательности ANSI позволяют перемещать курсор по экрану по желанию. Это более полезно для полноэкранных пользовательских интерфейсов, генерируемых сценариями оболочки, но также может использоваться в приглашениях . Последовательности побега движения следующие:
(...)
Попробуйте ввести следующую строку кода в приглашении (немного понятнее, что происходит, если приглашение находится на несколько строк ниже терминала, когда вы вводите это):
echo -en "\033[7A\033[1;35m BASH \033[7B\033[6D"
это должно переместить курсор на семь строк вверх по экрану, вывести слово «BASH». ", а затем вернитесь туда, где он начал выдавать нормальное приглашение.Примеры :
Переместите курсор назад на 7 строк:
Переместите курсор на строку 10, столбец 5:
Быстро отображать коды цветов , чтобы раскрасить программу:
источник