2013-07-22 2 views
6

Я считаю себя ударять :X, когда я имею в виду тип :xОтключить шифрование с: X в Vim

Есть ли способ отключить :X как шифрование, так что набрав :X в Vim не имеет никакого эффекта?

Я предполагаю, что есть команда, которая может быть помещена в файл .vimrc?

ответ

9

Существует несколько стандартный способ использования cnoreabbrev/cnoremap для этого: перед заменой X с x проверки, является ли это только символ в командной строке:

cnoremap <expr> X (getcmdtype() is# ':' && empty(getcmdline())) ? 'x' : 'X' 

или

cnoreabbrev <expr> X (getcmdtype() is# ':' && getcmdline() is# 'X') ? 'x' : 'X' 

. Разница в том, что вначале вы не наберете :Xfoo (переведёте на :xfoo), второй не будет, но не удастся ввести :X! (будет переведен в :x!, что действительно имеет смысл, в отличие от :X!).

В отличие от поисковых запросов (/X), input() запрос и т. Д. И без разницы, если набрано X не является первым.

+0

как мне сделать вторую один не мешает мне печатание: X '? – BPm

+0

@BPm Почему вы спрашиваете? Запуск ': X!' Throws "E477: Нет! разрешено ", переопределение': X' также невозможно. Если вы попросите переназначить что-то другое, тогда 'X' использовать дополнительное условие getchar (1) isnot char2nr ('!')'. – ZyX

+0

Я спросил, потому что я склонен набирать ': W' по ошибке, но у другого плагина есть команда': W! '. Я попробую дополнительное условие. Благодаря! – BPm

1

Вы можете использовать :cmap для отображения X в й, но есть побочные эффекты, как не в состоянии использовать букву X в любом

:cmap X x 

Для немного менее навязчивой версии

:cmap X^M x^M 

который будет отображать только X в x, когда вы сразу же нажмете Enter.

5

Используйте :cnoreabbrev переопределить :X с той же функциональностью, как :x:

cnoreabbrev X x 

:cnoreabbrev предпочтительно :cabbrev поскольку :x уже может быть переназначен к чему-то еще.

Обратите внимание, что использование cabbrev в целом повлияет на все однобуквенные слова X в командной строке, например. :X X переведёт на :x x, возможно, не то, что предназначено. См. Ответ @ ZyX для исправления этого.

1

Плагин cmdalias.vim - Create aliases for Vim commands обеспечивает более надежную реализацию ответа ZyX. Если вы не против установки плагина, вы получите удобный и расширяемый способ определения сокращения:

:Alias X x 
Смежные вопросы