Сопоставьте один и тот же ключ для разных действий в обычном режиме vim и внутри NERDTree - PullRequest
1 голос
/ 31 октября 2019

Я хочу отобразить Alt + F1 на: NERDTreeFocus в то время как в обычном моде vim и на: NERDTreeToggle в то время как в представлении NERDTree. Я пробовал это:

map <silent> <M-1> :NERDTreeToggle<CR>
nmap <silent> <M-1> :NERDTreeFocus<CR>

Но это не работает, очевидно, я не понимаю, как привязки работают в vim. Не могли бы вы помочь мне с этим?

1 Ответ

0 голосов
/ 31 октября 2019

Ваше различие между :map и :nmap касается только режимов , к которым применяются сопоставления;здесь вам нужно провести различие между чистым буфером , который NERDTree использует для своего пользовательского интерфейса, и всеми другими буферами. К счастью, Vim позволяет определять сопоставления, которые применяются только к текущему буферу: :help :map-local

Для того, чтобы настроить это, вы должны находиться внутри активного буфера NERDTree. К счастью, плагин устанавливает пользовательский filetype для своего рабочего буфера, поэтому событие FileType можно использовать для подключения к установке без необходимости непосредственного изменения плагина или всех командчто запустить его:

:nnoremap <silent> <M-1> :NERDTreeFocus<CR>
:autocmd FileType nerdtree nnoremap <buffer> <silent> <M-1> :NERDTreeToggle<CR>

Дополнительные комментарии

  • Вы должны использовать :noremap;оно делает отображение невосприимчивым к переназначению и рекурсии.
  • <M-1> должно вызываться Alt + 1 , а не F1 (еслиу вас странная настройка клавиатуры)
...