Карта: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
все равно будет неоднозначным.