首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VIM中将<space>映射到<leader>

在VIM中将<space>映射到<leader>
EN

Stack Overflow用户
提问于 2019-02-20 13:45:51
回答 1查看 6.7K关注 0票数 1

我想在Vi7.4中将<space>键映射到<leader> (这里现在是\键)。

我还希望能够同时使用<space>\键作为领导者。

如果可能的话,当我键入/字符(而不是像<20>这样的古怪的东西)时,看到它出现在右下角是很好的,但是没有它,我可以活下去。

我试过

代码语言:javascript
运行
复制
nmap <space> <bslash>

这对于简单的<leader>keys命令是有效的,但是<leader><leader>key命令(如easymotion )不起作用。

我也试着

代码语言:javascript
运行
复制
let mapleader = " "
nmap <bslash> <space>

但与上面提到的问题类似,<bslash>键不再适用于<leader><leader>key命令。

我已经在这些相关的问题/维基页面上尝试了一堆东西:

EN

回答 1

Stack Overflow用户

发布于 2019-02-20 16:31:09

我看不到您的.vimrc,所以我不能保证这就是问题所在,但我敢打赌,问题来自于使用nnoremap。以下几点对我来说是可行的:

代码语言:javascript
运行
复制
let mapleader =" "
nmap <leader>i iHello World<esc>
nmap <bslash> <space>

我可以使用<space>i<bslash>i,它们都运行iHello World<esc>映射。但这一点:

代码语言:javascript
运行
复制
let mapleader =" "
nnoremap <leader>i iHello World<esc>
nnoremap <bslash> <space>

不管用。<space>i运行映射,但<bslash>i不运行,这正是应该期望的,因为nnoremap用于避免嵌套/递归映射。因此,一个可能的解决方案是在任何地方使用nmap。我绝对不建议这样做,因为您可能会在map循环中结束。这一解决方案应更好地发挥作用:

代码语言:javascript
运行
复制
let mapleader =" "
nnoremap <leader>i iHello World<esc>
nmap <expr> <bslash> mapleader

请注意,如果您更改了mapleader设置,这将中断,因为,正如:h mapleader所说:

代码语言:javascript
运行
复制
Note that the value of "mapleader" is used at the moment the mapping is
defined.  Changing "mapleader" after that has no effect for already defined
mappings.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54787831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档