2015-06-10 2 views
1

Я пытаюсь загрузить barebone vim. Таким образом, я определил ~/.slimvimrc, который имеет следующее содержаниеBarebones vim with `nocp`

syntax on map q :q <cr>

Затем я загружаю Vim с помощью vim -u ~/.slimvimrc. Когда я нажимаю q, я ожидаю, что vim будет закрыт из-за отображения выше. Тем не менее, vim просто «сидит» в командной строке печати q<CR> и ждет ввода.

Однако, если добавить nocp установку к выше vimrc:

syntax on set nocp map q :q <cr>

отображение работает отлично. Я просмотрел документацию nocp, но не смог найти ее связь с <CR>. Можете ли вы указать мне правильное место?

+2

Кроме того, вам нужно посмотреть ': help cpoptions' в частности': he cpo-k' и ': he cpo- <' –

+0

Спасибо @AlexKroll, это помогло. – jacquard

ответ

0

Ваше сопоставление не работает в «совместимом режиме», потому что < не распознается при запуске кода ключа.

Ваш ~/.slimvimrc должен выглядеть следующим образом:

set nocompatible 
syntax on 
nnoremap q :q<CR> 

Обратите внимание на специфичность nnoremap:

  • первый n означает "нормальный режим",
  • nore означает "нерекурсивна",

и удаленное пространство между :q и <CR>.

В любом случае, q<char> Используется для начала записи в регистре <char>. Эта функция потрясающая! Переопределение его с помощью пользовательского сопоставления не кажется очень хорошей идеей.

Кроме того, вы можете вызвать Vim с -N аргументом, чтобы заставить 'nocompatible':

$ vim -N -u ~/.slimvimrc 
0

Причина заключается в том, что в режиме VI-совместимый, Вим не обрабатывает специальные клавиши, такие как <CR>; это регулируется установкой 'cpoptions', в частности :help cpo-k и :help cpo-<.

Почему Vim в vi-совместимом режиме? Обычно Vim устанавливает 'nocompatible', когда найдено ~/.vimrc, но ваше использование -u отключает это. От :help 'compatible':

Когда vimrc или gvimrc файл найден в то время как Vim запускается, эта опция выключена, и все параметры, которые не были Модифицированные будет установлен по умолчанию Vim. Эффективно это означает, что при наличии файла vimrc или gvimrc Vim будет использовать значения по умолчанию Vim , в противном случае он будет использовать значения по умолчанию Vi.(Примечание: Это не произошло для общесистемного файла vimrc или gvimrc, а также для файла с аргументом -u).

Решение явно set nocompatible в верхней части ~/.slimvimrc, или передать -N в дополнение к -u.