vim change: функция x для удаления буфера вместо сохранения и выхода - PullRequest
13 голосов
/ 22 сентября 2011

Я хочу установить :x в графическом режиме vim на delete buffer, потому что я всегда убиваю весь gvim, что немного раздражает.Я знаю, что могу специально установить проблемы с графическим интерфейсом для if has("gui running"), но не знаю, как переназначить :x

заранее спасибо

пс .: возможно, тег / термин remapнеправильно, но я не знаю правильного термина, поэтому Google не предоставил никакой помощи.

Ответы [ 2 ]

28 голосов
/ 22 сентября 2011

Я считаю, что самая безопасная альтернатива - использовать сокращение выражения:

cnoreabbrev <expr> x getcmdtype() == ":" && getcmdline() == 'x' ? 'bd' : 'x'

Это обеспечит расширение аббревиатуры до bd, если используется :x, в противном случае просто расширьте до x.

Для получения дополнительной помощи:

:h map-<expr>
:h getcmdtype()
:h getcmdline()

При дальнейшем осмотре появляется плагин, который делает именно это Хари Кришна Дара, который называется cmdalias.vim . Используется вариант техники выше.

4 голосов
/ 22 сентября 2011

Это не так просто, как кажется.:map не будет работать с командами, а :command принимает только те команды, которые начинаются с заглавной буквы.Но вы можете использовать :cabbrev:

if has("gui_running")
  cabbrev x bd
endif

ОБНОВЛЕНИЕ: :cmap можно на самом деле использовать: :cmap x bd, но это не работает правильно: каждое вхождение x в команде немедленно заменяется на bd.

РЕДАКТИРОВАТЬ: Этот вопрос является дубликатом Могу ли я (повторно) отобразить команды Ex в vim? .

...