8

私は次の設定をしています:

mkdir /1
mkdir /1/2
mkdir /1/2/3
ln -s /1/2/3 /1/3

もしそうならcd /1/3、そしてpwd、私は得る/1/3。を使用するpwd -Pと、 を取得/1/2/3したりpwd -L、強制したりできます/1/3

VIM で、 を取得する方法を探してい/1/3ます。
でファイルを開き、 の/1/3/foo.txtようなものを使用するとfnamemodify(bufname(winbufnr(0)), ':p:h')、 が返されます/1/2/3
提供するのと同じディレクトリを提供するようにどのように指示できpwdますか?

4

2 に答える 2

9

経由以外ではできないようですsystem('pwd -L')vim_use メーリング リストによると、最近のVim は自動的にシンボリック リンクを解決します。

:h E773根拠については前後のテキストを参照してください。Vim が解決されたファイル名の代わりにシンボリック リンクを使用した場合、同じファイルが 2 つの異なる名前で 2 つのバッファーで開かれる可能性があり、Vim はスワップ ファイルがどこにあるべきかを把握しようとして混乱します。も参照:h version7.txt:

Unix: シンボリック リンクを介してファイルを編集すると、スワップ ファイルはシンボリック リンクの名前を使用していました。同じファイルを 2 回編集したことが検出されるように、実際のファイルの名前を使用するようになりました。

于 2009-04-02T18:26:45.383 に答える
1

簡潔な答え:

マウント バインディングをシンボリック リンクの代わりに使用できる場合があります。を参照してくださいman mount

長い答え:

マウントされたパーティションへの短いシンボリックリンクがあるため、同様の問題がありました。

/e -> /media/iam/ext4test

symlink もあります~/.vimrc -> /e/configs/.vimrc

含まれているディレクトリで Netrw にポップしようとして問題が発生していました (私は に着陸していまし~たが、ブックマークなどを使用したいという願望を念頭に置いて、それを回避するための堅牢な方法を見つけることができませんでした)。

私の解決策は、マウントポイントを変更する可能性を検討した後、マウントポイントを追加できるということでした。その後unlink e、 を使用しmount --bind /media/iam/ext4test /eました。

今、私が入ってい/e/configs/.vimrcて使っている:edit .(または:e.その他の) 場合、Netrw を含むディレクトリにポップします。

編集:

このコマンドmount --bindは、一時的な変更を行います。永続的なバインド マウントの場合、次を に追加します/etc/fstab

# <file system>      <mount point>  <type>  <options>  <dump>  <pass>
/media/iam/ext4test  /e             none    bind       0       0
于 2014-07-17T01:23:23.293 に答える