所以,我想编辑文件[1]
。问题是,我还有一个名为1
. 我还使用 cygwin 及其bash
shell、win32cmd
和 Linux。有时我使用 cygwin 的vim
,有时我使用 win32vim
和gvim
.
我找不到打开文件的一致方式[1]
。通常vim
会[1]
被视为一个文件 glob,并1
改为打开。
在linux中,:e [1]
失败,但:e \[1]
有效。在win32中,:e \[1]
失败。
我似乎陷入了一个曲折的迷宫迷宫,其中涉及fnameescape()
、shellslash
和isfname
选项,以及 win32vim
试图\
作为路径分隔符处理。
啊哈!
:e [[]1]
似乎工作(?)。肯定有一些“官方”的方式(比如调用 vim 函数)来达到这种模式吗?(编辑:不,这仅在[1]
已经存在时才有效。叹息。)
编辑
在 Ingo Karkat 的回答之后,我的文件加载 bash 脚本现在包含以下代码段:
# Double single quotes are single quotes in a single-quoted vim string (got that?)
FILE=${FILE//\'/\'\'}
[[ -n $FILE ]] && gvim -u NONE -U NONE -f --remote-send '<c-\><c-n>:let b = bufwinnr('\'"$FILE"\'')|if b != -1|exec b "wincmd w"|else|new `='\'"$FILE"\''`|endif<cr>'
gvim -u NONE -U NONE -e -s --cmd 'let a = remote_foreground("GVIM")|q'