Vim的預覽窗口由:ptag等命令觸發,可用于預覽函數定義。但在缺省情況下,預覽窗口的高度是固定的,對于注釋信息較多的函數,往往不能完全顯示注釋,而對于注釋較少的函數,又會有多餘的行浪費屏幕空間。

下面的函數用于解決這個問題:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
" 調用:ptag命令預覽光標所在<word>的定義
" 對類C語言風格的函數/方法定義和注釋有效,對其餘情況仍沿用:ptag的原有效果
function! PTagIt()
exec "ptag ".expand("<cword>")
let cwin = winnr()
silent! wincmd P
let lnr = line('.')
if lnr < 3
return
endif
if foldlevel('.')>0
normal zo
endif
let chead = 0
let linestr = getline(lnr-1)
if linestr =~ '^\s*\*/'
let ptr = lnr-2
while ptr>0
let linestr = getline(ptr)
if linestr =~ '^\s*/\*'
let chead = ptr
break
endif
let ptr = ptr-1
endwhile
endif
if chead>0
exec 'resize '.(lnr-chead+1)
exec 'normal '.chead."z\<CR>"
exec 'normal '.lnr.'G'
endif
exec cwin.'wincmd w'
endfunction
nmap <leader>pp :call PTagIt()<CR>
nmap <leader>pc :pclose<CR>

例如對于如下的函數定義:

1
2
3
4
5
6
7
/*
* 我是一個測試函數
* @param int 我是整型形參
* @param string 我是字符串形參
* @param array 我是返回值
*/
function foo($bar1, $bar2) {...}

實際效果為打開的預覽窗口將完全顯示并只顯示以上內容。

Posted via UltraBlog.vim.