贴几个自己写的vim配置

Vim、Emacs配置和使用
回复
头像
alinmn
帖子: 185
注册时间: 2006-05-19 21:42
来自: NIT

贴几个自己写的vim配置

#1

帖子 alinmn » 2008-11-19 17:50

代码: 全选

"查找选中文本
vnoremap <c-s> "zy/<c-r>=substitute(escape(@z,'[]*.\\/'),'\n', '\\n', 'g')<cr><cr><cr>

"递归向上级目录查找cscope数据库
if has("gui_running")
	if has("cscope")
		let s:MyCurDir = getcwd()
		let s:MyOldDir = s:MyCurDir

		while 1
			if filereadable("cscope.out")
				if 0 == cscope_connection(2, "cscope.out", s:MyCurDir)
					exec "silent! cs add cscope.out " . s:MyCurDir
				endif
"				exec "setlocal path=\"" . s:MyCurDir . "/**\""
"				setlocal cpt-=i
				break
			endif
			if s:MyCurDir =~ '^[a-zA-Z]:\\$'
				break
			endif
			cd ..
			let s:MyCurDir = getcwd()
		endwhile

		exec "cd " . s:MyOldDir . ""

	endif
else
	if has("cscope")
		let s:MyCurDir = getcwd()
		let s:MyOldDir = s:MyCurDir

		while 1
			if filereadable("cscope.out")
				if 0 == cscope_connection(2, "cscope.out", s:MyCurDir)
					exec "silent! cs add cscope.out " . s:MyCurDir
				endif
"				exec "setlocal path=\"" . s:MyCurDir . "/**\""
"				setlocal cpt-=i
				break
			endif
			if s:MyCurDir =~ '^/$'
				break
			endif
			cd ..
			let s:MyCurDir = getcwd()
		endwhile

		let s:MyOldDir = escape(s:MyOldDir,' ')

		exec "cd " . s:MyOldDir
	endif
endif

"浮动窗口显示tag, 需要gui, 有点小bug,有时会报错
if has('gui_running')
	set ballooneval
	set balloondelay=100
	set balloonexpr=MyTagDisplay()

	function! MyTagDisplay()
		if empty(tagfiles())
			return ''
		endif
		let s:MyTagShow = []
		let s:MyTaglist = taglist("^" . escape(v:beval_text,'\*.$^') . "$")
		for s:MyTag in s:MyTaglist
			if s:MyTag['cmd'] =~ '^/\^.*\$/$'
				let s:MyTagShow += [strpart(s:MyTag['cmd'],2,strlen(s:MyTag['cmd'])-4)]
			endif
		endfor
		return join (s:MyTagShow,"\n")
	endfunction
endif

"使用模板, 新建或打开空文件时自动调用模板
autocmd FileType perl
			\ if 1 == line('$') && empty(getline(1)) |
			\	if has('gui_running')		|
			\		0r D:/xxxxx/templates\pl.pl |
			\	else				|
			\		0r /xxxxx/templates/pl.pl |
			\	endif	|
			\	normal G |
			\ endif

autocmd FileType sh
			\ if 1 == line('$') && empty(getline(1)) |
			\	if has('gui_running')		|
			\		0r D:/xxxx\templates\shell.sh |
			\	else				|
			\		0r /xxxx/templates/shell.sh |
			\	endif	|
			\	normal G |
			\ endif

"查找包含符合特定模式的字符串的行数
function! MyCountMatchLine(MyRegMatch) range
	let matchCount = 0
	for LineNum in range(a:firstline,a:lastline)
		let LineContent = getline(LineNum)
		if LineContent =~ a:MyRegMatch
			let matchCount += 1
		endif
	endfor
	echo matchCount
endfunction

"查找符合特定模式的字符串的个数
function! MyCountPattern(MyRegMatch) range
	let matchCount = 0
	for LineNum in range(a:firstline,a:lastline)
		let LineContent = getline(LineNum)
		let MyLineTmp = substitute(LineContent, a:MyRegMatch, '', 'g')
		let matchCount -= strlen(substitute(MyLineTmp, "[^@]", '', 'g'))
		let MyLineTmp = substitute(LineContent, a:MyRegMatch, '@', 'g')
		let matchCount += strlen(substitute(MyLineTmp, "[^@]", '', 'g'))
	endfor
	echomsg matchCount
endfunction

