Sunday, September 16, 2012

Re: Buffer name changed after :edit command

On 16/09/12 15:18, Timothy Madden wrote:
> Hello
>
> In some situation if I try to edit a file like with
> :edit plugin/script.vim
> I may end up with a buffer name like '../.vim/plugin/script.vim'
>
> Note though two paths are equivalent, assuming the current directory is
> named ".vim", still the buffer names are not the same in a literal sense.
>
> This will happen when I already have the file opened (or listed) with
> the long name (../.vim/plugin/script.vim), then I try to :edit it in a
> different window with the short name.
>
> In my script I would like to use :MkVimball command plugin from the
> standard vimball plugin, and if I ran into this problem than MkVimball
> will create for example a file like ../../src/vim/plugin/scriptname.vim
> in the vimball archive. Even if the filename I pass to MkVimball really
> is the right one, plugin/scriptname.vim.
>
> For this to trigger, the MkVimball command should be seen from within a
> :source'd script, and not directly from the command line. Anyway, I
> think this should not happen (actually, I find this a bug in the
> standard vimballPlugin, but that is another problem).
>
> Is there a way to know if a file is already loaded/listed in a buffer,
> with a modified path name like ../dir/script.vim instead of script.vim ?
>
> Are there other cases where such a different path name may exist ?
>
> Thank you,
> Timothy Madden
>

Vim identifies files by their full path, but displays them (e.g. on the
statusline) by a shorter path if possible. If you have several windows
on a single buffer, but with different "local current directories", it
may happen that Vim can shorten the name in one window but not in the
other. However it should display all statuslines relative to what is the
current directory now: if you change windows, and the LCDs are
different, statuslines may change.

Normally any single file is opened in only one buffer, regardless of in
how many windows (zero or more) it is displayed. If you type

:ls

Vim will tell you which buffers are opened; add an exclamation mark if
you want to see also the so-called "unlisted" buffers. No file should
appear more than once in the list, even under different paths; if it
does, it is probably a bug.

Different paths may exist if there are soft or hard links: in the case
of soft links, IIUC Vim will resolve them and store the path after
resolving all the soft links; if there are hard links (different
directory entries, possibly in different directories, pointing to a
single data area on disk) it is not always obvious which path has
priority, and I don't know what Vim does. Hard links are a
well-documented feature of Unix-like systems; on Windows they exist
also, at least on NTFS filesystems, but the feature is poorly documented
if at all. On Unix the . and .. directory entries are implemented as
hard links; OTOH on DOS these entries were present as an exception to
the fact that on FAT filesystems, different paths pointing to the same
data cluster were a case of "crossed paths" error usually leading to
data corruption.


Best regards,
Tony.
--
ARTHUR: You fight with the strength of many men, Sir knight.
I am Arthur, King of the Britons. [pause]
I seek the finest and the bravest knights in the land to join me
in my Court of Camelot. [pause]
You have proved yourself worthy; will you join me? [pause]
You make me sad. So be it. Come, Patsy.
BLACK KNIGHT: None shall pass.
The Quest for the Holy Grail (Monty
Python)

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

No comments: