Скажем, у меня есть каталог с одним файлом mylongfilename.blahdeblah.txt, теперь нажатия клавиш mv [tab] [tab] приведут к mv mylongfilename.blahdeblah.txt mylongfilename.blahdeblah.txt в моей командной строке
Теперь я хотел бы напечатать что-нибудь вместо второго blahdeblah. Если я несколько раз нажму ctrl-b, я вернусь к. до .txt На этом этапе я хочу ввести что-то вроде ctrl-w, чтобы удалить предыдущее. Т.е. я бы получил mv mylongfilename.blahdeblah.txt mylongfilename..txt
Есть ли сочетание клавиш, аналогичное ctrl-w, для этого? (Ctrl-w удалит до предыдущего пробела - не то, что я хочу)
Кажется, вы находитесь в режиме emacs. Чтобы делать то, что вы хотите там, это работает:
meta-backspace
(Строго говоря, это M-Del. См. эта страница для получения дополнительных сочетаний клавиш Emacs. Я не думаю, что режим emacs в Bash поддерживает их все, но он поддерживает этот.)
telemachus ~ $ mv mylongfilename.blahblah.txt mylongfilename.|.txt
Трубка показывает, где находится курсор.
В Bash есть режимы emacs и vi. В режиме vi просто dw для удаления слова или cw для изменения слова. установите -o vi, чтобы перейти в режим vi. Вероятно, есть эквивалент режима emacs.
man readline - это справочник по клавиатуре bash, а специальные версии bash для readline находятся в man bash.
Из man bash:
COMP_WORDBREAKS
The set of characters that the Readline library treats as word separators when
performing word completion. If COMP_WORDBREAKS is unset, it loses its special
properties, even if it is subsequently reset.
При изменении этого параметра должны измениться символы, используемые в качестве разрывов слов, поэтому, если вы добавили '.' к текущему значению, тогда Ctrl-w удалит обратно до '.' вместо возврата к предыдущему месту.
Вы можете попробовать поменять местами слова, чтобы поставить деталь blahdeblah
в конце строки (с помощью Esc-T), а затем удалите конец строки:
mv [вкладка] [вкладка]
mv mylongfilename.blahdeblah.txt mylongfilename.blahdeblah.txt
[Esc-T] (поменять местами последние два слова перед курсором)
mv mylongfilename.blahdeblah.txt mylongfilename.txt .blahdeblah
[Ctrl-w]
mv mylongfilename.blahdeblah.txt mylongfilename.txt
Предполагая, что у вас есть довольно много таких операций «mv», которые нужно выполнить в этом каталоге, почему бы не написать сценарий короткого перевода, например, «sed»?
Вы найдете некоторые уловки Вот. Но не позволяйте этому ограничивать вас, но все это означает поиск еще нескольких sed и awk.