2个vim问题

Vim、Emacs配置和使用
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

2个vim问题

#1

帖子 eexpress » 2012-08-25 16:18

一直使用

代码: 全选

imap <TAB> <C-p>
想写一个函数,光标前面有alphanumber的时候,是补全。否则(尤其是行首,前面是空白\s的时候)是输入tab。

还有,这补全菜单的颜色配置,不好。如果只有2个可选的时候,老分不清当前是那个。。。要是能在当前可选前面加上一个标记,比如>或者O啥的,才清晰。
附件
screenshot1.png
screenshot1.png (12.01 KiB) 查看 2075 次
● 鸣学
头像
linuxer1024
帖子: 650
注册时间: 2012-06-05 12:12
来自: 湖南长沙
送出感谢: 0
接收感谢: 2 次
联系:

Re: 2个vim问题

#2

帖子 linuxer1024 » 2012-08-25 16:35

只会使用linux桌面的飘过,编程之类的不懂,纯支持同城兄弟。 :em01









-----------------
http://burner1024.blog.163.com/
薄荷开源网 | 专注Linux桌面
http://www.mintos.org/
头像
noble_out
帖子: 150
注册时间: 2012-04-20 15:58
系统: ubuntu12.04+windows8
来自: 中华人民共和国
送出感谢: 2 次
接收感谢: 0
联系:

Re: 2个vim问题

#3

帖子 noble_out » 2012-08-25 17:17

vim插件能满足各种各样的功能,就是补全插件功能太弱,而且又不好配置!
研究了好长时间,个人认为到目前很难突破neocomplcache+OmniCppComplete+AutoComplPop+snipMate组合的补全功能。
只需配置neocomplcacae插件,我就是照抄它的帮助文档中示例配置,只是加了

代码: 全选

" Disable auto complete.
let g:neocomplcache_disable_auto_complete = 1
个人认为没必要一直开着自动补全,原因有两,一是提示框闪来闪去,伤眼睛;二是当输入->时,都要卡个2~3秒,不爽!

注释掉

代码: 全选

"inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
不知道你有没有用过snipMate插件,有时候snipMate比智能补全效率高(自己好好定制下snippets)!既然用了vim,就要适应CTRL+n和CTRL+p!TAB还是让给snipMate吧,绝对值!


对于提示框的颜色,不值得太纠结!不好看就换(那么多主题,总有个适合你!不过你要是有洁癖,追求绝对完美,那你就慢慢改吧),推荐你个主题:peaksea

代码: 全选

set t_Co=256
colorscheme peaksea
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 2个vim问题

#4

帖子 eexpress » 2012-08-25 17:40

我只用自带的补全。拒绝各种补全插件。原因你也知道嘛。
颜色不是重点,重点是要加前缀符号。
● 鸣学
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 2个vim问题

#5

帖子 eexpress » 2012-08-25 18:45

stardiviner 搞定的一个。
改成最简单的。

代码: 全选

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

inoremap <Tab> <C-R>=SuperCleverTab()<cr>
行首可行。行尾还不行。
● 鸣学
头像
numbchild
帖子: 107
注册时间: 2010-03-16 12:34
送出感谢: 0
接收感谢: 0

Re: 2个vim问题

#6

帖子 numbchild » 2012-08-25 18:58

neocomplcache+OmniCppComplete+AutoComplPop+snipMate[/b]组合的补全功能。

neocomplcache了还加AutoComplPop 根本就是多余, 重复的功能....
头像
ibear
帖子: 787
注册时间: 2006-10-19 8:43
来自: 长江口
送出感谢: 1 次
接收感谢: 2 次

Re: 2个vim问题

#7

帖子 ibear » 2012-08-30 15:06

我在虚拟终端中使用vim时就有分不清楚当前候选问题,试过多个主题,总没有满意的
在gvim中就没有问题了。可惜还是vim用的多,所以有些头疼
好好地做一个碌碌无为的人
头像
杨钧文
帖子: 143
注册时间: 2012-06-27 19:48
来自: 神奇国度
送出感谢: 0
接收感谢: 3 次

Re: 2个vim问题

#8

帖子 杨钧文 » 2012-08-30 19:07

代码: 全选

fun MyTab()
    let str= strpart(getline("."), 0, col(".")-1)
    if str!="" && str=~'\m\w$'
        return "\<C-N>"
    endif
    return "\t"
endfun

inoremap <expr> <Tab> MyTab()
这些用户感谢了作者 杨钧文 于这个帖子:
eexpress (2012-08-31 19:47)
评价: 3.7%
不知周之夢為胡蝶與,胡蝶之夢為周與?
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

Re: 2个vim问题

#9

帖子 fanhe » 2012-08-31 14:22

第二个问题,只能改vim源码,这个需求确实有,我也很郁闷
有时间了就提交各patch吧
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 2个vim问题

#10

帖子 eexpress » 2012-08-31 14:50

fanhe 写了:第二个问题,只能改vim源码,这个需求确实有,我也很郁闷
有时间了就提交各patch吧
我觉得前面既然有空格,应该可以简单的hack下。。。不用改源码。说不定有方法。
● 鸣学
头像
自由建客
论坛版主
帖子: 13445
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 113 次
联系:

Re: 2个vim问题

#11

帖子 自由建客 » 2012-08-31 16:44

你难道就记不住哪种颜色表示选中?
头像
lilydjwg
论坛版主
帖子: 4164
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 2个vim问题

#12

帖子 lilydjwg » 2012-08-31 17:23

自由建客 写了:你难道就记不住哪种颜色表示选中?
+1
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

Re: 2个vim问题

#13

帖子 fanhe » 2012-08-31 17:32

eexpress 写了:
fanhe 写了:第二个问题,只能改vim源码,这个需求确实有,我也很郁闷
有时间了就提交各patch吧
我觉得前面既然有空格,应该可以简单的hack下。。。不用改源码。说不定有方法。
必须改源码的,因为本身就不提供这个功能

空格换成 * 就好了
头像
自由建客
论坛版主
帖子: 13445
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 113 次
联系:

Re: 2个vim问题

#14

帖子 自由建客 » 2012-08-31 19:18

我忍了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 2个vim问题

#15

帖子 eexpress » 2012-08-31 19:48

杨钧文, good job。
● 鸣学
回复

回到 “Vim和Emacs”