Выполнить автокоманду только один раз - PullRequest
0 голосов
/ 01 января 2011

У меня проблема с использованием GVim в Windows. Я установил следующее в моем .vimrc:

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

К сожалению, это создает проблему. Если я вверху файла и пытаюсь переместиться вверх на строку (k), экран мигает. Если я удерживаю клавишу в течение секунды, она будет мигать несколько десятков раз, это тоже очень неприятно.

Я попытался использовать GUIEnter, но получил те же результаты. В документах упоминается, что я могу запустить автокоманду только один раз, но я не могу понять точный синтаксис. Хотите помочь?

Ответы [ 3 ]

1 голос
/ 01 января 2011

У меня есть функция, предназначенная для этого: lh # event # register_for_one_execution_at () .Идея состоит в том, чтобы действительно очистить событие после его выполнения.

Но я также подозреваю другую проблему.Vimenter - это не тот случай, который все равно происходит несколько раз.

1 голос
/ 01 января 2011

Я предполагаю, что вы можете заставить автокоманду срабатывать только один раз, если вы очистите ее в любой команде, вызываемой в автокоманде. Например, в приведенном вами примере кода он сработает только один раз, если c: /session.vim содержал эту команду:

autocmd! VimEnter *

Как говорит frabjous в своем комментарии, похоже, что ваша проблема связана с визуальным звонком, см. :h visualbell.

0 голосов
/ 01 января 2011

Как уже упоминалось, мне пришлось отключить зрительный звонок.Однако в документации упоминается, что при запуске графического интерфейса визуальный звонок сбрасывается к значению по умолчанию.Помещение «set vb t_vb =» в верхней части .vimrc для отключения визуального колокольчика не сработает, потому что оно сбрасывается при входе в GUI.Вместо этого, хитрость заключается в том, чтобы отключить визуальный звонок с помощью автокоманды:

autocmd GUIEnter * :set vb t_vb=
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...