2011-01-01 18 views
-1

WindowsでGVimを使用する際に問題があります。私は.vimrcに以下を設定しました:自動コマンドを1回だけ実行する

if has("gui_running") 
    autocmd VIMEnter * :source C:/session.vim 
endif 

残念ながら、これは問題を引き起こします。私がファイルの一番上にいて、行(k)の上に移動しようとすると、画面が点滅します。私がちょうど1秒間キーを保持していれば、それは数十回点滅しますが、それは本当に厄介です。

代わりにGUIEnterを使ってみましたが、同じ結果が得られました。私はautocommandを1回だけ起動することができますが、正確な構文を理解することはできませんでした。ケアを助ける?

+4

問題はこのautocmdと関係がありますか? visualbellの問題のように聞こえます。 – frabjous

答えて

0

frabjousが述べたように、私はvisualbellをオフにしなければならなかった。しかし、ドキュメンテーションでは、GUIの起動時にvisualbellがデフォルトにリセットされることに言及しています。 .vimrcの上に "set vb t_vb ="を置くことで、GUIへの入力時にリセットされるため、visualbellを無効にすることはできません。代わりに、トリックは、オートコマンドでビジュアルベルを無効にすることです:

autocmd GUIEnter * :set vb t_vb= 
+0

本当の質問は次のとおりです。*なぜあなたはビジュアルベルを持っていますか?*構成上の訂正が必要な間違っていると思われます。 –

+0

本当の質問は質問のタイトルにあり、未回答です。名前を "一度だけ実行する"というコマンドは、本当に役に立たず、誤っていました。 –

1

オートコマンドで呼び出されるコマンドでクリアすると、オートコマンドが1回だけ発生すると仮定します。たとえば、あなたがCならば、それは一度だけ火しまう与えるのコード例:/session.vimは、このコマンドが含まれて:あなたの問題が有するものであるように

autocmd! VimEnter * 

frabjousが彼のコメントで述べているように、しかし、それが聞こえます視覚的なベル、:h visualbellを参照してください。

1

私はこれ専用の機能を持っています:lh#event#register_for_one_execution_at()。このアイデアは実際に実行されたイベントをクリアするものです。

しかし、私は別の問題も疑っています。とにかく数回発砲されるイベントのようなものではありません。

関連する問題