当前位置:  开发笔记 > 编程语言 > 正文

Vim <CR>映射不起作用?

如何解决《Vim<CR>映射不起作用?》经验,为你挑选了1个好方法。

我刚刚开始使用vim,并且非常有趣地添加了大量有用的插件.问题是,在设置我的所有插件的某个时刻,我没有注意到enter键的映射停止正常工作.在插入模式下,当我按回车键时,如果当前没有自动完成菜单,则不会创建换行符,而是打印:

pumvisible() ? "\" : "\"

这是我的vimrc:

"{{{Auto Commands

" Improve python indentation and higlighting
autocmd FileType python set complete+=k~/.vim/syntax/python.vim isk+=.,(

" Automatically cd into the directory that the file is in
autocmd BufEnter * execute "chdir ".escape(expand("%:p:h"), ' ')

" Remove any trailing whitespace that is in the file
autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif

" Restore cursor position to where it was before
augroup JumpCursorOnEdit
   au!
   autocmd BufReadPost *
            \ if expand(":p:h") !=? $TEMP |
            \   if line("'\"") > 1 && line("'\"") <= line("$") |
            \     let JumpCursorOnEdit_foo = line("'\"") |
            \     let b:doopenfold = 1 |
            \     if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) |
            \        let JumpCursorOnEdit_foo = JumpCursorOnEdit_foo - 1 |
            \        let b:doopenfold = 2 |
            \     endif |
            \     exe JumpCursorOnEdit_foo |
            \   endif |
            \ endif
   " Need to postpone using "zv" until after reading the modelines.
   autocmd BufWinEnter *
            \ if exists("b:doopenfold") |
            \   exe "normal zv" |
            \   if(b:doopenfold > 1) |
            \       exe  "+".1 |
            \   endif |
            \   unlet b:doopenfold |
            \ endif
augroup END

"}}}

"{{{Misc Settings

" Necesary  for lots of cool vim things
set nocompatible

" This shows what you are typing as a command.  I love this!
set showcmd

" Folding Stuffs
set foldmethod=marker

" Needed for Syntax Highlighting and stuff
filetype on
filetype plugin on
syntax enable
set grepprg=grep\ -nH\ $*

" Who doesn't like autoindent?
set autoindent

" Spaces are better than a tab character
set expandtab
set smarttab

" Who wants an 8 character tab?  Not me!
set shiftwidth=4
set softtabstop=4

" Use english for spellchecking, but don't spellcheck by default
if version >= 700
   set spl=en spell
   set nospell
endif

" Real men use gcc
"compiler gcc

" Cool tab completion stuff
set wildmenu
set wildmode=list:longest,full

" Enable mouse support in console
set mouse=a

" Got backspace?
set backspace=2

" Line Numbers PWN!
set number

" Ignoring case is a fun trick
set ignorecase

" And so is Artificial Intellegence!
set smartcase

" This is totally awesome - remap jj to escape in insert mode.  You'll never type jj anyway, so it's great!
inoremap jj 

nnoremap JJJJ 

" Incremental searching is sexy
set incsearch

" Highlight things that we find with the search
set hlsearch

" Since I use linux, I want this
let g:clipbrdDefaultReg = '+'

" When I close a tab, remove the buffer
set nohidden

" Set off the other paren
highlight MatchParen ctermbg=4
" }}}

"{{{Look and Feel

" Favorite Color Scheme
if has("gui_running")
   colorscheme desert
   " Remove Toolbar
   set guioptions-=T
   "Terminus is AWESOME
   set guifont=Terminus\ 9
   set lines=999 columns=999
else
   colorscheme desert
endif

"Status line gnarliness
set laststatus=2
set statusline=%F%m%r%h%w\ (%{&ff}){%Y}\ [%l,%v][%p%%]

" }}}

"{{{ Functions

"{{{ Open URL in browser

function! Browser ()
   let line = getline (".")
   let line = matchstr (line, "http[^   ]*")
   exec "!konqueror ".line
endfunction

"}}}

