zsh에서 현재 입력된 매개변수를 어떻게 반복하나요?

zsh에서 현재 입력된 매개변수를 어떻게 반복하나요?

때로는 를 사용할 때 약간 다른 이름을 입력해야 하는 경우도 있습니다 mv/cp/convert. 예를 들어,

convert IMG-long-number.jpg  IMG-long-number.png

IMG-long-number.png를 입력하기 전에 어떻게 IMG-long-number.jpg를 반복하여 약간만 조정하면 됩니까?

이는 다음과 유사합니다.bash 콘솔에서 현재 입력된 매개변수를 어떻게 반복합니까?하지만 zsh/zle의 경우.

답변1

!#$<Tab>나를 위해 작동합니다. 주어진:

$ echo a

입력한 !#$후 누르면 로 Tab확장됩니다 . 다음을 사용하여 작업을 시도하면 탭 완성에는 다른 옵션도 나열됩니다 .!#$a:

$ 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-long-number.jpg 변환
간단히 편집해서

IMG-long-number.{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. 여기에서 단어 스타일(단어 전용 alnums)을 사용할 수 있습니다. ( 단어 위젯이 bash어떻게 사용되는지에 대한 참조입니다.)bash이것 말고도Ctrl+W처럼 Alt+B... Alt+D고려단어).

답변4

@muru가 제안한 것과 유사합니다 - !#$<TAB>. 하지만 .zshrc에 다음과 같은 바인딩도 만들었습니다.

bindkey -s "^[," "!#\$^I"

그런 식으로 쉼표를 누른 다음 점을 누르면 이전 명령의 마지막 인수를 얻을 수 있는 Esc것과 유사하게 됩니다 .Esc

관련 정보