/usr/bin/에 기존 명령의 별칭 버전을 배치합니다.

/usr/bin/에 기존 명령의 별칭 버전을 배치합니다.

나는 사용한다많이, 난 내가 무엇을 해야할지 알아삽입 모드에서 vim 시작. 그래서 vii내 파일에 별칭이 있습니다 .bash_aliases.

반면에 나는자식또한 많이 있습니다 .gitconfig.

[core]
    editor = vi

커밋 메시지를 작성하려면 매번 vi 편집기가 열리고 삽입 모드로 들어가야 합니다. 그래서 vi대체를 사용할 생각을 했고 vii그렇게 했습니다.

하지만 문제는 이 작업을 수행할 때 git commitvim을 삽입 모드로 여는 대신 다음과 같은 오류가 발생한다는 것입니다.

error: cannot run vii: No such file or directory
error: There was a problem with the editor 'vii'.
Please supply the message using either -m or -F option.

.bash_aliases이는 bash와 아무 관련이 없음에도 불구하고 git이 파일을 찾지 않는다는 것을 분명히 보여줍니다 . 그것은 하나가 있는지 직접 확인합니다 /usr/bin/vii. 그렇다면 실행해 보세요.

질문

vi의 별칭 버전을 넣을 수 vii있나요 /usr/bin/?

(그리고 그것을 사용하도록 제안하지 마십시오 git commit -m "<commit message>". vim을 삽입 모드로 설정해야 하는 다른 상황이 있습니다.)

답변1

별칭은 현재 각 쉘 환경 내부에 있습니다.확장하다현재 실행 중인 셸( bash귀하의 경우)에 의해 실행되므로 터미널에 입력/붙여넣기하여 실행하는 작업에만 영향을 미칩니다.

여기에는 최소한 두 가지 옵션이 있습니다.

  • 만들다포장지이름이 지정된 스크립트가 vii실행되며 해당 스크립트 vim -c 'startinsert'를 넣는 것이 좋습니다 /usr/local/bin/(또는 $HOME/bin해당 스크립트가 존재하고 검색 경로에 있는 경우). 스크립트에는 다음 사항만 포함되어야 합니다.

    #!/bin/sh1
    exec vim -c 'startinsert' "$@" 2
    

    (을 실행하여 실행 가능하게 만드십시오 .) /other 프로그램 의 구성 chmod +x /usr/local/bin/vii에 따라 래퍼 스크립트(예: )에 대한 전체 경로를 지정해야 할 수도 있습니다 .PATHgiteditor = /usr/local/bin/vii

  • vim을 항상 삽입 모드로 시작하게 하려면 startinsert끝에 를 추가하여 구성하세요 .vimrc.


1   "she-bang" 줄을 로 작성할 수 있지만 #!/bin/bashisms 가 포함되지 않은 스크립트에서는 필요하지 않습니다 bash.
2는   $@ 공백이 포함된 인수로 스크립트가 호출되지 않도록 큰따옴표로 묶어야 합니다. startinsert인용은 필요하지 않습니다(하지만 나쁘지는 않습니다).

답변2

편집기 변수를 다음으로 설정하십시오.

[core]
    editor = vim -c 'startinsert'

다른 대답으로는 아니요, 별칭은 셸의 개념이기 때문에 디렉터리에 별칭을 배치할 수 없습니다. 일반적인 접근 방식은 지정된 명령을 실행하기 위한 적절한 래퍼 스크립트를 만드는 것입니다.

#!/bin/sh
vim -c 'startinsert' "$@"

스크립트를 다른 이름으로 저장하고 vii실행 가능하게 만듭니다. 원하는 곳에 스크립트를 배치할 수 있지만 일반적으로 이러한 스크립트는 전역 디렉터리가 아닌 $HOME폴더에 저장됩니다.$HOME/bin

관련 정보