"{{{Theme Rotating
let themeindex=0
function! RotateColorTheme()
   let y = -1
   while y == -1
      let colorstring = "inkpot#ron#blue#elflord#evening#koehler#murphy#pablo#desert#torte#"
      let x = match( colorstring, "#", g:themeindex )
      let y = match( colorstring, "#", x + 1 )
      let g:themeindex = x + 1
      if y == -1
         let g:themeindex = 0
      else
         let themestring = strpart(colorstring, x + 1, y - x - 1)
         return ":colorscheme ".themestring
      endif
   endwhile
endfunction
" }}}

"{{{ Paste Toggle
let paste_mode = 0 " 0 = normal, 1 = paste

func! Paste_on_off()
   if g:paste_mode == 0
      set paste
      let g:paste_mode = 1
   else
      set nopaste
      let g:paste_mode = 0
   endif
   return
endfunc
"}}}

"{{{ Todo List Mode

function! TodoListMode()
   e ~/.todo.otl
   Calendar
   wincmd l
   set foldlevel=1
   tabnew ~/.notes.txt
   tabfirst
   " or 'norm! zMzr'
endfunction

"}}}

"}}}

"{{{ Mappings

" Toggle line numbers and fold column for easy copying
nnoremap   :set nonumber!:set foldcolumn=0

" Open the Project Plugin
nnoremap  pal  :Project .vimproject

" TODO Mode
nnoremap  todo :execute TodoListMode()

" Open the TagList Plugin 
nnoremap   :Tlist

" Open the Fuf Plugin
nnoremap   :FufFile

" Open the MRU Plugin
nnoremap   :MRU

" Next Tab
nnoremap   :tabnext

" Previous Tab
nnoremap   :tabprevious

" New Tab
nnoremap   :tabnew

" Rotate Color Scheme 
nnoremap   :execute RotateColorTheme()

" DOS is for fools.
nnoremap   :%s/$//g:%s// /g

" Paste Mode!  Dang! 
nnoremap   :call Paste_on_off()
set pastetoggle=

" Execute python file being edited with  + e:
map   :w:!/usr/bin/env python % 

" Edit vimrc \ev
nnoremap  ev :tabnew:e ~/.vimrc

" Edit gvimrc \gv
nnoremap  gv :tabnew:e ~/.gvimrc

" Up and down are more logical with g..
nnoremap  k gk
nnoremap  j gj
inoremap   gka
inoremap   gja

" Good call Benjie (r for i)
nnoremap   i r
nnoremap   a r

" Create Blank Newlines and stay in Normal mode
nnoremap  zj o
nnoremap  zk O

" Space will toggle folds!
nnoremap  za

" Search mappings: These will make it so that going to the next one in a
" search will center on the line it's found in.
map N Nzz
map n nzz

" Testing
set completeopt=longest,menuone,preview

inoremap   pumvisible() ? "\" : "\u\"
inoremap   pumvisible() ? "\c-n>" : "\c-n>\c-r>=pumvisible() ? \"\\down>\" : \"\"\cr>"
inoremap   pumvisible() ? "\c-n>" : "\c-x>\c-o>\c-n>\c-p>\c-r>=pumvisible() ? \"\\down>\" : \"\"\cr>"

" Swap ; and :  Convenient.
nnoremap ; :
nnoremap : ;

" Fix email paragraphs
nnoremap par :%s/^>$//

"ly$O#{{{ "lpjjj_%A#}}}jjzajj

"}}}

"{{{Taglist configuration
let Tlist_Use_Right_Window = 1
let Tlist_Enable_Fold_Column = 0
let Tlist_Exit_OnlyWindow = 1
let Tlist_Use_SingleClick = 1
let Tlist_Inc_Winwidth = 0
"}}}

let g:rct_completion_use_fri = 1
"let g:Tex_DefaultTargetFormat = "pdf"
let g:Tex_ViewRule_pdf = "kpdf"

let g:pydiction_location = "/home/axilus/.vim/after/ftplugin/python_pydiction/complete-dict"

filetype plugin indent on
syntax on

