【问题标题】:How to disable tab completion in vim?如何在vim中禁用制表符完成?
【发布时间】:2014-07-02 01:44:35
【问题描述】:

从今天早上开始,我正在寻找一个没有任何运气的解决方案。你能告诉我如何禁用当我按 TAB 时出现的这个东西吗?

这是我的 .vimrc 文件:

set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" This is the Vundle package, which can be found on GitHub.
" For GitHub repos, you specify plugins using the
" 'user/repository' format
Plugin 'gmarik/vundle'

" We could also add repositories with a ".git" extension
Plugin 'scrooloose/nerdtree.git'

" To get plugins from Vim Scripts, you can reference the plugin
" by name as it appears on the site
Plugin 'Buffergator'

" Syntax hihgler
Plugin 'scrooloose/syntastic'


" Pluginper gli snippet
Plugin 'msanders/snipmate.vim'

" Plugin per la gestione delle parentesi, per maggiori informazioni: https://github.com/jiangmiao/auto-pairs
 Plugin 'jiangmiao/auto-pairs'


" Now we can turn our filetype functionality back on
filetype plugin indent on

" Enable syntax high.
syntax on

" Set the default charset
set encoding=utf-8 nobomb

" Enable line number
set number

" Highligth cursor line
set cursorline

" Set tab as 2 white space
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab


" Enable mouse in all mode
set mouse=a

" Show the cursor position
set ruler

" Show the filename inside the titlebar
set title


" Strip trailing whitespace (,ss)
function! StripWhitespace()
    let save_cursor = getpos(".")
    let old_query = getreg('/')
    :%s/\s\+$//e
    call setpos('.', save_cursor)
    call setreg('/', old_query)
endfunction



" Map CTRL+n to toggle nerdtree
map <C-n> :NERDTreeToggle<CR>

"  close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

filetype plugin on


" More Common Settings.
 set scrolloff=3
 set autoindent
 set showmode
 set hidden
 set visualbell

【问题讨论】:

  • 由于这不是默认行为,应该有一些插件映射选项卡。要找出哪个插件 verbose imap &lt;tab&gt; 或 (verbose imap &lt;buffer&gt; &lt;tab&gt;) 应该告诉你它最后设置的位置。然后禁用该插件。

标签: vim autocomplete tabs


【解决方案1】:

您似乎键入了 CTRLNCTRLP,如屏幕截图底部所述。

这是关键字完成的默认键。您可能会尝试找出 TAB 重新映射到完成的原因和位置,:verbose imap &lt;Tab&gt; 会显示最后一次重新定义的位置。

我会怀疑像 SuperTab 这样的东西,它使用 TAB 来完成各种完成,但我在你的 .vimrc 中看不到它。

【讨论】:

  • 是的,我昨天确实安装了 supertab。但后来我从 .vimrc 文件中删除了它并运行 :PluginClean。我还以为卸载了我现在怎样才能删除它?
  • 我对 Vundle 不熟悉,但我认为 Vundle 将插件安装在您的 $HOME/.vim/ 目录中。您可以搜索此目录并手动删除 SuperTab 文件。 'verbose imap` 会告诉你脚本文件的名称。
  • 是的,我做到了!我找到了文件 .vim/plugin/supertab.vim。一旦删除,选项卡完成就消失了!谢谢!
【解决方案2】:

可以通过&lt;c-y&gt; 停止完成并接受当前的完成,或者通过&lt;c-e&gt; 停止完成并恢复完成前的文本。然而,停止完成的最常见方法是键入非关键字字符,如空格或符号。

需要注意的是,在插入模式下,Vim 默认不会在&lt;tab&gt; 上完成。相反,它使用&lt;c-n&gt;&lt;c-p&gt;。如果在 &lt;tab&gt; 上完成,那么您可能希望按照 @FDinoff 的建议通过 :verbose imap &lt;tab&gt; 跟踪映射。

如需更多帮助,请参阅:

:h ins-completion

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2011-11-29
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多