这是我的.vimrc
set mouse=a
set ttymouse=xterm2
set number
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
inoremap { {}<Left>
inoremap {<CR> {<CR>}<Esc>O
inoremap {{ {
inoremap {} {}
inoremap ( ()<Left>
inoremap [ []<Left>
noremap ; l
noremap l k
noremap k j
noremap j h
set nocompatible
filetype plugin on
我尝试将 hjkl 重新映射到 jkl;,因为这对我来说更有意义(我不必将手从主行移开即可移动)。但似乎旧的映射仍然存在。所以现在 hjkl 和 jkl; 会将光标移向一个方向,在尝试向上或向下移动时产生对角线光标移动。
我做错了什么?noremap 应该删除旧的映射,对吗?
编辑:我是个白痴,vimrc 中有空格把它搞砸了。
答案1
指定新键绑定的行末尾的尾随空格也会导致包含额外的空格键击。这就是为什么 OP 在重新映射hjkl
到时会出现对角光标移动的原因jkl;
。这也适用于任何重新映射。
例如,如果我的 .vimrc 文件中有以下内容:
noremap a ik
a
ik
将按顺序映射到按键(即按下i然后按k)。