我正试图进入Vim并重新映射键和诸如此类的东西,我偶然发现了一个奇怪的问题。我已经将hjkl重新映射到jkl;因为这对我来说更直观,但现在每当我按下;它向右移动了两次。不确定我真的介意它,因为它抵消了我的小指比我的其他手指弱的事实,但如果一个Vim忍者不介意阅读这个,我真的想知道为什么会发生这种情况。
这是我的.vimrc(底部,标记为Jae的Vim设置,摘自我教授的vim设置之一):
" jj => esc
:imap jj <Esc>
"remap navigation keys
:nnoremap ; l
:nnoremap l k
:nnoremap k j
:nnoremap j h
" highlight search
set hlsearch
"left-to-right wrapping
set whichwrap+=<,>,h,l,[,]
"Jae's Vim settings
"
" Line numbers
set number
" Syntax
syntax on
execute pathogen#infect()
filetype plugin indent on
" Buffer switching using Cmd-arrows in Mac and Alt-arrows in Linux
:nnoremap <D-Right> :bnext<CR>
:nnoremap <M-Right> :bnext<CR>
:nnoremap <D-Left> :bprevious<CR>
:nnoremap <M-Left> :bprevious<CR>
" and don't let MacVim remap them
if has("gui_macvim")
let macvim_skip_cmd_opt_movement = 1
endif
" When coding, auto-indent by 4 spaces, just like in K&R
" Note that this does NOT change tab into 4 spaces
" You can do that with "set tabstop=4", which is a BAD idea
set shiftwidth=4
" Always replace tab with 8 spaces, except for makefiles
set expandtab
autocmd FileType make setlocal noexpandtab
" My settings when editing *.txt files
" - automatically indent lines according to previous lines
" - replace tab with 8 spaces
" - when I hit tab key, move 2 spaces instead of 8
" - wrap text if I go longer than 76 columns
" - check spelling
autocmd FileType text setlocal autoindent expandtab softtabstop=2 textwidth=76 spell spelllang=en_us
" Don't do spell-checking on Vim help files
autocmd FileType help setlocal nospell
" Prepend ~/.backup to backupdir so that Vim will look for that directory
" before littering the current dir with backups.
" You need to do "mkdir ~/.backup" for this to work.
set backupdir^=~/.backup
" Also use ~/.backup for swap files. The trailing // tells Vim to incorporate
" full path into swap file names.
set dir^=~/.backup//
" Ignore case when searching
" - override this setting by tacking on \c or \C to your search term to make
" your search always case-insensitive or case-sensitive, respectively.
set ignorecase
"
" End of Jae's Vim settings
答案 0 :(得分:6)
问题是因为您的映射是错误的。你目前有
nnoremap ; l<space>
最后的额外空间被视为映射的一部分。由于<space>
默认情况下向右移动,因此会移动两个空格。删除多余的空间,它应该工作正常。