Удаление ввода до последней косой черты

16

Я очень часто буду переключаться между несколькими файлами на сервере. Я буду запускать следующие примеры команд в последовательности:

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для замены последнего сегмента пути. Проблема в том, что я очень, очень ленивый.

Есть ли сочетание клавиш (или Bashism), которое может:

  • Заменить на последний использованный путь (с дополнительным битом в конце)
  • Удалить в текущей строке (например, после нажатия Up) назад к последней/
Оли
источник
1
Я не совсем уверен, что вы имеете в виду, но я думаю, что для первой части вы можете использовать alt+ .?
Sparhawk
@Sparhawk Alt + .используется для чего-то другого .
Раду Радеану
@ RaduRădeanu Да, возможно, я неправильно понял вопрос. Я думал, что «заменить последним использованным путем (с дополнительным битом в конце)» означало то, что делает alt+ ..
Sparhawk
@Sparhawk Опять же, один из тех ярлыков, которые действительно полезны примерно раз в месяц, которые я просто не могу запоминать. В сочетании с alt-backspace это очень удобно для запуска похожих файлов с помощью разных команд.
Оли
@ Оли Я склонен использовать это справедливо, но я всегда забываю, как двигаться в другую сторону !
Sparhawk

Ответы:

21

Я думаю, что вы ищете ярлык Alt+ Backspace.

После нажатия Upэто следует удалить обратно к предыдущему /или spaceсимволу.

Сильвен Пино
источник
7
ТЕПЕРЬ Я НЕ ОСТАНОВЛЕН! (Изменить: я клянусь, я учусь и забыл этот ярлык по крайней мере десять раз в год)
Оли
3
Что это должно сделать? На моем терминале, похоже, нет ничего другого, кроме простого backspace.
Бакуриу
1
@Bakuriu Этот ярлык должен быть по умолчанию. Если вы хотите узнать, что это отображается в на вашей системе запускаbind -P | grep '^backward-kill-word'
Сильвен Pineau
1
@Bakuriu То же самое, я на Mac.
laike9m
9

Чтобы обнаружить привязку 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, которое превращает Altключ в мета-символ и метасимволы, преобразуется в двухсимвольную последовательность с самим символом, которому предшествует Esc(см. man xterm) , эквивалентно Alt+Backspace .

Теперь, если вам это не нравится и вы по-прежнему забываете об этом, вы можете использовать следующую команду для создания нового ярлыка, скажем, Esc+ w, для вашей цели:

bind '"\ew": backward-kill-word'

Чтобы сделать этот новый ярлык постоянным для всех команд, использующих readline, добавьте следующую строку в ваш ~/.inputrcфайл:

"\ew": backward-kill-word

Смотрите help -m bind | sensible-pagerдля получения дополнительной информации.

Раду Рэдяну
источник
2
Хороший ответ. Чаще всего вы заключаете весь параметр в одинарные кавычки с помощью команды bind; bind '"\ew": backward-kill-word'но это придирчиво. И может быть стоит отметить , что вы также можете поместить "\ew": backward-kill-wordв ~/.inputrc, в этом случае других команд, использование Readline будет также , что связывание, например , если вы включите Readline в питоне интерактивной оболочке, что связывание также будет применяться там.
гейра
@geirha Да, я знаю, что вы сказали, но я думал, что ОП знает, как с этим справиться. В любом случае, теперь я понимаю, что мой ответ не очень полезен для ОП (он просто хотел запомнить ярлык), но я надеюсь быть полезным для других пользователей этого сайта, и для этого я отредактировал свой ответ, добавив ваше наблюдение. Спасибо.
Раду Радеану
0

Другая комбинация клавиш:

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

Это удаляет последнее слово без удаления специального символа между словами.

αғsнιη
источник