0

这是一个非常奇怪的问题,它一直让我发疯。有一次,在我的 .vimrc 文件中,我有一行如下所示:

nnoremap <tab> gg=G''

我曾经重新缩进我的整个文件。时间在流逝,我决定要使用 % 之类的选项卡在打开/关闭标签/括号/等之间移动。所以我删除了上面的行,并将命令重新映射到 control-i(如 Eclipse)并将其替换为

nnoremap <tab> %
vnoremap <tab> %

我保存文件,获取它,关闭 vim,重新启动计算机,做任何事情,但不管我做什么,按 tab 仍然缩进整个文件。当我检查映射时

:verbose map <tab>

我得到的输出是:

v  <Tab>       * %
    Last set from ~/.vimrc
n  <Tab>       * gg=G''
    Last set from ~/.vimrc

同样,如果我尝试

:verbose nnoremap <tab>

我得到:

n  <Tab>       * gg=G''
    Last set from ~/.vimrc

我真的不确定这里发生了什么,映射肯定不再存在。这是我的.vimrc:

set nocompatible               " be iMproved
filetype off                   " required!
let mapleader = ","
nnoremap <leader><space> :noh<cr>
nnoremap ; :
nnoremap <leader>v <C-w>v<C-w>l
nnoremap <leader>h <C-w>s<C-w>j
nnoremap <leader>f :CtrlP<CR>
nnoremap <tab> %
vnoremap <tab> %
inoremap jk <ESC>l
nnoremap <C-i> gg=G''
nnoremap <up> <nop>
nnoremap <down> <nop>
nnoremap <left> <nop>
nnoremap <right> <nop>
inoremap <up> <nop>
inoremap <down> <nop>
inoremap <left> <nop>
inoremap <right> <nop>
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
syntax enable
set t_Co=16
set background=dark
set tabstop=2
set shiftwidth=2
set softtabstop=2
set smarttab
set expandtab
set number
set ignorecase
set smartcase
set gdefault
set incsearch
set showmatch
set hlsearch
set nobackup
set noswapfile
set smartindent
set hidden
set wildmenu
set nonumber
set nowrap
set relativenumber
set timeoutlen=100
set backspace=indent,eol,start
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle
" required! 
Bundle 'gmarik/vundle'

" My Bundles here:
"
" original repos on github
Bundle 'tpope/vim-rails.git'
Bundle 'tpope/vim-endwise.git'
Bundle 'tpope/vim-surround.git'
Bundle 'scrooloose/nerdcommenter.git'
Bundle 'scrooloose/syntastic.git'
Bundle 'jiangmiao/auto-pairs.git'
Bundle 'kien/ctrlp.vim'
Bundle 'altercation/vim-colors-solarized.git'
colorscheme solarized
" vim-scripts repos
Bundle 'bufexplorer.zip'
Bundle 'HTML-AutoCloseTag'
Bundle 'matchit.zip'
Bundle 'ruby-matchit'
Bundle 'Rename2'

filetype plugin indent on     " required!
filetype indent on
"
" Brief help
" :BundleList          - list configured bundles
" :BundleInstall(!)    - install(update) bundles
" :BundleSearch(!) foo - search(or refresh cache first) for foo
" :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle command are not allowed..
4

1 回答 1

4

<c-i>并且<tab>共享相同的密钥代码,因此它们无法相互区分。

使用与 不同的映射<c-i>。我建议你使用领导者,例如nnoremap <leader>i gg=G''

如需更多帮助,请参阅:

:h keycodes
:h mapleader
于 2013-07-18T17:14:51.223 回答