我加载的脚本:

  1: /usr/share/vim/vimrc
  2: /usr/share/vim/vim72/debian.vim
  3: /usr/share/vim/vim72/syntax/syntax.vim
  4: /usr/share/vim/vim72/syntax/synload.vim
  5: /usr/share/vim/vim72/syntax/syncolor.vim
  6: /usr/share/vim/vim72/filetype.vim
  7: /home/axilus/.vimrc
  8: /usr/share/vim/vim72/ftplugin.vim
  9: /usr/share/vim/vim72/syntax/nosyntax.vim
 10: /usr/share/vim/vim72/colors/desert.vim
 11: /usr/share/vim/vim72/indent.vim
 12: /home/axilus/.vim/plugin/EasyMotion.vim
 13: /home/axilus/.vim/plugin/NERD_tree.vim
 14: /home/axilus/.vim/plugin/fuf.vim
 15: /home/axilus/.vim/autoload/l9.vim
 16: /home/axilus/.vim/autoload/fuf.vim
 17: /home/axilus/.vim/autoload/fuf/buffer.vim
 18: /home/axilus/.vim/autoload/fuf/file.vim
 19: /home/axilus/.vim/autoload/fuf/coveragefile.vim
 20: /home/axilus/.vim/autoload/fuf/dir.vim
 21: /home/axilus/.vim/autoload/fuf/bookmarkfile.vim
 22: /home/axilus/.vim/autoload/fuf/bookmarkdir.vim
 23: /home/axilus/.vim/autoload/fuf/tag.vim
 24: /home/axilus/.vim/autoload/fuf/buffertag.vim
 25: /home/axilus/.vim/autoload/fuf/taggedfile.vim
 26: /home/axilus/.vim/autoload/fuf/jumplist.vim
 27: /home/axilus/.vim/autoload/fuf/changelist.vim
 28: /home/axilus/.vim/autoload/fuf/quickfix.vim
 29: /home/axilus/.vim/autoload/fuf/line.vim
 30: /home/axilus/.vim/autoload/fuf/help.vim
 31: /home/axilus/.vim/autoload/fuf/givenfile.vim
 32: /home/axilus/.vim/autoload/fuf/givendir.vim
 33: /home/axilus/.vim/autoload/fuf/givencmd.vim
 34: /home/axilus/.vim/autoload/fuf/callbackfile.vim
 35: /home/axilus/.vim/autoload/fuf/callbackitem.vim
 36: /home/axilus/.vim/plugin/l9.vim
 37: /home/axilus/.vim/plugin/matchit.vim
 38: /home/axilus/.vim/plugin/mru.vim
 39: /home/axilus/.vim/plugin/pydoc.vim
 40: /home/axilus/.vim/plugin/snipMate.vim
 41: /home/axilus/.vim/plugin/supertab.vim
 42: /home/axilus/.vim/plugin/surround.vim
 43: /home/axilus/.vim/plugin/taglist.vim
 44: /home/axilus/.vim/plugin/tcomment.vim
 45: /usr/share/vim/vim72/plugin/getscriptPlugin.vim
 46: /usr/share/vim/vim72/plugin/gzip.vim
 47: /usr/share/vim/vim72/plugin/matchparen.vim
 48: /usr/share/vim/vim72/plugin/netrwPlugin.vim
 49: /usr/share/vim/vim72/plugin/rrhelper.vim
 50: /usr/share/vim/vim72/plugin/spellfile.vim
 51: /usr/share/vim/vim72/plugin/tarPlugin.vim
 52: /usr/share/vim/vim72/plugin/tohtml.vim
 53: /usr/share/vim/vim72/plugin/vimballPlugin.vim
 54: /usr/share/vim/vim72/plugin/zipPlugin.vim
 55: /home/axilus/.vim/after/plugin/snipMate.vim
 56: /home/axilus/.vim/nerdtree_plugin/exec_menuitem.vim
 57: /home/axilus/.vim/nerdtree_plugin/fs_menu.vim

我是vim的新手,所以如果还有其他需要请告诉我.



1> John Eikenbe..:

Supertab包含到的映射,该映射与"inoremap ..."映射冲突.具体来说,如果supertab在另一个之后加载则会破坏它.如果inoremap映射在加载supertab之后出现,则它可以工作.

您可以在supertab之后通过将它们放在.vim/after/plugin/mappings.vim或类似的内容来进行inoremap映射.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有