我有以下设置:
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
给出的同一目录?
答案 0 :(得分:8)
看来你不能通过system('pwd -L')
。根据{{3}} Vim现在自动解析符号链接。
请参阅:h E773
周围的文字了解原理;如果Vim通过符号链接而不是已解析的文件名,则可以在两个不同名称下的两个缓冲区中打开相同的文件,并且Vim会在尝试找出交换文件的位置时感到困惑。另见:h version7.txt
:
Unix:通过符号链接编辑文件时,交换文件将使用该名称 符号链接。现在使用实际文件的名称,以便编辑相同的文件 检测到文件两次。
答案 1 :(得分:1)
您可以使用mount绑定作为符号链接的替代。见man mount
。
我遇到了类似的问题,因为我对已安装的分区有一个简短的符号链接
/e -> /media/iam/ext4test
我还有一个符号链接~/.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