.vimrcの自動chmod行に欠陥があります

.vimrcの自動chmod行に欠陥があります

.vimrc私のファイルに適した行を見つけましたここ#!これにより、保存時にライン1で始まるすべてのファイルが実行可能になります。次の行は次のとおりです。

au BufWritePost * if getline(1) =~ "^#!" | silent !chmod +x <afile> | endif

構文エラーが発生しない限り、これはうまく機能します。しかし、構文エラーのあるファイルを保存しようとすると、行1行にshebang行があると、保存時にvimにエラーが発生します。この行をコメントアウトすると、この動作は完全に消えます。私はこの問題を診断するためにvimの内部動作について十分に知りません。なぜ誤動作を引き起こすのですか?これをより確実にする方法はありますか?それともこの行を完全に捨てるべきですか?

編集:より具体的に言うと、問題はまたはを:w使用するのではなく、編集を続行するときにのみ発生します。画面の下部に表示される1〜2行のエラーメッセージは、ポップアップになると画面が1〜2行上に移動するようです。:wq:x

編集2:同じWebページで他の解決策も試しました。

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コマンドラインを除いて、ターミナル画面(行番号を含む)が完全に消去されます。

ベストアンサー1

おすすめ記事