vim tab 自动补全,怎样取消其提示
之前设置了vimtab自动补全提示,但是有一个问题是,当我在一行行首,希望tab缩进一下的时候,它也会弹出自动补全提示窗口,并且尝试多个按键都不能撤销其已上位内容,该怎么...
之前设置了 vim tab 自动补全提示,但是有一个问题是,当我在一行行首,希望 tab 缩进一下的时候,它也会弹出自动补全提示窗口,并且尝试多个按键都不能撤销其已上位内容,该怎么处理?(部分表述可能不够专业,不知道术语,还请各位朋友理解就好。)
举例:
如上图,1,3 行先输入了
test
test again
之后在第5行,我希望按 tab 缩进一级,我没有先输入任何内容,直接 tab,它会弹出上图那样的提示窗口,并且内容 test 已上位,我无法取消其上位,以一级 tab 缩进替代,希望各位朋友指教?
比如很多其他环境也会有 tab 自动补全,但是按 esc 就可以撤销其补全的内容,保留自己输入的部分,然后再按 tab 就不自动补全而是跳格。但在此处按 esc 是切换到 normal 模式,并且保留已上位内容,比如现在处于上图情况,按 esc 则会转换到 normal 模式,并且 test 成为输入内容。我知道可以再按 >> 来取得缩进效果,但是这样每次在行首希望缩进都得反复击键多次非常麻烦。
================================================
补充:
或者能提供比较好的自动补全解决方案吗? 展开
举例:
如上图,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查看语法,弄明白了可以自己写函数搞点高级功能。
展开全部
这个tab补全是很蛋疼的事,建议不要折腾
之前我折腾了很久最后也装过插件supertab但还是用的很不爽,
还是用回原生的Ctrl+n和Ctrl+p来补全
之前我折腾了很久最后也装过插件supertab但还是用的很不爽,
还是用回原生的Ctrl+n和Ctrl+p来补全
更多追问追答
追问
多谢,不过刚刚后来在搜索的过程中发现有人还有其他的一些补全需求,比如说输入一个括号自动分行之类的,看到有在配置中编写函数的方法,估计可以解决,不过这几天事儿多确实没心力搞这个。后面找到解决方案了也跟你分享一下。或者也说不定还有朋友已经做了类似的工作。
追答
我猜您说的其他的一些补全需大多应该是比较个性化的,使用键盘映射实现
比如再vimrc配置文件中添加后
inoremap {{ {<CR><CR>}<ESC>kia<ESC>gg=G<C-o><C-o>zzws
打到
int func()
后再输入两个大括号就变成
int func()
{
//在此处进入插入模式
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询