나는 사용한다윔많이, 난 내가 무엇을 해야할지 알아삽입 모드에서 vim 시작. 그래서 vii
내 파일에 별칭이 있습니다 .bash_aliases
.
반면에 나는자식또한 많이 있습니다 .gitconfig
.
[core]
editor = vi
커밋 메시지를 작성하려면 매번 vi 편집기가 열리고 삽입 모드로 들어가야 합니다. 그래서 vi
대체를 사용할 생각을 했고 vii
그렇게 했습니다.
하지만 문제는 이 작업을 수행할 때 git commit
vim을 삽입 모드로 여는 대신 다음과 같은 오류가 발생한다는 것입니다.
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
에 따라 래퍼 스크립트(예: )에 대한 전체 경로를 지정해야 할 수도 있습니다 .PATH
git
editor = /usr/local/bin/vii
vim을 항상 삽입 모드로 시작하게 하려면
startinsert
끝에 를 추가하여 구성하세요.vimrc
.
1 "she-bang" 줄을 로 작성할 수 있지만 #!/bin/bash
isms 가 포함되지 않은 스크립트에서는 필요하지 않습니다 bash
.
2는 $@
공백이 포함된 인수로 스크립트가 호출되지 않도록 큰따옴표로 묶어야 합니다. startinsert
인용은 필요하지 않습니다(하지만 나쁘지는 않습니다).
답변2
편집기 변수를 다음으로 설정하십시오.
[core]
editor = vim -c 'startinsert'
다른 대답으로는 아니요, 별칭은 셸의 개념이기 때문에 디렉터리에 별칭을 배치할 수 없습니다. 일반적인 접근 방식은 지정된 명령을 실행하기 위한 적절한 래퍼 스크립트를 만드는 것입니다.
#!/bin/sh
vim -c 'startinsert' "$@"
스크립트를 다른 이름으로 저장하고 vii
실행 가능하게 만듭니다. 원하는 곳에 스크립트를 배치할 수 있지만 일반적으로 이러한 스크립트는 전역 디렉터리가 아닌 $HOME
폴더에 저장됩니다.$HOME/bin