我想在Vi7.4中将<space>
键映射到<leader>
(这里现在是\
键)。
我还希望能够同时使用<space>
和\
键作为领导者。
如果可能的话,当我键入/
字符(而不是像<20>
这样的古怪的东西)时,看到它出现在右下角是很好的,但是没有它,我可以活下去。
我试过
nmap <space> <bslash>
这对于简单的<leader>keys
命令是有效的,但是<leader><leader>key
命令(如easymotion )不起作用。
我也试着
let mapleader = " "
nmap <bslash> <space>
但与上面提到的问题类似,<bslash>
键不再适用于<leader><leader>key
命令。
我已经在这些相关的问题/维基页面上尝试了一堆东西:
:h mapleader
发布于 2019-02-20 16:31:09
我看不到您的.vimrc
,所以我不能保证这就是问题所在,但我敢打赌,问题来自于使用nnoremap
。以下几点对我来说是可行的:
let mapleader =" "
nmap <leader>i iHello World<esc>
nmap <bslash> <space>
我可以使用<space>i
或<bslash>i
,它们都运行iHello World<esc>
映射。但这一点:
let mapleader =" "
nnoremap <leader>i iHello World<esc>
nnoremap <bslash> <space>
不管用。<space>i
运行映射,但<bslash>i
不运行,这正是应该期望的,因为nnoremap
用于避免嵌套/递归映射。因此,一个可能的解决方案是在任何地方使用nmap
。我绝对不建议这样做,因为您可能会在map循环中结束。这一解决方案应更好地发挥作用:
let mapleader =" "
nnoremap <leader>i iHello World<esc>
nmap <expr> <bslash> mapleader
请注意,如果您更改了mapleader设置,这将中断,因为,正如:h mapleader
所说:
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.
https://stackoverflow.com/questions/54787831
复制相似问题