我可以在VIM中将SPACE用作mapleader吗?


82

来自http://items.sjbach.com/319/configuring-vim-right,我知道您应该可以Space用作vim中的mapleader。我已经尝试过了,但是似乎没有用。有人成功了吗?

尝试过:

let mapleader = <space>

7
太棒了!只需阅读同一篇博客文章,并在尝试<SPACE>后发现此问题……我发现在MacVim中,这并未从空格键中删除“向前移动一个字符”的映射,因此对于其他从Google找到此字符的人-添加“ let mapleader ...”之前的“ nnoremap <SPACE> <Nop>”对我有用。
michiakig 2010年

Answers:


97

请尝试以下操作:

let mapleader=" "

并记住在此之前写以下行,以确保空格键事先没有任何映射:

nnoremap <SPACE> <Nop>

19
正如spacemanaki在上述问题中的评论那样,nnoremap <SPACE> <Nop>才能使此工作正常进行。
萨沙(Sasha)

1
@Sasha:真的吗?您能否解释原因,如果确实如此,那么也许您应该编辑问题。
greg0ire 2013年

4
如果没有sasha的映射,按<Space>的行为将不像其他按键一样,如mapleader。正常模式下的<Space>映射到<right>。连续按几次<space>,您将看到不需要的行为,可以通过来解决nnoremap <Space> <nop>
Freeo 2014年

3
要添加到此答案,请注意,mapleadertakes的值仅影响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>

1
另外,请确保使用双引号"\<Space>"而不是'\<Space>'
crlane

1
我更喜欢这个答案。
桑Đặ19年

let mapleader = "\<Space>"在nvim中为我工作,但在vim中没有。map <Space> <Leader>对我来说,也行不通。
君特Zöchbauer

noremap <Space> <Nop> map <Space> <Leader>vim的工作
君特Zöchbauer

我必须=在Neovim上删除周围的空间,以便我的工作。
Nikhil CSB

18

上面的解决方案很棒,但是在右下角的命令角落没有任何显示。如果你没有对任何使用\钥匙无论如何,尝试使用 map <SPACE> <leader>,并\会在命令角落出现。这样,您就不必像上面的建议中那样先取消映射空间。


3
这打破了NERD Commenter。至少在Vim 8和Neovim中,空间<20>似乎showcmd是打开的,所以我猜对于足够新的Vim,这个答案已经过时了。
user31389

我只想在这里补充一下,如果您已经为默认的领导者开发了肌肉记忆,但也想开始使用空间以提高效率,这也是最好的解决方案。“ \ r”仍然连接到我的肌肉记忆中,用于打开书呆子树并使用cscope,因此即使将空间映射到领导者,它仍然可以正常工作(不过,我不需要使用书呆子注释器)。
DrEsperanto
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.