명령 을 실행했고 find
이제 결과 출력의 한 줄을 인수로 사용하려고 한다고 상상해 보세요.
$ find ..
fileA
fileB
$ vi <CURSOR> # now do what to achive:
$ vi fileB
현재 해결 방법: 더블 클릭문서 B(선택 항목 자동 확장)을 선택하고 마우스 가운데 버튼을 누릅니다(X에 붙여넣기). 작동하지만 마우스를 사용해야 합니다.
가능한 해결책:
- 탭 완성 — 대부분의 셸에서 작동하지만 파일에만 적용됩니다.
- 껍질에 걸기 - 예scm_breeze;이것은 내가 찾고 있는 것과 거의 비슷하지만 git으로 제한됩니다.
- 사용
screen
- 매우 가깝지만 여전히 많은 키 입력이 있습니다. 그리고 그것은screen
… - bash 변수(GMaster)에 출력 저장 - find 명령이 한 줄을 출력하는 경우에만 작동합니다. 예제와 같이 두 번째 행에 어떻게 액세스할 수 있나요?
- 편집기에 명령 보내기(jasonwryan) - 작동하지만 명령을 두 번 실행합니다. 이는 시간이 많이 걸리거나 심지어 불가능할 수도 있습니다.
- emacs Dynamic Abbrev Expansion 사용(Arkadiusz Drabczyk, Michael Vehrs) - 이것이 제가 찾고 있는 것이지만 emacs로 시작하고 싶지는 않습니다.
나를 위한 해결책: "동적 약어 확장". 이제 내가 찾고 있는 이 함수의 이름을 알았습니다. 다른 소프트웨어에서 "dabbrev-expand"를 얻는 방법에 대한 새로운 질문을 시작하겠습니다.
https://unix.stackexchange.com/questions/281298/list-of-sofwares-inspired-by-emacs-dabbrev-expand.
나에게 가장 적합한 솔루션의 비전: 프롬프트 모드와 같은 것독사또는이동이 용이함Vim에서는 현재 터미널의 출력에서 텍스트를 추출합니다.
답변1
를 사용하여 emacs
잘못된 쉘을 시작하고 명령을 실행하십시오. 출력은 셸 버퍼에서 사용할 수 있으며 일반 명령을 사용하여 선택할 수 있습니다. 또는,
select file in $(find <whatever>); do vi $file; break; done
emacs
이 방법은 편집자를 이미 알고 있는 경우 더 실용적입니다. Emacs
임의의 "열등한 프로세스"를 실행할 수 있습니다. 입력과 출력이 emacs 버퍼에 연결된 대화형 명령입니다. 따라서 M-x shell-mode
잘못된 쉘을 시작하면 명령을 입력 find
하고 해당 명령의 출력을 버퍼에서 사용할 수 있습니다.
$ find .. -name "*.sh"
../self.sh
../scheme/random.sh
../scheme/sample.sh
이제 관심 있는 파일로 커서를 이동하고 입력하여 M-x find-file-at-point
다른 버퍼에 있는 파일을 편집합니다.
답변2
출력이 필요한 명령을 다시 실행해도 괜찮다면 다음을 파일에 추가하세요 .zshrc
.
# Load completion menu feature.
zmodload zsh/complist
# `fc -e :` re-runs the last history entry.
# ${(f)…} splits the string on newlines.
copy-output() compadd ${(f)"$( fc -e : 2> /dev/null )"}
# Create a completion menu widget & bind it.
zle -C copy-output menu-select copy-output
bindkey '^[!' copy-output
이제 를 눌러 Alt!이전 명령을 다시 실행하고 새 명령줄에 삽입할 내용을 선택할 수 있는 메뉴를 얻을 수 있습니다.
따라서 귀하의 예를 들면 다음과 같습니다.
% find ..
fileA
fileB
% vi <ALT-!>
fileA fileB
출력은 명령줄 아래에 표시되며 Tab또는 화살표 키를 사용하여 원하는 출력을 선택할 수 있습니다. 여러 개를 선택하려면AltA
답변3
귀하의 요청을 구체적으로 수행하기 위해 Zsh 플러그인을 만들었습니다.https://github.com/psprint/ztrace