当我使用重新映射的<esc> </esc>时,Vim光标向前移动7个字符

时间:2015-02-22 06:52:33

标签: vim

我第一次写了自己的.vimrc。我已经习惯了使用&#34; kj&#34;作为Escape的替代品,我添加了重新映射。这是我的.vimrc的副本:

set nocompatible
filetype off

" Plugins
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Plugin 'gmarik/Vundle.vim'

Plugin 'sjl/badwolf'
Plugin 'scrooloose/nerdtree'
Plugin 'scrooloose/syntastic'
Plugin 'scrooloose/nerdcommenter'
Plugin 'tpope/vim-fugitive'
Plugin 'kien/ctrlp.vim'
Plugin 'majutsushi/tagbar'
Plugin 'bling/vim-airline'
Plugin 'bronson/vim-trailing-whitespace'

call vundle#end()
filetype plugin indent on

" Ctrl P
let g:ctrlp_atch_window = 'bottom,order:ttb'
let g:ctrlp_switch_buffer = 0
let g:ctrlp_working_path_mode = 0

" Syntastic
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

let g:syntastic_js_checkers = ['jshint']

" Fugitive
set statusline+=%{fugitive#statusline()}

" Vim Airline
set laststatus=2

" Colors
syntax enable
colorscheme badwolf
let g:badwolf_darkgutter=1

" Misc
set ttyfast
set backspace=indent,eol,start

" Spaces & Tabs
set tabstop=2
set expandtab
set softtabstop=2
set shiftwidth=2
set autoindent

" UI Layout
set number
set showcmd
set cursorline
set wildmenu
set showmatch
match Error /\%81v.\+/

" Searching
set ignorecase
set incsearch
set hlsearch

" Folding
" set foldmethod=indent
" set foldnestmax=10
" set foldenable
" nnoremap <space> za
" set foldlevelstart=10

" Shortcut Remmaping
inoremap kj <Esc>       
vnoremap kj <Esc>

" Movement
" nnoremap <buffer> <silent> j gj
" nnoremap <buffer> <silent> k gk
map <C-h> :wincmd h<CR>
map <C-j> :wincmd j<CR>
map <C-k> :wincmd k<CR>
map <C-l> :wincmd l<CR>

" Leader Shortcuts
let mapleader=","
let g:mapleader=","
nnoremap <leader>w :NERDTree<CR>
nnoremap <leader>l :call ToggleNumber()<CR>
nnoremap <leader><space> <silent> :nohlsearch<CR>
nnoremap <leader>t :TagbarToggle<CR>

" Custom Functions
function! ToggleNumber()
  if(&relativenumber == 1)
    set norelativenumber
    set number
  else
    set relativenumber
  endif
endfunc

" Return to last edit position when opening files (You want this!)
autocmd BufReadPost *
     \ if line("'\"") > 0 && line("'\"") <= line("$") |
     \   exe "normal! g`\"" |
     \ endif
" Remember info about open buffers on close
set viminfo^=%

当我加入&#34; kj&#34;按下&#34; kj&#34;在插入模式下,我进入正常模式,然后我的光标向前移动7个字符。如果没有重新映射,只需将字母输入缓冲区即可。

我已尝试禁用所有插件,但问题仍然存在。这让我很生气,任何想法可能导致这种情况发生?

1 个答案:

答案 0 :(得分:3)

inoremap kj <Esc>之后有一个尾随空格,它被解释为映射的一部分。尝试删除这些空格。