4

そこで、ファイルを編集したいと思います[1]。問題は、というファイルもあります1。また、cygwinとそのbashシェル、win32cmdおよびLinuxも使用しています。cygwinを使用するvimこともあれば、win32vimとを使用することもありgvimます。

ファイルを開く一貫した方法が見つかりません[1]。多くの場合、ファイルグロブとしてvim表示[1]され、代わりに開き1ます。

Linuxでは、:e [1]失敗しますが、:e \[1]機能します。win32では、:e \[1]失敗します。

fnameescape()、、shellslashおよびオプションを含むパッセージの曲がりくねった迷路に閉じ込められているようでisfname、win32はパス区切り文字としてvim処理しようとします。\

あはは!

: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'
4

1 に答える 1

6

がある:

:edit `='[1]'`

これ(誤解?-)は、Vim式(:help `=)としてバッククォート展開を使用します。'wildignore'欠点は、パターンがオプションでフィルタリングされやすいことです。

私たちはかつてこの問題について長い議論をしました; しかし、それは何の行動も取られずにどういうわけか消えてしまいました。したがって、現在、ファイルグロブとしても解釈できるファイル名の文字通りの使用は厄介であり、ヘルプの全会一致のアドバイスはこれを処理しないを使用することであるため、ほとんどのプラグインはfnamescape()これをうまく処理しません(私のものを含む)。

于 2013-02-27T11:51:20.237 に答える