Я очень часто буду переключаться между несколькими файлами на сервере. Я выполню следующие примеры команд последовательно:
nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc
Чтобы перейти от одной nano
команды к другой, я сейчас нажимаю Upи Backspaceзаменяю последний сегмент пути. Проблема в том, что я действительно,Действительноленивый.
Существует ли сочетание клавиш (или башизм), которое может:
- Заменяется последним использованным путем (с дополнительным битом в конце)
- Удалить в текущей строке (например, после нажатия Up) до последней
/
решение1
Я думаю, вы ищете клавишу Alt«+» Backspace.
После нажатия Upэтой кнопки следует вернуться к предыдущему /
символу space
.
решение2
Чтобы обнаружить привязку readline, которая удаляет слово в обратном направлении по вашему желанию, вы можете использовать следующую команду в своем терминале:
bind -p | awk '/kill/ && /word/ && /backward/'
В стандартной установке Ubuntu вывод может быть следующим:
"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)
Вторая строка, похоже, не имеет значения на данном этапе, поэтому давайте попробуем понять, что означает первая строка. Насколько я понимаю,backward-kill-word
Функция readline, которая фактически удаляет все символы, пока предыдущий специальный символ ( /
, ;
, ,
и т.д.) не будет привязан к \e\C-h
последовательности клавиш. Теперь, в этой последовательности\e
представляетключ Esc, \C
- Ctrlключ, и \C-h
обозначает Ctrl+ h, которыйэквивалентно в этом случаес Backspaceключом.
Итак, вы ищетеEsc+ Ctrl+hсочетание клавиш, эквивалентноеEsc+Backspaceи который,из-за поведения xterm, которое заставляет Altkey действовать как метасимвол, а метасимволы преобразуются в двухсимвольную последовательность, в которой самому символу предшествует Esc(см. man xterm
), эквивалентноAlt+Backspace.
Теперь, если вам это не нравится и вы продолжаете забывать об этом, вы можете использовать следующую команду, чтобы создать новую комбинацию клавиш, скажем, Esc+ w, для ваших целей:
bind '"\ew": backward-kill-word'
Чтобы сделать это новое сочетание клавиш постоянным для всех команд, использующих readline, добавьте в свой файл следующую строку ~/.inputrc
:
"\ew": backward-kill-word
help -m bind | sensible-pager
Более подробную информацию см .
решение3
Другая комбинация клавиш:
Alt+ Bтогда Ctrl+K
Alt + B Move cursor backward one word on the current line
Ctrl + K Clear the line after the cursor
Alt+ Bтогда Alt+D
Это удаляет последнее слово, не удаляя специальные символы между словами.