2012-11-12 21 views
5

जब मैं विजुअल मोड दर्ज करता हूं, और बाद में पूर्ण संख्या में वापस लौटाता हूं तो मैं विम को रिश्तेदार लाइन नंबर पर स्विच करने की कोशिश कर रहा हूं।मैं रिमोट लाइन नंबरिंग (और केवल इन) विम के विजुअल मोड को कैसे सक्रिय कर सकता हूं?

autocmd InsertEnter :set rnu 
autocmd InsertLeave :set nu 

समस्या है, मैं दृश्य मोड के लिए एक समान लगता है नहीं कर पा रहे: मैं वहाँ InsertEnter और InsertLeave autocmd घटनाओं, जो मैं इस तरह इस्तेमाल कर सकते हैं देखा है।

उत्तर

5

दृश्य मोड के लिए ऐसी कोई घटना नहीं है (अभी तक कार्यान्वित; आप एक पैच सबमिट कर सकते हैं)। दृश्य मोड में प्रवेश करने के लिए, आप बस कुछ आदेशों दृश्य मोड में प्रवेश ओवरराइड कर सकते हैं: क्योंकि अलग स्पष्ट रूप से <Esc> के माध्यम से बाहर निकलने से, वहाँ कई आदेशों दृश्य मोड रोक रहे हैं

:nnoremap <silent> v v:<C-u>set nonu rnu<CR>gv 
:nnoremap <silent> V V:<C-u>set nonu rnu<CR>gv 
:nnoremap <silent> <C-v> <C-v>:<C-u>set nonu rnu<CR>gv 

'number' के बहाल, और अधिक कठिन है। सबसे अच्छा मैं CursorMoved पर एक ट्रिगर कर सकता हूं:

vnoremap <Esc> <Esc>:set nu<CR> 
:autocmd CursorMoved * if mode() !~# "[vV\<C-v>]" | set nu | endif