Могу ли я использовать SPACE как кленовщик в VIM?

84

Из http://items.sjbach.com/319/configuring-vim-right я понял, что вы должны были использовать Spaceв качестве кленовщика в vim. Я пробовал, но, похоже, не работает. Кто-нибудь, кто заставил это работать?

Пытался:

let mapleader = <space>
Марлун
источник
7
Потрясающе! Просто прочитайте тот же пост в блоге и нашел это после попытки <SPACE> ... Я обнаружил, что в MacVim это не удаляет отображение «переместить на один символ вперед» с пробела, поэтому для других, кто нашел это в Google, добавьте «nnoremap <SPACE> <Nop>» перед «let mapleader ...» это сработало для меня.
michiakig

Ответы:

100

Вместо этого попробуйте следующее:

let mapleader=" "

И не забудьте перед этим написать следующую строку, чтобы заранее убедиться, что пробел не имеет сопоставления:

nnoremap <SPACE> <Nop>
Жолт Ботыкай
источник
19
Как отмечает spacemanaki в приведенном выше вопросе, nnoremap <SPACE> <Nop>это необходимо для того, чтобы это работало.
Саша
1
@ Саша: правда? Не могли бы вы объяснить почему, и если это действительно так, то, возможно, вам стоит отредактировать вопрос.
greg0ire
4
Без сопоставления sasha нажатие <Space> не будет вести себя как другие клавиши в качестве mapleader. <Пробел> в нормальном режиме отображается на <право>. Просто нажмите <пробел> несколько раз подряд, и вы увидите нежелательное поведение, которое можно исправить с помощью nnoremap <Space> <nop>.
Freeo
3
Чтобы добавить к этому ответу, обратите внимание, что значение mapleadertake влияет только на сопоставления, которые происходят после mapleaderустановки. Смотрите :help leader.
evnu
Пришлось сохранить и закрыть rc файл. Я использовал, :source %но переназначение пространства не работало.
Джонатан Моралес Велес
67

Mapleader - это строковая переменная Vim. Чтобы использовать пробел в качестве лидера, вы должны экранировать специальный символ.

let mapleader = "\<Space>"

Для получения дополнительной информации см.

http://vimdoc.sourceforge.net/htmldoc/eval.html#expr-quote

РЕДАКТИРОВАТЬ:

У меня это больше не работает в моей версии Vim. Даже с предложением в комментариях отключить пробел в обычном режиме, запустив nnoremap <SPACE> <Nop>.

В итоге я выбрал решение, приведенное в ответе ниже.

map <Space> <Leader>
jayWHY
источник
1
Кроме того, убедитесь, что вы используете двойные кавычки, "\<Space>"а не '\<Space>'.
crlane 04
1
Я предпочитаю этот ответ.
Sang Đặng
let mapleader = "\<Space>"у меня работал в nvim, но не в vim. map <Space> <Leader>у меня также не работает в vim.
Günter Zöchbauer
noremap <Space> <Nop> map <Space> <Leader>работал в vim
Günter Zöchbauer 02
Мне пришлось убрать пространство вокруг, =чтобы моя работала, на Неовиме.
Нихил ЦСУ
18

Вышеупомянутые решения великолепны, однако в правом нижнем углу команд ничего не отображается. Если вы все равно не используете этот \ключ, попробуйте использовать map <SPACE> <leader>и \отобразится в командном углу. Это, и вам не нужно сначала отключать пространство, как предложено в комментариях выше.

те бегемоты
источник
3
Это нарушает работу комментатора NERD. И, по крайней мере, в Vim 8 и Neovim пространство отображается, как <20>если бы showcmdоно было включено , поэтому я думаю, что с достаточно новым Vim этот ответ устарел.
user31389
Я просто хочу добавить, что это также лучшее решение, если вы уже развили мышечную память для лидера по умолчанию, но хотите вместо этого начать использовать пространство для большей эффективности. "\ r" по-прежнему встроен в мою мышечную память для открытия Nerd Tree и использования cscope, поэтому приятно, что он все еще работает даже при сопоставлении пространства с лидером (хотя я не чувствую необходимости использовать Nerd Commenter).
DrEsperanto