MacVim: e расширяется, чтобы редактировать и редактировать!не позволит мне отменить изменения? - PullRequest
0 голосов
/ 12 сентября 2011

Когда я набираю: e, MacVim автоматически расширяет это до: Редактировать. Проблема в том, что я не могу сбросить свой текущий буфер с помощью: Edit !, потому что я получаю сообщение об ошибке, говорящее, что "!" не допускается.

У меня два вопроса:

  1. Почему: редактировать! работать а не: редактировать!
  2. Есть ли способ отключить эту функцию автоматического расширения в MacVim или, возможно, переключить ее на: редактировать! а не: редактировать!

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

Если расширение происходит сразу после ввода e, это может быть связано с отображением в командном режиме (т. Е. :map!, :cmap или :lmap).Если он раскрывается только после ввода e с последующим пробелом (или вводом), то это может быть сокращение (т. Е. :abbreviate или :cabbrev).

Вы можетеВременно избегайте расширения на основе сопоставления, набрав Control ‑ V или Control ‑ Q перед e.Другим обходным решением является ввод Control-F при вводе команды командной строки (т. Е. Вы получаете приглашение :; или введите q: вместо : при запуске команды).Это откроет окно командной строки, чтобы вы могли редактировать свою команду в обычном режиме / режиме вставки (это позволяет избежать всех отображений режима командной строки).

После того, как у вас есть способ ввести e вСнова в командной строке вы можете использовать :verbose, чтобы найти источник сопоставления:

:verbose cmap e

(Вы должны либо использовать окно командной строки, чтобы набрать это буквально, либовведите его в командной строке, набирая Control ‑ V или Control ‑ Q перед каждым e.)

Это покажет вам определение отображения.Кроме того, если он получен из плагина, то источник будет идентифицирован второй строкой, такой как Last set from /path/to/some/file.

. Проверка аббревиатуры немного сложнее, так как есть два шанса для расширения (во время ввода и когдакомандная строка анализируется):

:verbose cab ^Ve

^V должен быть фактическим Control-V.Обычно это можно сделать, дважды нажав Control-V (или Control-Q, затем Control-V).


Что касается самой команды Edit, то она не является встроенной, поэтомучто-то плагин должен определять это.Очень мало встроенных команд начинаются с заглавной буквы, и все «определенные пользователем» команды должны начинаться с одной;см. :help E183.

Вы можете использовать :verbose снова, чтобы найти, где было определено :Edit:

:verbose command Edit

Я подозреваю, что отображение / сокращение иКоманда, вероятно, пришла из того же места.


Вы можете вручную отключить расширение на основе сопоставления с помощью :cunmap и расширение на основе сокращений с помощью :cunabbrev:

:cunmap e
:cunabbrev ^Ve

Опять же, вам может понадобиться вводить Control-V или Control-Q перед каждым e, а ^V должен быть буквальным Control-V (дважды введите Control-V, чтобы ввести его).

К сожалению,Вы не можете просто поместить их в ~/.vimrc, если определения получены из плагина, потому что плагины загружаются после ~/.vimrc.Вы должны исследовать плагин, чтобы увидеть, предлагает ли он возможность отключить навязчивое отображение.Иногда плагины проверяют переменную :let, чтобы узнать, должны ли они включить какую-либо функцию.Возможно, у вашего проблемного плагина есть «ручка», которая позволит вам не устанавливать расширение e -> Edit.Если нет, то вы можете сообщить об ошибке о :Edit!, которая не работает должным образом, и попросить способ отключить расширение.

0 голосов
/ 12 сентября 2011

Используете ли вы TextExpander, Typinator или какую-либо утилиту для расширения текста? Если да, то это может быть виновником. Насколько я знаю, MacVim не расширяет текст таким образом.

...