所以,我想编辑文件[1]。问题是,我还有一个名为1. 我还使用 cygwin 及其bashshell、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'