2012-05-29 17 views
1

我使用taglist()來獲取標籤列表。 後來我做了一些過濾,只留下一些有用的一個是這樣的:如何在窗口中顯示自定義標籤列表,如:tag或:ptag

let tttlist = taglist("^List$") 
"echo ttt 
let newtttlist = [] 
for item in tttlist 
    if item['kind'] == 'i' || item['kind'] == 'c' 
     call add(newtttlist, item) 
    endif 
endfor 
echo newtttlist 

但是,如何向他們展示,如:標記和:pTAG中的VIM?

回答

1

我看沒有辦法使用你所提到的這樣的解決方案是在列表中的第一個項目使用:execute:ptag/:tag命令的一個標籤小號顯示:

execute 'ptag' fnameescape(get(newtttlist, 0, '')) 

。更多的,在找到其中一個標籤後,您不需要處理標籤列表:

let tttlist = taglist("^List$") 
for item in tttlist 
    if item.kind == 'i' || item.kind == 'c' 
     execute 'ptag' fnameescape(item.name) 
    endif 
endfor 

。如果你的意思是別的東西,請在這裏發帖,告訴你如何使:ptag/:tag爲你顯示一個標籤列表:根據文檔和觀察到的行爲,他們所做的只是跳到第一個匹配。

另請注意:如果字典的關鍵字只包含拉丁字母,數字和下劃線,則可以將其作爲dict.key而不是dict['key']來訪問。當使用字典傳遞結構化數據時,它幾乎總是如此。

+0

感謝您的回覆。 但這不是我所需要的。 你的方式就像直接調用「:ptag List」一樣。 (我使用'List'作爲例子)。 我只想顯示標籤是'我'還是'c'。 – stevenfrog

+0

@stevenfrog你可以使用'echo' /'echom'來做到這一點。原始請求是「show like:tag /:ptag」,這些命令都不會向您顯示超過一個標籤(:標籤將跳轉到它,不顯示;:ptag將使用預覽窗口)。因此我不能說應該做什麼,因爲我不知道它們應該如何顯示。也許你甚至需要'echon' +'echohl'(例如,你不能模擬':tselect'的輸出)。 – ZyX

+0

如果你想要顯示的像'tselect',你應該考慮使用':execute'tselect /\V\^\%('.join(map(copy(newtttlist),'escape(v:val,「\\ 「)'),'\\ |')。'\)\ $'。 – ZyX

相關問題