2015-11-09 12 views
5

मैं ctags का उपयोग कर रहा हूं और मैंने अपने vimrc में map <C-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR> जोड़ा। हालांकि, यह हर बार एक नया लंबवत विभाजन खुलता है। क्या हर बार एक नया खोलने के बिना लंबवत विभाजन पर टैग परिभाषाओं को दिखाने का कोई तरीका है?एक नया विभाजन खोलने के बिना लंबवत विभाजन पर टैग परिभाषा दिखाने के लिए ctags का कारण कैसे बनें?

अद्यतन: मैं यह भी जानना चाहूंगा कि सीटीएजी स्टैक का सामान्य रूप से इसका उपयोग करने का कोई तरीका है या नहीं। यही है, स्टैक से किसी स्थान को पॉप करने के लिए ctrl + t का उपयोग करें?

उत्तर

3

निम्न आदेश परिणाम आप देख रहे हैं को प्राप्त होता है:

:execute "vertical ptag " . expand("<cword>") 

तो, इस मानचित्रण भी काम करना चाहिए:

nnoremap <C-]> :execute "vertical ptag " . expand("<cword>")<CR> 

आप एक उच्च मूल्य के लिए 'previewheight' सेट कर सकते हैं ।

अद्यतन

एक वैकल्पिक समाधान के रूप में और आप टैग में नेविगेट रखना चाहते हैं, तो निम्नलिखित इस्तेमाल किया जा सकता:

function! FollowTag() 
    if !exists("w:tagbrowse") 
    vsplit 
    let w:tagbrowse=1 
    endif 
    execute "tag " . expand("<cword>") 
endfunction 

nnoremap <c-]> :call FollowTag()<CR> 

फिर भी, मुझे लगता है कि आप की जरूरत में संशोधन पर विचार करना चाहिए निम्न मानक विम शॉर्टकट्स को खाते में ले कर इस तरह का शॉर्टकट बनाएं:

  1. <c-]>: जूम टैग स्टैक अद्यतन कर्सर के तहत शब्द की टैग परिभाषा के लिए पीएस।
  2. <c-w>}: टैग परिभाषा के स्थान के साथ एक पूर्वावलोकन विंडो खोलता है। कर्सर अपनी स्थिति नहीं बदलता है, इसलिए टैग स्टैक अपडेट नहीं किया गया है।
  3. <c-w>z: पूर्वावलोकन विंडो बंद करें।
  4. <c-w>v: कर्सर की स्थिति को रखते हुए वर्तमान विंडो को दो में विभाजित करें।

तो, आप <c-w>} का उपयोग आप जल्दी से टैग घोषणा, <c-w>z के बाद जांच करने के लिए इसे बंद करना चाहते है, तो कर सकते हैं। लेकिन अगर आप नेविगेट करना चाहते हैं, तो टैग में नेविगेट करने के लिए मानक <c-] के बाद एक विभाजन बनाने के लिए आप बस <c-w>v का उपयोग कर सकते हैं। जब आप इसके साथ काम करते हैं, तो आप विंडो को <c-w>c से बंद कर सकते हैं।

+0

के बाद टैग परिभाषा पर ठीक नहीं जाता है, धन्यवाद, अगर मैं पूर्वावलोकनheight = 100 सेट करता हूं तो यह ठीक काम करता है। हालांकि, टैग स्टैक हमेशा खाली होगा। क्या आप समझा सकते हैं कि लंबवत ptag क्या करता है? क्या टैग स्टैक खाली होने का कारण है? – user1004985

+0

यदि आपने वर्तमान बफर नहीं छोड़ा है तो आपको स्टैक को अपडेट करने की आवश्यकता क्यों होगी? क्या आप अपना प्रश्न बता सकते हैं कि आप वास्तव में क्या हासिल करने की कोशिश कर रहे हैं? – Vitor

+0

प्रश्न अद्यतन किया गया। मेरा मतलब था, मैं पिछले स्थान पर जाने के लिए ctrl + t करने की कोशिश कर रहा था (स्टैक से एक स्थान पॉप करें) – user1004985

0

नीचे आदेश आप क्या चाहते हैं, कम से कम एक हैक-इश तरह से करना चाहिए:

nnoremap <C-]> :only<bar>vsplit<CR>:execute "tag" . expand('<cword>')<CR> 
+0

धन्यवाद। हालांकि, यह पहली बार – user1004985

संबंधित मुद्दे