태그 보관물: line-editor

line-editor

bash 콘솔에서 현재 입력 한 매개 변수를 반복하는 방법은 무엇입니까? 큰 부분을 다시 입력해야합니다 mv foo/bar/poit/zoid/narf.txt

방금 다음 줄을 따라 무언가를 입력하고있었습니다.

mv foo/bar/poit/zoid/narf.txt

갑자기 깨달았어요, 저 매개 변수의 큰 부분을 다시 입력해야합니다

mv foo/bar/poit/zoid/narf.txt foo/bar/poit/zoid/troz.txt

tabcompletion에도 불구하고 상당히 아 pain니다. 텍스트와 middleclick을 마우스로 선택하여 매개 변수를 붙여 넣을 수는 있지만 충분하지 않습니다. 나는 키보드에 남아 있고 싶다.

키보드를 사용하여 줄의 현재 매개 변수를 복사하여 붙여 넣는 방법이 있습니까?



답변

미리 계획 한 경우 괄호 확장을 사용 합니다. 이 경우 :

mv foo/bar/poit/zoid/{narf,troz}.txt

기본 readline단축키를 사용하는 또 다른 방법은 다음과 같습니다 .

  • mv foo/bar/poit/soid/narf.txt: 시작
  • Ctrlw: unix-word-rubout삭제foo/bar/poit/soid/narf.txt
  • Ctrly, Space, Ctrly: yank, 공간, yank다시 얻을 수 있습니다mv foo/bar/poit/soid/narf.txt foo/bar/poit/soid/narf.txt
  • Metabackspace, Metabackspace: backward-kill-word마지막 두 번 삭제narf.txt
  • troz.txt: 다른 꼬리 부분을 입력하십시오

bash쉘을 사용하여 사소하지 않은 시간을 보낸 다면 주기적으로 기본 단축키 목록을 읽고 일상적으로 배우고 통합하는 데 유용한 몇 가지를 선택하는 것이 좋습니다. 매뉴얼의 8 장bash 을 시작하는 것이 좋습니다. 지름길을 알면 실제로 효율성을 높일 수 있습니다.


답변

히스토리 확장은 실제로 이벤트 지정자를 사용하여 현재 명령에서도 작동합니다 !#. $방금 입력 한 매개 변수를 얻으려면 마지막 인수–에 단어 지정자와 이것을 결합하십시오 . 그리고 그 위에 모든 일반 수정자를 사용할 수 있습니다. 예를 들어, 멀리 떨어진 디렉토리에서 파일 이름을 바꾸는 경우 다음과 같이 입력하면됩니다.

mv path/you/do/not/want/to/type/twice/oldname !#$:h/newname


답변

귀하의 예에서와 같이 다음 구성을 사용할 수 있습니다.

mv foo/bar/poit/zoid/{narf.txt,troz.txt}

또는 심지어 ( Ansgar Esztermann 제안 ) :

mv foo/bar/poit/zoid/{narf,troz}.txt

대신 긴 주소를 두 번 입력 / 복사 붙여 넣지 마십시오.


답변

놀기 나는 이것을 작동 시켰습니다.

mv foo/bar/poit/zoid/narf.txt

히트 Enter
마지막 매개 변수를 저장하려면 .

이제 마지막 줄을 다시 입력하십시오. 공백을 입력하고 마지막으로 사용한 매개 변수 사용을 얻으십시오.

Alt + .

오류를 유발하는 것을 싫어하지만이 사용 사례에서 작업을 수행합니다.


답변

변수를 쉽게 사용할 수 있습니다.

a=test.csv ; cp $a $a.bak

또는 당신의 경우 (주 탭의 경쟁이 작동 부분) :

a=foo/bar/poit/zoid/ ; mv ${a}narf.txt ${a}troz.txt


답변

나는 이것을 내 안에있다 ~/.inputrc:

"\ej":"!#:$\e^"

!#현재 줄이고 :$마지막 단어이며 \e^입니다 history-expand-line.


답변

zsh대해 다음 키 바인딩이 도움이된다고 생각합니다.

# Bind alt-m to insert previous word from the current line
bindkey '^[m' copy-prev-shell-word

# Bind alt-k to kill word before cursor in vi-style
bindkey '^[k' vi-backward-kill-word

나는 명중 그래서 AltM다음 마지막 인수를 반복합니다 AltK 나는 경로의 끝에 떨어져 부분을 삭제하려면.

다음 은 매핑 할 수있는 일부 동작에 대한 유용한 참조 입니다.