파일을 열 때 vi의 커서 위치

파일을 열 때 vi의 커서 위치
vishex ()
{ 
    echo '#!/bin/bash' > $1;
    chmod +x $1;
    vi $1
}

위 함수의 목표는 bash 스크립트를 빠르고 편안하게 생성할 수 있는 별칭을 갖는 것입니다. 파일을 열 때 커서가 Shebang 라인이 아닌 아래 라인에 위치하도록 하고 싶습니다. 비슷한 것을 시도했지만 echo 'blabla\n', echo "blala\n", printf "blala\n"결과가 없습니다.

답변1

이것을 사용하십시오 :

vishex () 
{ 
    [ -e "$1" ] || echo -e '#!/bin/bash\n\n' > "$1";
    chmod +x "$1";
    vi "+normal G" +startinsert "$1"
}
  • [ -e "$1" ]스크립트가 이미 존재하는지 확인하십시오. 그렇다면 echo덮어쓰지 않습니다.
  • -e\necho에서는 개행 과 같은 백슬래시 이스케이프를 해석할 수 있습니다 . 그런 다음 shebang 줄 뒤에 2개의 줄 바꿈을 삽입합니다.
  • +normal GG파일의 마지막 줄로 이동하는 ex 명령을 실행합니다 .
  • +startinsert삽입 모드로 직접 전환하십시오(언급된 질문에 없으므로 그대로 둘 수도 있습니다).

따라서 실행하면 vishex script다음과 같습니다.

#!/bin/bash

<- cursor is here
~
[...]
~
-- INSERT --                                                               3,1           All

답변2

당신의 가정실제로는, 맨페이지에서:

+[num]   For  the  first file the cursor will be positioned on line "num".
         If "num" is missing, the cursor will be positioned  on  the  last line.

따라서 다음을 사용하십시오.

vi + "$1"

관련 정보