开发者

Vim <CR> mapping not working?

开发者 https://www.devze.com 2023-03-01 00:49 出处:网络
I just recently got into using vim, and am having great fun adding load of useful plugins. Problem is that at some point during setting up all of my plugins I hadn\'t noticed that the mapping for the

I just recently got into using vim, and am having great fun adding load of useful plugins. Problem is that at some point during setting up all of my plugins I hadn't noticed that the mapping for the enter key stopped working properly. In insert mode, when I press enter, if there is currently no auto-complete menu, instead of creating a newline it prints this:

pumvisible() ? "\" : "\"

Here is my 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("<afile>: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!
s开发者_StackOverflowet smartcase

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

nnoremap JJJJ <Nop>

" 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 <silent> <F2> :set nonumber!<CR>:set foldcolumn=0<CR>

" Open the Project Plugin
nnoremap <silent> <Leader>pal  :Project .vimproject<CR>

" TODO Mode
nnoremap <silent> <Leader>todo :execute TodoListMode()<CR>

" Open the TagList Plugin <F3>
nnoremap <silent> <F3> :Tlist<CR>

" Open the Fuf Plugin
nnoremap <silent> <F4> :FufFile<CR>

" Open the MRU Plugin
nnoremap <silent> <F5> :MRU<CR>

" Next Tab
nnoremap <silent> <C-Right> :tabnext<CR>

" Previous Tab
nnoremap <silent> <C-Left> :tabprevious<CR>

" New Tab
nnoremap <silent> <C-t> :tabnew<CR>

" Rotate Color Scheme <F8>
nnoremap <silent> <F8> :execute RotateColorTheme()<CR>

" DOS is for fools.
nnoremap <silent> <F9> :%s/$//g<CR>:%s// /g<CR>

" Paste Mode!  Dang! <F10>
nnoremap <silent> <F10> :call Paste_on_off()<CR>
set pastetoggle=<F10>

" Execute python file being edited with <Shift> + e:
map <buffer> <S-e> :w<CR>:!/usr/bin/env python % <CR>

" Edit vimrc \ev
nnoremap <silent> <Leader>ev :tabnew<CR>:e ~/.vimrc<CR>

" Edit gvimrc \gv
nnoremap <silent> <Leader>gv :tabnew<CR>:e ~/.gvimrc<CR>

" Up and down are more logical with g..
nnoremap <silent> k gk
nnoremap <silent> j gj
inoremap <silent> <Up> <Esc>gka
inoremap <silent> <Down> <Esc>gja

" Good call Benjie (r for i)
nnoremap <silent> <Home> i <Esc>r
nnoremap <silent> <End> a <Esc>r

" Create Blank Newlines and stay in Normal mode
nnoremap <silent> zj o<Esc>
nnoremap <silent> zk O<Esc>

" Space will toggle folds!
nnoremap <space> 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 <expr> <cr> pumvisible() ? "\<c-y>" : "\<c-g>u\<cr>"
inoremap <expr> <c-n> pumvisible() ? "\<lt>c-n>" : "\<lt>c-n>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>"
inoremap <expr> <m-;> pumvisible() ? "\<lt>c-n>" : "\<lt>c-x>\<lt>c-o>\<lt>c-n>\<lt>c-p>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>"

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

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

"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

And my loaded scripts:

  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

I'm new to vim, so if there is anything else that is needed please let me know.


Supertab includes a mapping to <CR> that conflicts with the "inoremap <expr> <cr> ..." mapping. Specifically if supertab is loaded after the other it breaks it. If the inoremap mapping comes after supertab is loaded then it works.

You could make your inoremap mappings after supertab by putting them in .vim/after/plugin/mappings.vim or similar.


You might try issuing the command :map <CR>, which will list current mappings for carriage return. If that doesn't help maybe you could try a grep across all the plugin files you have loaded for string that matches map <CR> and/or pumvisible.


What is this mapping supposed to be doing?

inoremap <expr> <cr> pumvisible() ? "\<c-y>" : "\<c-g>u\<cr>"

Seems like that's your problem. Not sure how to fix it, but I'm pretty sure if you take it out and restart, your return key will work again. I don't understand because return accepts the selected completion for me out of the box.

0

精彩评论

暂无评论...
验证码 换一张
取 消