18

Vim 7.2 と 7.3 の両方がインストールされているマシン間で同じ .vimrc を使用しています。Vim 7.2 を搭載したマシンは、ファイルを開くたびに 7.3 固有のオプションについて文句を言います。

Error detected while processing /home/spiffytech/.vimrc:
line   72:
E518: Unknown option: rnu
line   73:
E518: Unknown option: undofile
line   74:
E518: Unknown option: undodir=/tmp
line   75:
E518: Unknown option: cryptmethod=blowfish
Press ENTER or type command to continue

Vim がこれらのエラーを無視し、ファイルを開くたびにエンターを押さないようにするにはどうすればよいですか?

4

6 に答える 6

19

バージョンではなく、実際にサポートされている機能について、よりきめ細かいチェックを行う価値があるかもしれません。

例えば:

if has('persistent_undo')
  set undofile
  set undodir=/tmp
endif

" Some options can only be checked with exists('+option'); I'm not sure why
if exists('+relativenumber')
  set rnu
endif

if has('cryptv')
  set cryptmethod=blowfish
end
于 2012-06-24T04:44:17.873 に答える
10

新しいオプションを次のようにラップします。

if version >= 703
  set rnu ...
endif

v:version使用するバージョン番号の詳細については、ヘルプを確認してください。

                                        *v:version* *version-variable*
v:version       Version number of Vim: Major version number times 100 plus
                minor version number.  Version 5.0 is 500.  Version 5.1 (5.01)
                is 501.  Read-only.  "version" also works, for backwards
                compatibility.
                Use |has()| to check if a certain patch was included, e.g.: >
                        if has("patch123")
<               Note that patch numbers are specific to the version, thus both
                version 5.0 and 5.1 may have a patch 123, but these are
                completely different.
于 2012-06-14T15:10:57.410 に答える
8

オプションが正当であっても、現在の環境では利用できない場合があります。例えば:

$ vi
Error detected while processing /home/username/.vimrc:
line    9:
Unknown option: indentexpr=

オプションが存在するかどうかをテストし、使用できない場合はエラーを回避するには:

if exists("&indentexpr")
  :set indentexpr=
endif
于 2014-04-11T14:25:31.050 に答える
5

silent! ...のようなエラーは無視できます。silent! set undofile

于 2013-12-21T09:12:39.513 に答える
3

.vimrc では、実行している Vim バージョンに対してテストできます。

見るhelp v:version

if v:version >= 703
    "do something
    set rnu
    set undofile
    ...
endif

703は Vim 7.3 に対応します (これはあまり直感的ではありません...)

于 2012-06-14T15:10:49.047 に答える
0

この質問は答えられていないと思います。新しいvimバージョンを持つコンピューターAで作成されたSession.vimを考えてみましょう。ソース管理では、別のコンピューター B が Session.vim を開こうとすると、エラーがトリガーされます。自動化されたプロセスであるべきもののバージョン番号を手動でラップする必要があるのは意味がありません。この動作により、新しいバージョンは、セッションを保存するときに新しいコマンドをバージョン番号で自動的にラップする必要があります。これは 7.3 では行われません。

于 2012-06-17T14:25:29.300 に答える