Vim: <leader>последовательности клавиш смешаны с отображениями нормального режима - PullRequest
0 голосов
/ 18 марта 2011

Я пытаюсь определить сопоставления для типа файла "cpp":

autocmd! FileType cpp map <leader>c echo "test c"

autocmd! FileType cpp map <leader>r echo "test r"

autocmd! FileType cpp map <leader>t echo "test t"

Мой ключ лидера переопределен:

let mapleader = ","

Когда я открываю * .cpp файл только одинсопоставления работают, как и ожидалось: последовательность ", t" заставляет произойти "эхо", но два других ведут себя так, как будто не было определено никаких сопоставлений: ", r" заставляет Vim переключаться в режим замены, а ", c" приноситVim для вставки режима.

Что я делаю не так?

Ответы [ 2 ]

5 голосов
/ 18 марта 2011

Я не знаю, как ваш пример (включая ,c один) мог бы работать: вы забыли добавить эхо к двоеточию. Но есть и другая ошибка: согласно справке:

: аи [tocmd]! [group] {event} {pat} [вложенный] {cmd}

Удалите все автокоманды, связанные с {event} и {pat}, и добавьте команду {cmd}.

Итак, последний (,t) должен заменить все предыдущие.

Есть также и другие вещи, которые вы должны учитывать:

  1. Не используйте map, вместо этого используйте noremap: это может однажды избавить вас от выполнения задания отладки после добавления сопоставления.
  2. Если вы определяете отображение типов файлов, вы обычно должны добавить <buffer> в качестве аргумента к :noremap в позиции перед {lhs}: это сделает это отображение локальным по отношению к текущему буферу.
  3. Если вы хотите перезапустить vimrc, вы должны поместить всю команду в группу augroup:

    augroup VimrcCpp
        autocmd!
        autocmd FileType cpp nnoremap <buffer> <leader>c :echo "c"<CR>
        autocmd FileType cpp nnoremap <buffer> <leader>r :echo "r"<CR>
        autocmd FileType cpp nnoremap <buffer> <leader>t :echo "t"<CR>
    augroup END
    
  4. Я бы удалил его из vimrc и добавил в ~ / .vim / ftplugin / cpp.vim (каталог after должен использоваться только для переопределения опций, которые вам не нравятся, если они безусловно определены плагином . Если нет конфликтов сопоставления, не используйте after).
1 голос
/ 18 марта 2011

Я предлагаю вам поместить эти сопоставления в файл с именем cpp.vim, помещенный в каталог ~/.vim/after/ftplugin/ (или любой эквивалент в зависимости от ОС).

Vim автоматически загружает его, пока у вас есть

filetype plugin on

в вашем .vimrc.

Это избавляет вас от написания автокоманд и обеспечивает хорошую организацию вашей конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...