Vim <CR>отображение не работает? - PullRequest
7 голосов
/ 26 апреля 2011

Я только недавно начал использовать vim, и мне очень нравится добавлять множество полезных плагинов. Проблема в том, что в какой-то момент во время настройки всех моих плагинов я не заметил, что отображение для клавиши ввода перестало работать должным образом. В режиме вставки, когда я нажимаю клавишу ввода, если в настоящее время нет меню автозаполнения, вместо создания новой строки выводится следующее:

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("<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!
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 <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

И мои загруженные скрипты:

  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, поэтому, если есть что-то еще, пожалуйста, дайте мне знать.

Ответы [ 3 ]

5 голосов
/ 27 августа 2011

Supertab включает отображение на , которое конфликтует с отображением "inoremap ...".В частности, если supertab загружается после другого, он ломает его.Если отображение inoremap происходит после загрузки supertab, то оно работает.

Вы можете сделать свои отображения inoremap после supertab, поместив их в .vim / after / plugin / mappings.vim или аналогичный.

2 голосов
/ 26 апреля 2011

Что должно делать это отображение?

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

Похоже, это твоя проблема. Не уверен, как это исправить, но я уверен, что если вы достанете его и перезагрузите, ваш ключ возврата снова заработает. Я не понимаю, потому что возврат принимает выбранное завершение для меня из коробки.

2 голосов
/ 26 апреля 2011

Вы можете попробовать ввести команду :map <CR>, в которой будут перечислены текущие сопоставления для возврата каретки.Если это не помогает, возможно, вы можете попробовать grep для всех файлов плагинов, которые вы загрузили, для строки, которая соответствует map <CR> и / или pumvisible.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...