VI 키를 사용하여 UNIX에서 쉘 명령 편집

VI 키를 사용하여 UNIX에서 쉘 명령 편집

예전에는 UNIX를 정말 잘 다루는 동료가 있었습니다.

그는 Vi 키 바인딩을 사용하여 쉘 명령을 편집하는 방법을 보여주었습니다.

그는 내가 로그인할 때마다 실행되는 파일에 명령을 저장했습니다.

그 이후로 저는 다른 프로젝트로 옮겼습니다.

불행히도 나는 이것을 설정하는 방법을 기억하지 못합니다.

Vi 키 바인딩을 사용하여 터미널에서 명령을 편집하는 방법을 아는 사람이 있습니까?

해당 설정을 어떻게 영구적으로 만들 수 있나요?

답변1

당신은 지금까지의 가장 큰 기능에 대해 이야기하고 있습니다!

vi 명령을 사용하여 파일에 다음을 추가하면 셸 명령(및 명령 기록)을 편집할 수 있습니다 .bashrc.

set -o vi

명령줄에서 해당 명령을 실행하여 현재 세션에만 영향을 미칠 수도 있습니다.

bash를 사용하지 않는 경우 쉘을 적절한 rc 파일로 대체하십시오.


이를 통해 vi 명령을 사용하여 모든 명령을 편집할 수 있습니다.

j와 를 사용하여 k기록을 이동할 수도 있습니다 ( 를 누른 후 ESC).

/를 누른 후 를 사용하여 ESC이전 명령을 검색 할 수도 있습니다 .

즉, cp10분 전에 수행한 매우 긴 명령을 찾으려면 다음을 수행하십시오.

ESC/CPENTER

n그런 다음 및 를 사용하여 기록에서 일치하는 모든 명령을 순환할 수 있습니다 N.

이 모든 덕분에 명령줄 생산성이 10조 배 더 높아졌습니다!

답변2

bash를 사용하고 있다면 jahroy와 evil otto가 이미 답변했듯이 다음을 사용할 수 있습니다.

set -o vi

bash가 vi 스타일 편집 명령을 사용하도록 합니다.

이 작업을 완료한 후에는 Esc v현재 명령줄의 복사본이 포함된 임시 파일을 입력하여 vi 편집기를 시작할 수 있습니다. 명령을 편집할 수 있으며 여러 줄로 바꿀 수도 있습니다. 파일( )을 저장하면 :wq쉘이 편집된 명령을 실행합니다.

너가 선호한다면

set -o emacs

Ctl-XCtl-E동일한 작업을 수행하는 데 사용할 수 있습니다 . $EDITOR반드시 emacs가 아닌 선호하는 편집기를 사용합니다 .

set -o emacs(개인적으로 저는 대부분의 편집 작업에 vi(실제로는 vim)를 사용하지만 셸을 선호합니다. 삽입 모드를 전환하는 것은 파일 편집에는 좋지만 대화형 명령에는 불편합니다. YMMV.)

답변3

@jahroy가 게시한 대로 줄 편집 명령을 변경하는 데 사용할 수 있지만 이전 명령을 편집기(FCEDIT 또는 EDITOR)에 넣는 명령(bash에서 사용 가능하고 ksh에서는 사용 가능하지만 아마도 tcsh는 아닐 것임)을 set -o vi생각할 수도 있습니다. fc, vi로 설정했을 수도 있음) 그런 다음 편집기를 종료할 때 명령을 실행합니다. 맨페이지나 help fc자세한 내용을 참조하거나 직접 사용해 보세요.

답변4

실제로 이것은 실제로 가장 큰 기능입니다. 하지만 더 많은 것이 있습니다:

라는 이름의 파일을 생성합니다.

.editrc

라인을 포함하는

bind -v

편집라인는 readline과 유사한 서비스를 제공하는 BSD 라이센스 버전 라이브러리입니다. .editrc는 MySQL의 명령줄 셸이나 readline을 사용하지 않는 모든 응용 프로그램에서 키 바인딩을 vi 모드로 설정합니다.

나는 세월이 지나면서 다소 건망증이 생겼습니다. 그래서 내 .zshrc일부 래퍼 소스 제공vi 모드의 경우 현재 명령줄에 어떤 모드가 있는지 표시합니다. 좋네요.

나는 zsh에서 당신이 입력할 수 있다는 것을 안다

bindkey -L

키 바인딩 목록을 가져옵니다. 나는 bash에도 비슷한 것이 있어야 한다고 확신합니다. 모든 vi 키가 기본적으로 바인딩되어 있는 것은 아닙니다. 당신이 적합하다고 생각하는 방식으로 묶고 경주를 시작하십시오.

관련 정보