한때 유닉스를 아주 잘하는 동료가 있었습니다.
그는 Vi 키 바인딩을 사용하여 쉘 명령을 편집하는 방법을 보여주었습니다.
그는 명령을 파일에 넣어서 내가 로그인할 때마다 실행됩니다.
그 이후로 나는 다른 프로젝트로 넘어갔습니다.
아쉽게도 어떻게 설정했는지 기억이 나지 않습니다.
Vi 키 바인딩을 사용하여 터미널에서 명령을 편집하는 방법을 아는 사람이 있습니까?
이 설정을 영구적으로 만들려면 어떻게 해야 합니까?
답변1
당신은 지금까지의 가장 큰 기능에 대해 이야기하고 있습니다!
vi 명령을 사용하면 파일에 다음을 추가하여 셸 명령(및 명령 기록)을 편집할 수 있습니다 .bashrc
.
set -o vi
명령줄에서 명령을 실행하여 현재 세션에만 영향을 미칠 수도 있습니다.
Bash를 사용하지 않는 경우 해당 rc 파일을 쉘로 바꾸십시오.
이를 통해 vi 명령을 사용하여 모든 명령을 편집할 수 있습니다.
(누른 후) 기록을 사용 j하고 찾아볼 수도 있습니다 .kESC
/(다음 클릭 ESC)을 사용하여 이전 명령을 검색 할 수도 있습니다 .
즉, cp
10분 전에 실행한 매우 긴 명령을 찾으려면 다음을 수행하십시오.
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가 아닌 선호하는 편집기를 사용합니다 .
(개인적으로 저는 대부분의 편집에 vi(실제로는 vim)를 사용하지만 set -o emacs
쉘에 있는 것을 선호합니다. 삽입 모드를 전환하는 것은 파일 편집에는 좋지만 대화식 명령에는 불편합니다. YMMV.)
답변3
@jahroy가 게시한 내용을 사용하여 줄 편집 명령을 변경할 수 있지만 이전 명령을 편집기(FCEDIT 또는 EDITOR)에 넣는 set -o vi
이 명령(bash에서는 사용 가능하고 ksh에서는 사용 가능하지만 아마도 tcsh는 아닐 것임)을 생각할 수도 있습니다. fc
vi)로 설정한 다음 편집기를 종료할 때 명령을 실행했을 수 있습니다. 자세한 내용은 맨페이지를 참조 help fc
하거나 시도해 보십시오.
답변4
사실, 이것은 실제로 가장 큰 기능입니다. 더있다:
라는 파일을 만듭니다.
.editrc
라인을 포함
bind -v
편집 라인는 readline과 유사한 서비스를 제공하는 BSD 라이센스 버전 라이브러리입니다. 이 .editrc는 MySQL의 명령줄 셸이나 readline을 사용하지 않는 모든 응용 프로그램에서 키 바인딩을 vi 모드로 설정합니다.
세월이 흐르면서 나는 약간 건망증이 생겼습니다. 그래서 내 .zshrc일부 래퍼 소스 제공vi 모드의 경우 명령줄에서 현재 모드를 표시합니다. 이것은 훌륭합니다.
zsh를 입력할 수 있다는 것을 알고 있습니다.
bindkey -L
그리고 키 바인딩 목록을 가져옵니다. bash에도 비슷한 것이 있어야 한다고 확신합니다. 모든 vi 키가 기본적으로 바인딩되어 있는 것은 아닙니다. 적합하다고 생각되는 방식으로 바인딩하면 경주할 준비가 됩니다.