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. 여기에서 bash단어 스타일(단어 alnum만)을 사용할 수 있습니다( bashWord 위젯 사용 방법 참조).밖의Ctrl+WAlt+B, Alt+D...고려해 보세요성격).

답변4

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

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

이렇게 하면 쉼표를 누른 후 점이 이전 명령의 마지막 인수를 제공하는 Esc방식과 유사하게 이 작업이 수행됩니다 .Esc

관련 정보