энергия восстанавливает позицию курсора; исключите специальные файлы

Следующий код в моем .vimrc и обычно восстанавливает последнюю позицию курсора файла, который я открыл с энергией:

autocmd BufReadPost *
  \ if line("'\"") > 1 && line("'\"") <= line("$") |
  \   exe "normal! g`\"" |
  \ endif

Я действительно люблю эту функцию и хочу оставить включенным, за исключением одного файла: При фиксировании с мерзавцем разожжена энергия, и я могу отредактировать сообщение о фиксации с нею. Однако файл сообщения о фиксации существует, прежде чем энергия запускается (и предварительно заполняется), таким образом, энергия рассматривает его как существующий файл и восстанавливает последнюю позицию курсора (который обычно является не, где я хотел бы начать вводить).

Так есть ли возможность изменить вышеупомянутый сценарий для исключения COMMIT_EDITMSG файл?

9
задан poke 6 March 2010 в 18:40
поделиться

2 ответа

Прочитав руководство по автоматическим командам, я заметил, что, похоже, невозможно определить шаблон, которому они соответствуют, таким образом, чтобы исключить специальный шаблон. И я также не смог использовать некоторую переменную, содержащую текущее имя файла, чтобы просто расширить существующий if для исключения файла.

Однако, основываясь на комментарии Павла Шведа (о gg перемещении в начало файла), я подумал, что таким же образом должно быть возможно просто перезаписать эффект восстановления позиции, просто переместив его в начало позже снова. Поэтому я придумал следующее:

autocmd BufReadPost COMMIT_EDITMSG
  \ exe "normal! gg"

Поместив это после предыдущего autocmd BufReadPost, я просто соединяю выполнение событий, так что vim, после выполнения первого и восстановления позиции, считывает это, сопоставляет с исключенным именем файла и использует gg для перемещения курсора наверх, по сути, перезаписывая эффект оригинального autocmd.

И это работает просто отлично :)

9
ответ дан 4 December 2019 в 15:15
поделиться

Вам, вероятно, стоит изучить mksession. Вы можете настроить автоматические команды VimEnter / VimLeave, чтобы они «делали правильные вещи», когда вы указали файлы в командной строке (например, когда git вызывает vim). Для этого существует множество сценариев, например, см. http://vim.wikia.com/wiki/Working_with_multiple_sessions .

1
ответ дан 4 December 2019 в 15:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: