Иногда нам просто нужно ввести немного другое имя при использовании mv/cp/convert
. Например,
convert IMG-long-number.jpg IMG-long-number.png
Как мне повторить IMG-long-number.jpg перед тем, как набирать IMG-long-number.png, чтобы мне пришлось внести лишь небольшие изменения?
Это похоже наКак повторить текущий введенный параметр в консоли bash?но для zsh/zle.
решение1
!#$<Tab>
У меня работает. Дано:
$ echo a
Ввод !#$
с последующим нажатием Tabрасширяет !#$
до a
. Дополнение Tab также перечисляет другие варианты, если вы попробуете выполнить операцию с :
:
$ echo a !#$:
& -- repeat substitution
A -- absolute path resolving symbolic links
Q -- strip quotes
a -- absolute path
c -- PATH search for command
e -- leave only extension
g -- globally apply s or &
h -- head - strip trailing path element
l -- lower case all words
q -- quote to escape further substitutions
r -- root - strip suffix
s -- substitute string
t -- tail - strip directories
u -- upper case all words
решение2
Альтернатива, которую следует иметь в виду: этого делать не нужно.
После использования завершения для получения
преобразовать IMG-длинный-номер.jpgпросто отредактируйте это в
преобразовать IMG-длинное-число.{jpg,png}
решение3
Я бы использовал Ctrl+Alt+_, что копирует предыдущее слово ( copy-prev-word
виджет). После копирования вы можете использовать Backspaceдля редактирования расширения копии.
Или используйте Ctrl+Wдля удаления целиком. По умолчанию Ctrl+Wудаляет целые слова (определяются как alnums+$WORDCHARS), но вы можете изменить поведение по требованию с помощью виджета select-word-style
.
В ~/.zshrc
:
autoload select-word-style
zle -N select-word-style
bindkey '\eW' select-word-style
Затем вы можете выбрать другойстиль словас Alt+Shift+W. Вы можете использовать bash
стиль слова (только слова и числа) здесь (ссылка на то, как bash
виджеты словКроме какCtrl+Wнравится Alt+B, Alt+D... рассмотретьслова).
решение4
Похоже на то, что предложил @muru - !#$<TAB>
. Но я также сделал привязки вроде этой в моем .zshrc :
bindkey -s "^[," "!#\$^I"
Таким образом, нажатие Esc
«запятой» сделает это за вас, аналогично тому, как Esc
нажатие «точки» вернет вам последний аргумент из предыдущей команды.