Если существует ( ": command" ) сбой при запуске, используя Pathogen
Я использую exists()
, чтобы проверить, установлены ли плагины в Vim (я сопоставил ;
до :
):
if exists(":NERDTree")
map <F4> ;NERDTreeToggle<CR>
endif
Отображение не работает, если я не вручную создаю файл .vimrc. Я использую Pathogen, чтобы загрузить мои плагины при запуске, я полагаю, что это имеет какое-то отношение к этому?
Мой полный файл .vimrc: https://github.com/ElbertF/dotfiles/blob/master/.vimrc
Ответы
Ответ 1
Ваш вызов exists()
не работает, потому что плагины загружаются только после того, как vim завершил обработку вашего .vimrc
- см. :help startup
. Кроме того, патоген фактически не загружает ваши плагины, он просто добавляет их содержащие папки в параметр runtimepath
, поэтому они будут загружены после вашего .vimrc
.
Вы можете создать autocmd VimEnter, чтобы настроить свое сопоставление после завершения загрузки vim:
autocmd VimEnter * if exists(":NERDTree") | exe "map <F4> ;NERDTreeToggle\<CR>" | endif
Ответ 2
В MacVim вы можете определить некоторые сопоставления в файле .gvimrc
, который анализируется после .vimrc
. Полезно переопределить команды меню графического интерфейса, такие как Файл → Открыть... или Файл → Сохранить.
Ниже приведен пример файла .gvimrc
, который переопределяет горячую клавишу Command + o, чтобы открыть NERDTree:
if has('gui_running')
if exists(':NERDTree')
" Command+O shows the NERDTree instead of the open dialog
macm File.Open\.\.\. key=<nop>
nnoremap <D-o> :NERDTree<CR>
inoremap <D-o> <Esc>:NERDTree<CR>
vnoremap <D-o> <Esc>:NERDTree<CR>
endif
endif
Где macm File.Open\.\.\. key=<nop>
команда отвязывает любую горячую клавишу из пункта меню Файл → Открыть.
А команды ?noremap <D-o> ...
связывают Command + o, чтобы показать NERDTree в нормальном/вставном/визуальном режимах.