Карта: E to: Исследуйте в командном режиме? - программирование
Подтвердить что ты не робот

Карта: 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), но они не работают, если я не нахожу действительно очень быстро.

4b9b3361

Ответ 1

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

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

cabbrev E Explore

Это вызывает следующие E Enter или E Space. Первое желательно, потому что ввод : E Enter будет вызывать :Explore, но последний снова имеет побочные эффекты в командном режиме.

Чтобы :E был должным образом сглажен до :Explore, он должен быть определен как отдельная команда:

command! E Explore

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

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

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

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

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