neovim - なぜ vim は関数に E488: 末尾の文字を返すのですか?

okwaves2024-01-25  7

保存時に Python ファイルをフォーマットするために yapf コマンドを実行しようとしているので、このコマンドを呼び出す関数を作成しました。

function Format_python_file()
    silent :!yapf --style="{based_on_style: pep8, indent_width: 4}" -i %
    silent :e %
endfunction

autocmd BufWritePost *.py call Format_python_file() <afile>

確かに、関数内のどの行がこのコマンドを引き起こしているのかを特定できるようです。それを試してみましたか?

– ジェレミーのプロフィール

2020 年 9 月 5 日 2:14

私はそう思いますこれは yapf コマンドを実行する最初の行ですが、修正方法がわかりません。

– エンリケ・ヴィタル

2020 年 9 月 5 日 2:30



------------------------

問題は autocmd 行にあり、末尾に <afile> が付いています。

実際、私が見たメッセージはそれについて非常に明確です:

Error detected while processing BufWritePost Autocommands for "*.py":
E488: Trailing characters: <afile>

<afile> をドロップするだけで済みます。関数自体はすでに現在のバッファ上で動作しており、現在のファイルへの引数やその他の参照は必要ありません。

また、最初にクリアされる augroup 内に autocmd を配置することをお勧めします。そうすれば、ソース ファイル (vimrc など) をリロードすると、)、重複した autocmd は作成されません。

この autocmd を設定するよりクリーンな方法は次のとおりです。

augroup python_yapf
    autocmd!
    autocmd BufWritePost *.py call Format_python_file()
augroup END

2

これは機能しますが、ファイルを保存して :x または ZZ を使用して vim を終了すると、なぜ機能しないのですか?

– エンリケ・ヴィタル

2020 年 9 月 5 日 11:53

<afile> を使用すると機能しますか? yapf コマンドで?例:silent :!yapf --style="{based_on_style: pep8, indent_width: 4}" -i

– フィルブランデン

2020 年 9 月 5 日 14:34

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。