Карта:E to: Исследовать в командном режиме?

Как я могу карту :E в :Explore? Я установил расширение, которое приводит к E464: Ambiguous use of user-defined command если я сделаю :E сейчас, но мои пальцы не забудут команду!

Я старался map :E :Explore, но это некрасиво, поскольку затрудняет доступ к другим командам.

Я попробовал это:

cmap :E<CR> :Explore<CR>
cmap :E^M :Explore^M

(где ^M = control-v + enter) но они не сработают, если я не нажму действительно быстро.

1 ответ

Решение

:E обычно достаточно, как если бы :Explore были единственной определенной командой, которая началась с E, Очевидно, у вас определено несколько таких команд, поэтому :E является неоднозначным и приводит к ошибке.

:cmap вызывает немедленную буквальную замену и, таким образом, имеет нежелательные побочные эффекты. Немного лучшая альтернатива :cabbrev, который может быть использован для определения сокращений для командного режима:

cabbrev E Explore

Это срабатывает после EEnter или ESpace. Первый желателен, потому что ввод :EEnter вызовет :Explore, но последний снова имеет побочные эффекты в командном режиме.

Для того чтобы :E быть должным :Explore, это должно быть определено как отдельная команда:

command! E Explore

Тем не мение, :command E, который перечисляет все определенные команды, которые начинаются с E, показывает, что :E а также :Explore имеют разные свойства. Например, невозможно выполнить :E ~ так как :E не принимает никаких аргументов. Кроме того, в отличие от :Explore, :E не автозаполнение каталогов.

Чтобы исправить эти недостатки, :E должны быть определены точно так же, как :Explore, проведение :verbose command Explore показывает расположение скрипта, в котором :Explore определено; :E могут быть определены таким же образом, с добавлением <args>:

command! -nargs=* -bar -bang -count=0 -complete=dir E Explore <args>

Хотя большинство этих атрибутов можно вывести из информации, предоставленной :command Explore, все еще могут быть расхождения, такие как -bar в этом случае.

NB Если :Explore а также :Example определены, :Exp а также :Exa самые короткие однозначные команды, которые можно использовать. Явный псевдоним :E к одному из них, как указано выше, переопределяет поведение Vim по умолчанию и допускает устранение неоднозначности. Тем не мение, :Ex все равно будет неоднозначным.

Другие вопросы по тегам