.vimrc
내 파일에 적합한 줄을 찾았습니다여기#!
이렇게 하면 저장 시 라인 1로 시작하는 모든 파일이 실행 가능해집니다. 다음 줄은 다음과 같습니다.
au BufWritePost * if getline(1) =~ "^#!" | silent !chmod +x <afile> | endif
구문 오류가 발생하지 않는 한 이는 훌륭하게 작동합니다. 하지만 구문 오류가 있는 파일을 저장하려고 하면 1행에 shebang 줄이 있으면 저장할 때 vim에 오류가 발생합니다. 이 줄을 주석 처리하면 이 동작이 완전히 사라집니다. 나는 이 문제를 진단하기 위해 vim의 내부 작동에 대해 충분히 알지 못합니다. 왜 오작동을 일으키나요? 이것을 더 확실하게 만들 수 있는 방법이 있습니까? 아니면 이 줄을 완전히 버려야 합니까?
편집: 좀 더 구체적으로 말하면 문제는 또는 를 :w
사용할 때가 아니라 편집을 계속할 때만 발생합니다 . 화면 하단에 나타나는 한두 줄의 오류 메시지는 팝업이 되면 화면이 한두 줄 위로 이동하는 것처럼 보입니다.:wq
:x
편집 2: 동일한 웹페이지에서 다른 솔루션도 시도했습니다.
function! SetExecutableBit()
let fname = expand("%:p")
checktime
execute "au FileChangedShell " . fname . " :echo"
silent !chmod a+x %
checktime
execute "au! FileChangedShell " . fname
endfunction
command! Xbit call SetExecutableBit()
:Xbit
이를 통해 vim에서 x 비트를 추가하는 데 사용할 수 있습니다 . 이렇게 하면 x 비트가 성공적으로 추가되지만 구문 오류가 있는지 여부에 관계없이 커서와 하단의 vim 명령줄을 제외하고 터미널 화면(줄 번호 포함)이 완전히 지워집니다.