터미널 버퍼의 자동 완성 단어

터미널 버퍼의 자동 완성 단어

vim및 와 같은 편집기 에서는 (vim) 또는 (emacs)와 같은 단축키를 사용하여 동일한 버퍼에 있는 다른 단어를 사용하여 현재 단어의 자동 완성을 수행할 emacs수 있습니다 .C-pM-/

쉘에서 동일한 기능을 달성하는 것이 가능합니까? 이전 명령의 출력에 일부 단어가 표시되고 다른 명령을 입력하는 동안 해당 단어를 빠르게 자동 완성하고 싶습니다.

명확성을 위해 예를 들면 다음과 같습니다.

$ ls
Desktop/  Mail/  music/  osx@  something_with_a_pretty_long_name

$ someth

여기에서 단축키를 누르고 내가 입력하는 내용을 자동 완성할 수 있기를 원합니다 something_with_a_pretty_long_name.

편집자: 사진. 파일 이름을 사용하는 것은 내가 추구하는 것에 대한 끔찍한 예입니다. 다음 두 번째 예를 고려하십시오.

$ cat /var/log/something.log
[19:30] Service started
[19:35] Something else happened

$ happ

내 터미널 버퍼에 표시되기 때문에 "happ"을 "일어났음"으로 자동 완성할 수 있습니다. 이것이 내가 추구하는 바가 명확해지기를 바랍니다.

답변1

짧은 대답: 아니요, 클래식 쉘에는 해당되지 않습니다. 일반적으로 zshbash과 터미널은 서로 다른 엔터티이기 때문입니다.

긴 대답: 아마도요. 일반적으로 명령을 입력하고 키를 누릅니다 Enter. 이는 이제 쉘입니다.포크그리고 지정된 명령을 실행합니다. 그런 다음 껍질에는아니요무슨 일이 일어나고 있는지 알면, 쉘은 터미널이나 다른 것에 쓰는 다른 프로그램을 시작하는 경우 터미널에 무엇을 쓸지, 실행된 프로그램이 무엇을 하는지 알 수 없습니다.

문제에 대한 가능한 해결책은 두 가지가 있습니다.

  1. 실행된 명령의 모든 출력을 캡처하고 목적을 달성하기 위해 어떤 방식으로든 사용합니다(완료할 수 있지만 수행해서는 안 됨).
  2. 다른 터미널 지원 사용'마치다'"쉘 버퍼"에서.

2에 대한 해결책은 예를 들어 emacs를 사용하고 일반적으로 터미널에서 작업하는 것처럼 multi-term사용하는 것 M입니다 . /다른 터미널에서도 유사한 솔루션을 제공할 수 있습니다.

그런데 이 마무리가 꼭 필요한가요? 이제 쉘 완성을 통해 매뉴얼 페이지, 명령, PID, 소켓, 명령 옵션, 원격 시스템의 파일 경로 등을 완료할 수 있습니다. 이는 귀하의 사용 사례에 충분할 수도 있고 특정 문제에 맞게 향상될 수도 있습니다.

답변2

http://www.iterm2.com/#/section/features/autocomplete

iterm2가 바로 당신에게 필요한 것입니다. 안타깝게도 Mac에서는 작동합니다.

그러나 터미널이기 때문에 linux/unix에 ssh를 통해 연결할 수 있으며 여전히 작동합니다.

답변3

당신은 이것을 할 수 있습니다을 더한tmux를 사용하여 출력을 캡처하고 fzf를 사용하여 퍼지 선택을 할 수 있습니다.

을 더한

답변4

이는 귀하가 기대했던 답변이 아닐 수도 있지만 일부 요구 사항을 충족할 수도 있습니다.

TAB을 사용하여 $PATH의 명령(또는 내부 명령)을 자동 완성할 수 있으므로 파일 이름이 실행 가능하고 $PATH에 있으면 자동 완성됩니다.

실행할 수 없는 파일 이름을 자동 완성하려면 " ."(점, 공백(또는 점 대신 아무 것도)), 파일 이름 및 탭 부분을 입력하면 됩니다. 이렇게 하면 명령을 실행하고 있다고 믿고 파일 이름을 명령에 대한 인수로 전달하도록 쉘을 속일 수 있습니다. Tab 키를 누르면 파일 이름이 자동으로 완성되지만 앞의 점+공백을 제거해야 할 수도 있습니다.

또 다른 가능성은 다음을 사용하는 것입니다.BASH 완료 기능. 이는 단순한 파일 이름 이상의 경우에 자동으로 수행될 수 있습니다.

관련 정보