1

vim を使用して Python コードを編集し始めています。「.py」などのさまざまなサフィックスに従って、vim でコードをさまざまなフォルダーに保存したいと考えています。

それで、これをgvimrcファイルに追加しました(実際にMacVimを使用していますが、vimでも同じ問題が発生します)

au BufWritePre *.py :cd /Users/username/Documents/folder

これにより、 「.py」で終わるコードを保存する前に、毎回作業ディレクトリが/Users/username/Documents/folderに変更されると思います。

私がMacVimに入ったときに、新しいファイルを開き、次のように入力しました

print("Hello")

そしてそれを保存しました

:w hello_world.py

希望どおり、hello_world.pyという名前のファイルが/Users/username/Documents/folderに表示されました。vim の ":pwd" コマンドも " /Users/username/Documents/folder " を返しました。しかし、vimでhello_world.pyのファイル名を確認すると

:!echo %

それは返す

/Users/username/hello_world.py

予想されるファイル名の代わりに

/Users/username/Documents/folder/hello_world.py # expected filename

さらに、次のようなコードをアップグレードしようとすると

print("Hello")
print("World")

そしてそれを保存しました

:w

/Users/username/Documents/folderの下のhello_world.pyのコンテンツは変更されていません。しかし、同じhello_world.pyという名前の新しいファイルが/Users/usernameに表示されました。これは vim のファイル名と一致しています。

「.py」ファイルを保存する前に、gvimrc の autocmd スクリプトが作業ディレクトリを変更したと思いますが、ファイル名が作業ディレクトリと一致しない理由と、「.py」ファイルを特定のフォルダ。

4

1 に答える 1

0

私の場合 (Ubuntu 14.04 で Vim 7.4.52 を使用)、ファイルは一貫して CWD で作成されるため、autocmd はファイルの配置には影響しませんが、ディレクトリを変更します。内部的には、ファイルの最終的なディレクトリは、バッファの最初の書き込み時または名前付け時ではなく、バッファが作成されたときに決定されます ( によって証明されます)。:ls

私はあなたが望むものに近づくことができただけです

:au BufWritePost *.py file /Users/username/Documents/folder/%:t

ただし、CWD に初期ファイルが作成されます。

Vim がこれを (より適切に) 処理する必要があると思われる場合は、vim_dev メーリング リストで問題を提起してみてください。

于 2014-10-07T12:01:10.203 に答える