vim tab 自动补全,怎样取消其提示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim tab 自动补全,怎样取消其提示相关的知识,希望对你有一定的参考价值。

之前设置了 vim tab 自动补全提示,但是有一个问题是,当我在一行行首,希望 tab 缩进一下的时候,它也会弹出自动补全提示窗口,并且尝试多个按键都不能撤销其已上位内容,该怎么处理?(部分表述可能不够专业,不知道术语,还请各位朋友理解就好。)

举例:

如上图,1,3 行先输入了
test

test again

之后在第5行,我希望按 tab 缩进一级,我没有先输入任何内容,直接 tab,它会弹出上图那样的提示窗口,并且内容 test 已上位,我无法取消其上位,以一级 tab 缩进替代,希望各位朋友指教?

比如很多其他环境也会有 tab 自动补全,但是按 esc 就可以撤销其补全的内容,保留自己输入的部分,然后再按 tab 就不自动补全而是跳格。但在此处按 esc 是切换到 normal 模式,并且保留已上位内容,比如现在处于上图情况,按 esc 则会转换到 normal 模式,并且 test 成为输入内容。我知道可以再按 >> 来取得缩进效果,但是这样每次在行首希望缩进都得反复击键多次非常麻烦。
================================================
补充:
或者能提供比较好的自动补全解决方案吗?

在Vim 7.4的帮助文档中有这样一段:


For example, the following will map <Tab> to either actually insert a <Tab> if
the current line is currently only whitespace, or start/continue a CTRL-N
completion operation:

        function! CleverTab()
           if strpart( getline('.'), 0, col('.')-1 ) =~ '^\\s*$'
              return "\\<Tab>"
           else
              return "\\<C-N>"
           endif
        endfunction
        inoremap <Tab> <C-R>=CleverTab()<CR>


也就是说,把上面这段代码贴进配置文件就可以实现:当光标到行首都未出现非空白字符时,Tab还是Tab;否则,Tab就被映射为Ctrl+N的补全命令。用:help expression查看语法,弄明白了可以自己写函数搞点高级功能。

参考技术A 这个tab补全是很蛋疼的事,建议不要折腾
之前我折腾了很久最后也装过插件supertab但还是用的很不爽,
还是用回原生的Ctrl+n和Ctrl+p来补全追问

多谢,不过刚刚后来在搜索的过程中发现有人还有其他的一些补全需求,比如说输入一个括号自动分行之类的,看到有在配置中编写函数的方法,估计可以解决,不过这几天事儿多确实没心力搞这个。后面找到解决方案了也跟你分享一下。或者也说不定还有朋友已经做了类似的工作。

追答

我猜您说的其他的一些补全需大多应该是比较个性化的,使用键盘映射实现

比如再vimrc配置文件中添加后

inoremap  <CR><CR><ESC>kia<ESC>gg=G<C-o><C-o>zzws

打到

int func()

后再输入两个大括号就变成

int func()

    //在此处进入插入模式

追问

嗯对,瞄到的就是类似这个的东西,想是既然可以写函数,应该可以实现,不过因为刚接触 vim 不久,可能对巧妙点的解决方案不够敏感。

Linux Vim中自动补全Python插件:Pydiction

Pydiction 可以是我们使用Tab键自动补全Python代码在Vim,是一款非常不错的插件。

Pydiction不需要安装,所有没有任何依赖包问题,Pydiction主要包含三个文件。

python_pydiction.vim  -- Vim plugin that autocompletes Python code.

complete-dict         -- Dictionary file of Python keywords, modules, etc.

pydiction.py          -- Python script to add more words to complete-dict.

1、下载Pydiction

(1)wget https://github.com/rkulla/pydiction/archive/master.zip #自行下载上传Linux

(2)#这里我使用Git直接下载:git clone https://github.com/rkulla/pydiction.git

2、创建目录并复制文件

mkdir -pv  ~/.vim/tools/pydiction

cp -r pydiction/after ~/.vim

cp pydiction/complete-dict ~/.vim/tools/pydiction

确保目录结构如下:

[[email protected] ~]# tree .vim

.vim

├── after

│   └── ftplugin

│       └── python_pydiction.vim

└── tools

└── pydiction

└── complete-dict

4 directories, 2 files

rm -f pydiction #删除程序文件

3、新建.vimrc文件

vim ~/.vimrc

添加如下配置:

filetype plugin on

let g:pydiction_location = ‘~/.vim/tools/pydiction/complete-dict‘

let g:pydiction_menu_height = 3

到此配置完成,效果如图



本文出自 “Ljohn” 博客,请务必保留此出处http://ljohn.blog.51cto.com/11932290/1931986

以上是关于vim tab 自动补全,怎样取消其提示的主要内容,如果未能解决你的问题,请参考以下文章

交互模式下PYTHON自动补全和VIM中PYTHON自动补全

Python基础 (tab自动补全)

centos6.6 vim自动补全python代码

Mac终端命令自动补全

windows 如何命令补全

Linux Vim中自动补全Python插件:Pydiction