2016-06-15 6 views
1

Что я хочу:Можно ли установить BufLeave autocmd в vim на лету?

Внутри файла/буфера в vim, особенно неназванного (например, созданного с помощью enew), иногда я чувствую, что содержимое, которое я пишу, стоит экономить (скажем, я вдруг захотите отправить его по электронной почте), но не чувствую особой необходимости сохранять его в временном файле, и я не доверяю себе достаточно, чтобы «запомнить», чтобы сохранить его при выходе.

Так что я подумал, что, если я бегу

autocmd BufLeave * ggvG"+y 

в Vim командной строке один раз и быть свободным от страха потерять это содержание.

Но это не работает. Когда я выхожу из vim, системный буфер обмена неповрежден.

Мои вопросы:

  • он делает что-нибудь, если мы запустим autocmd на лету, а не в vimrc?
  • есть ли способ сказать vim «эй, когда вы выходите, запустите их»?

Спасибо тонну!

ответ

2

две проблемы:

1) Вы не оставил буфер для перехода в другой буфер (BufLeave); вы покинули Vim (VimLeave).

2) autocmd ожидает команду, а не обычный режим нажатия клавиш.

Имея это в виду,

autocmd VimLeave * normal gg"+yG 
+0

Вы прибил его. На практике я буду использовать как «VimLeave», так и «BufLeave», чтобы быть в безопасности. Благодаря тонну! –

+2

':% y +' также работал бы. –