В режиме bash emacs можно ли удалить до предыдущего символа косой черты? Например, если я ввел команду cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_path
и хочу просто удалить. reallylongincorrectfolder
Есть ли ярлык? Это очень общий сценарий для меня в bash. Что-то вроде dF<char>
в vi?
15
~/.inputrc
, добавьте такую строку к этому файлу:"\C-b": unix-filename-rubout
. Чтобы увидеть эффект, вам нужно запустить новую оболочку bash (или запустить другую программу, использующую библиотеку readline GNU).Alt- Backspaceи Ctrl- wобычно сопоставляются
backward-kill-word
, что делает это. Если вы хотите узнать, на что он отображается в вашей системе (если есть), запуститеbind -P | grep '^backward-kill-word'
.Как объясняет @Barmar , это отличается от того
unix-word-rubout
, что удаляет предыдущую границу пространства.источник
unix-word-rubout
: убить слово за точкой, используя пробел в качестве границы слова.unix-filename-rubout
немного лучше, так как он остановится на пустом месте и косой чертой.Поместите это в ваш
.inputrc
и запустите новую оболочку:C-b:unix-filename-rubout
Ctrl- bтеперь стирает в обратном направлении до следующего слеша.
Nirvana!
Не забудьте Ctrl- XCtrl- Eзапустит ваш редактор, чтобы вы могли удобно редактировать сложную командную строку.
источник