"C语言注释和反注释,虽然有EnhancedCommentify,但还是习惯自己写的
"Uncomment
:nnoremap <buffer> <silent> <F2>uc :.s+\(// *\\|/\* *\\| *\*/\)++g<CR>:silent! .s/\|+/\/*/g<CR>:silent! .s/+\|/*\//g<CR>:noh<CR>
"Comment
:nnoremap <buffer> <silent> <F2>cm :silent! .s/\/\*/\|+/g<CR>:silent! .s/\*\//+\|/g<CR>:.s/^\(.*\)$/\/* \1 *\//<CR>:noh<CR>
"Uncomment sub-comment
:vnoremap <buffer> <silent> <F2>usubcm :s+/\@<=\*\@=\\|\*\@<=/\@=+ +g<CR>:noh<CR>
"Virtual comment
:vnoremap <buffer> <silent> * :<ESC>'<O<Home>/*<ESC>'>o<Home>*/<ESC>:silent! '<,'>s/\/\*/\|+/g<CR>:silent! '<,'>s/\*\//+\|/g<CR>:noh<CR>
"Virtual uncomment
:vnoremap <buffer> <silent> u* :s+\(/\*\\|\*/\)++<CR>:silent! '<,'>s/\|+/\/*/g<CR>:silent! '<,'>s/+\|/*\//g<CR>:noh<CR>
"Virtual Partially comment
:vnoremap <buffer> <silent> <F2>pcm xi/*  */<ESC>hhP
mwwstuday
帖子: 88
注册时间: 2008-10-30 17:02

Re: 贴几个自己写的vim配置

#2

帖子 mwwstuday » 2008-11-19 19:50

很好。收藏。
楼主能写个vim for python的配置吗?
或者能告诉,那里有学习写vim配置的资料吗?
头像
alinmn
帖子: 185
注册时间: 2006-05-19 21:42
来自: NIT

Re: 贴几个自己写的vim配置

#3

帖子 alinmn » 2008-11-20 18:05

汗 不懂python Hacking vim不错 我以前发过 不过估计这种配置网上应该有吧
mwwstuday
帖子: 88
注册时间: 2008-10-30 17:02

Re: 贴几个自己写的vim配置

#4

帖子 mwwstuday » 2008-11-20 18:44

已经找到。
不是很合意。当然最大的原因,是自己水平不行。不是vim不够强大。
其实本意只是想找个人交流而已。
真要学习的话,根本不会到这里来。
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 贴几个自己写的vim配置

#5

帖子 xhy » 2008-11-20 19:01

怒赞 :em11
目前负债150多万
头像
alinmn
帖子: 185
注册时间: 2006-05-19 21:42
来自: NIT

Re: 贴几个自己写的vim配置

#6

帖子 alinmn » 2008-11-20 19:53

是啊 学习还是要系统一些 我就是野的 用了这么久还是菜鸟
mwwstuday
帖子: 88
注册时间: 2008-10-30 17:02

Re: 贴几个自己写的vim配置

#7

帖子 mwwstuday » 2008-11-20 21:40

alinmn 写了:是啊 学习还是要系统一些 我就是野的 用了这么久还是菜鸟
过谦了。我也是菜鸟。 :em01
有同感,学习是要系统一些。
说说,我用ubuntu和vim的感觉。
之所以开始学习python,当然是因为喜欢它。其次因为ubuntu的许多系统脚本都是用python写的。曾看见有贴子说,不能升级python到2.6,因为ubuntu比较依赖python。
vim写python还行,曾试过spe,emacs等写python。
各有优缺点。比较一下,自己选择了vim。
只是对它的一个脚本不太满意,按F8自动补全对象的方法属性等的。它是从头按字母顺序开始。而如果属性或方法是以w,x等字符开头会要找一大串。既浪费了时间,也不便捷。
其实,还真的挺怀念vs2005,在vs2005里学习c#的时候,对象的方法和属性自动补全十分方便。当然有它的副作用。
不过,我想,vim和emacs肯定也能实现。 :em09
或者有插件我没有找到,或者一些插件没有用全。
实在不行,自己学久了自己写一个。
所以,看到楼主自己写的配置,一时兴起,发了个帖子。

顺祝,楼主进步。
头像
alinmn
帖子: 185
注册时间: 2006-05-19 21:42
来自: NIT

Re: 贴几个自己写的vim配置

#8

帖子 alinmn » 2008-11-22 13:34

http://www.vim.org/scripts/script.php?script_id=1542
这个不知道是不是ls想要的
mwwstuday
帖子: 88
注册时间: 2008-10-30 17:02

Re: 贴几个自己写的vim配置

#9

帖子 mwwstuday » 2008-11-23 19:37

下载了,但是还没试。
对alinmn,表示感谢。
然后说一声再见。
昨天到朋友那里玩,他也装了ubunt系统,自己想查看一下cpu的信息,一时竟忘了用什么命令,而其实这在ubuntu的wiki入门中,都有。
深感,自己水平太低,想系统的学习一段时间lfs的学习。vim,和linux的基本系统的学习。
暂时,不泡论坛了。
等到自己能够制作了一个lfs在回来。
回复