0

ファイルに書き込む代わりに、外部プログラムを呼び出してバッファをフィルタリングするように、vim で「w」をオーバーライドしようとしています。それを行う方法については、インターネット全体に非常に良い例があります。私はvim.wikia.comから1つ試しましたが、vimは常にE488: Trailing characters. これは私のvimrcのコマンドです:

cabbrev w <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'W' : 'w')<CR>

私はvimスクリプトにあまり慣れていません。<CR>運が悪かったので、行末から削除しようとしました。

アップデート

できるだけカスタマイズして vim を実行したいので、-uフラグを付けて実行します。そのフラグを使用する場合と使用しない場合では、vim の動作が異なることに気付きました。

フラグを使用-uすると、展開された略語がコードとして評価される必要があります。 ここに画像の説明を入力

フラグがない場合、省略形は意図したとおりです (ここでは、vim のプロンプトから cabbrev ルールを入力します)。 ここに画像の説明を入力

4

1 に答える 1

0

フラグについて、-uvim の man ページには次のように書かれています。

-u {vimrc} 初期化のためにファイル {vimrc} 内のコマンドを使用します。他のすべての初期化はスキップされます。これを使用して、特別な種類のファイルを編集します。「NONE」という名前を付けることで、すべての初期化をスキップするためにも使用できます。詳細については、vim 内の ":help initialization" を参照してください。

どうやら、このフラグを使用すると、vim /etc/vimrc からの初期化が実行されず、次のオプションが見つかりました。

set nocompatible

互換性のあるオプションに関する vim のヘルプ:

このオプションは、Vim をより Vi 互換にするか、より便利な方法で動作させる効果があります。これは特別な種類のオプションです。設定またはリセットすると、副作用として他のオプションも変更されるからです。注意: このオプションを設定またはリセットすると、多くの予期しない影響が生じる可能性があります: マッピングが別の方法で解釈される、元に戻すの動作が異なるなど。vimrc ファイルでこのオプションを設定する場合は、おそらく最初に配置する必要があります。

...

Vim の起動中に vimrc または gvimrc ファイルが見つかった場合、このオプションはオフになり、変更されていないすべてのオプションは Vim のデフォルトに設定さます事実上、これは、vimrcまたはgvimrcファイルが存在する場合、Vim は Vim のデフォルトを使用し、存在しない場合は Vi のデフォルトを使用することを意味します。(注: これは、システム全体の vimrc または gvimrc ファイル、または-u引数で指定されたファイルでは発生しません)。

set nocompatible質問の作業から cabbrev 構文を作成します

于 2016-12-17T11:31:45.880 に答える