2012-12-12 30 views
8

में चारों ओर रैप करने के लिए एक तरह से मैं यह चाहते हैं ताकि सबसे खिड़की सही से Ctrl-डब्ल्यूकश्मीर टाइपिंग विम में छोड़ दिया सबसे खिड़की ध्यान केंद्रित करेंगे है। स्पष्ट रूप से यह सभी दिशाओं में काम करने के लिए आसान होगा।वहाँ खिड़की नेविगेशन विम

मेरा मुख्य प्रेरणा एनईआरडीटी के साथ उपयोग के लिए है। मैं आम तौर पर निम्न सेटअप:

|----------|----------|-----------| 
|   |   |   | 
| NERDTree | File1 | File2 | 
|   |   |   | 
|   |----------|-----------| 
|   |   |   | 
|   | File3 | File4 | 
|   |   |   | 
|----------|----------|-----------| 

मैं एक ही विंडो में एक नई फ़ाइल को खोलने के लिए File4 के रूप में मैं वर्तमान में टाइप करने के लिए Ctrl-डब्ल्यूजे है चाहते हैं और यह काफी अच्छा होगा Ctrl-Wके के साथ एक ही परिणाम प्राप्त करने के लिए।

धन्यवाद।

+0

आपको इसे पूरा करने के लिए निश्चित रूप से कुछ कोड लिखना होगा और वांछित कुंजी-कॉम्बो पर मैप करना होगा। चेक करें: एच विंडो-मूव-कर्सर '; आंदोलन आदेश वहां सूचीबद्ध हैं। – plesiv

+0

यह मेरा विचार था। दुर्भाग्य से मैं अभी तक विम स्क्रिप्टिंग से परिचित नहीं हूं :) – Wes

उत्तर

2

एक सही/नीचे और बाएँ/ऊपर क्रमश: करने के लिए सभी खिड़कियों के माध्यम से

<C-w>w 

और

<C-w>W 

चक्र करने के लिए उपयोग कर सकते हैं। दोनों आदेश चारों ओर लपेटते हैं, इसलिए <C-w>w किसी बिंदु पर शीर्ष बाएं को समाप्त कर देगा और <C-w>W किसी बिंदु पर नीचे दाएं कोने वाला होगा।

:h window-move-cursor देखें।

या बस <C-w>b का उपयोग करें जो सीधे आपकी लक्षित विंडो पर जाता है।

4

आपको अपने $HOME/.vimrc में अपने स्वयं के मैपिंग के साथ डिफ़ॉल्ट आदेशों को ओवरराइड करना होगा जिसमें यह अतिरिक्त तर्क शामिल है। जब सामान्य चाल खिड़की को और नहीं बदलती है (यानी हम पहले से ही सीमा पर हैं), दूसरी तरफ कूदें।

" 
" Wrap window-move-cursor 
" 
function! s:GotoNextWindow(direction, count) 
    let l:prevWinNr = winnr() 
    execute a:count . 'wincmd' a:direction 
    return winnr() != l:prevWinNr 
endfunction 

function! s:JumpWithWrap(direction, opposite) 
    if ! s:GotoNextWindow(a:direction, v:count1) 
    call s:GotoNextWindow(a:opposite, 999) 
    endif 
endfunction 

nnoremap <silent> <C-w>h :<C-u>call <SID>JumpWithWrap('h', 'l')<CR> 
nnoremap <silent> <C-w>j :<C-u>call <SID>JumpWithWrap('j', 'k')<CR> 
nnoremap <silent> <C-w>k :<C-u>call <SID>JumpWithWrap('k', 'j')<CR> 
nnoremap <silent> <C-w>l :<C-u>call <SID>JumpWithWrap('l', 'h')<CR> 
nnoremap <silent> <C-w><Left> :<C-u>call <SID>JumpWithWrap('h', 'l')<CR> 
nnoremap <silent> <C-w><Down> :<C-u>call <SID>JumpWithWrap('j', 'k')<CR> 
nnoremap <silent> <C-w><Up> :<C-u>call <SID>JumpWithWrap('k', 'j')<CR> 
nnoremap <silent> <C-w><Right> :<C-u>call <SID>JumpWithWrap('l', 'h')<CR> 
+1

बकवास, किसी कारण से netrw पर यह skips – mcandre