2012-01-28 5 views
27

मैं वीआईएम स्प्लिट विंडोज़ के बीच नेविगेट करने के लिए Ctrlडब्ल्यू का उपयोग कर रहा हूं। क्या ऐसा करने के लिए कोई अलग तरीके मौजूद हैं? के रूप में यह कई कीस्ट्रोक्स की आवश्यकता हैवैकल्पिक तरीके से वीआईएम विंडोज़ के बीच नेविगेटिंग

उदाहरण के लिए, अगर मेरे पास है, कहते हैं, 5 विभाजन खिड़कियां खोल दिया है और ऊपरी बाएं कोने खिड़की पर नेविगेट करना चाहते हैं, Ctrlडब्ल्यू बहुत ही असहज है।

उत्तर

38

इन तरह कुछ सेटअप क्यों नहीं करें?

nnoremap <C-h> <C-w>h 
nnoremap <C-j> <C-w>j 
nnoremap <C-k> <C-w>k 
nnoremap <C-l> <C-w>l 

बहुत जल्दी ...

+1

धन्यवाद। मुझे इस समाधान के बारे में पता है लेकिन मैं कुछ खोज रहा था जो किसी विशिष्ट विंडो पर नेविगेट करने की अनुमति देगा। वैसे भी, यदि कोई विकल्प मौजूद नहीं है तो यह एक संतोषजनक समाधान होना चाहिए। – Adas

+0

@Adas - कोई बेहतर तरीका नहीं है, न कि मुझे पता है। बात यह है कि, आप खिड़कियों के माध्यम से नेविगेट नहीं करते हैं (वे सिर्फ ... दृष्टिकोण हैं)। आप बफर के माध्यम से नेविगेट करें। तो यदि आपके पास 2x2 विंडो कॉन्फ़िगरेशन है, तो ऊपरी बाएं दूसरे, ऊपरी दाएं दूसरे और इतने पर नहीं होंगे ... – Rook

+2

मेरे पास 'nnoremap w' है, क्योंकि मैंने कभी भी सामान्य मोड में रिटर्न कुंजी का उपयोग नहीं किया है। फिर विभाजन के माध्यम से चक्र के लिए यह आसान है। –

3

आप अपने vimrc में nnoremap आदेश का उपयोग कर सकते हैं कस्टम कीबाइंडिंग उपयोग करने के लिए।

nnoremap की वाक्य रचना यह है:

nnoremap new_keybinding keystrokes 

nnoremap आदेश एक नया कीबाइंडिंग को, जब आप सामान्य मोड में यह प्रेस प्रदान करती है, कीस्ट्रोक्स के अनुक्रम कि इस आदेश को सौंपा गया है विम को प्रतिध्वनित होती हैं ।

EDIT: nmap कमांड भी है। दोनों के बीच का अंतर यह है कि nmap आपकी वर्तमान कीबाइंडिंग को ओवरराइट करने की अनुमति देता है, जबकि nnoremap नहीं है। उनके बीच का अंतर this answer में समझाया गया है।

"Better window navigation 
nnoremap <C-j> <C-w>j 
nnoremap <C-k> <C-w>k 
nnoremap <C-h> <C-w>h 
nnoremap <C-l> <C-w>l 

यह मैं Ctrl + J, Ctrl + K, Ctrl + H उपयोग करने के लिए अनुमति देता है, Ctrl + L:

उदाहरण के लिए, मैं अपने .vimrc में इन पंक्तियों डाल दिया है बजाय Ctrl + Wजे, Ctrl + Wकश्मीर , Ctrl + W, Ctrl + W खिड़की नेविगेशन के लिएएल, जबकि पुराने कीबाइंडिंग को बनाए रखना।

आप अधिक जानकारी के लिए :help key-mappings भी देख सकते हैं।

+1

में कई फ़ाइलों को संपादित करें nmap/nnoremap - नहीं, यह अंतर नहीं है। आप किसी अन्य की तरह अपने nnoremap मैपिंग को ओवरराइट कर सकते हैं, अंतर यह है कि nnoremap रिकर्सिव नहीं है। – Rook

18

आप किसी विशेष विंडो पर स्विच करने के लिए <number><c-w>w का उपयोग कर सकते हैं। तो 1<c-w>w पहली विंडो (शीर्ष बाएं कोने) 11<c-w>w अंतिम विंडो में चला जाता है (यहां मुझे लगता है कि आपके पास 11 से कम विभाजन हैं)।

मुझे निम्नलिखित मैपिंग सुविधाजनक भी मिलते हैं और उन्हें मेरे पास रखते हैं।vimrc

nnoremap <tab> <c-w> 
nnoremap <tab><tab> <c-w><c-w> 

जो मैं खिड़की सिलाई के लिए उपयोग करते हैं (किसी कारण से अगर मैं दूसरे मानचित्रण परिभाषित नहीं करते अगर मैं टैब दो बार हिट मैं एक संदेश मिलता है "कर्सर के तहत कोई पहचानकर्ता)

पढ़ना CTRL-W के लिए मदद पृष्ठ, वहाँ भी 1<c-w>w और 11<c-w>w की तुलना में एक अधिक सुविधाजनक तरीका पहली और आखिरी खिड़की पर जाने के लिए है:। <c-w>t शीर्ष विंडो में जाता है और <c-w>b नीचे खिड़की को जाता है

0

आप दूसरी दिशा में दूसरी बार <C-w> जारी करके विकर्ण आंदोलन बना सकते हैं।

"move from bottom left to top right diagonally 
    "Mnemonic: keyboard finger movement from j to i 
    nnoremap <C-i> <C-w>l<C-w>k 

    "move from top right to bottom left diagonally 
    "Mnemonic: keyboard finger movement from j to n 
    nnoremap <C-n> <C-w>h<C-w>j 

    "move from top left to bottom right diagonally 
    "Mnemonic: keyboard finger movement from j to m 
    nnoremap <C-m> <C-w>l<C-w>j 

    "move from bottom right to top left diagonally 
    "Mnemonic: keyboard finger movement from j to y 
    nnoremap <C-y> <C-w>h<C-w>k 
+0

(^ एम) का विशेष अर्थ है और कुछ स्थितियों में तोड़ सकता है –

1

this answer विम के लिए समर्पित एसई साइट पर के लिए धन्यवाद, मैं एक और विकल्प है जो एक submode खिड़कियों प्रबंधन के लिए समर्पित बनाने के लिए एक प्लगइन का उपयोग करता है करने के लिए आया था। इसका मतलब है कि चाबियों के संयोजन के साथ मैं एक नया मोड डालता हूं जिसमें कुछ कुंजियां मुझे विंडोज़ पर अलग-अलग क्रियाएं करने की अनुमति देती हैं।

vim-submode स्थापित करने के लिए एक नया मोड कॉन्फ़िगर करने के लिए हमारे vimrc करने के लिए कुछ लाइनों जोड़ने के बाद:

" Create a submode to handle windows 
" The submode is entered whith <Leader>k and exited with <Leader> 
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>') 
call submode#leave_with('WindowsMode', 'n', '', '<Leader>') 

अब आप बस नेता प्रेस करने + कश्मीर नई विधा दर्ज करने के लिए (आप को बदल सकते हैं यह लाइन submode#enter_with) के साथ और इसे बाहर निकलने के लिए नेता दबाएं।

" Change of windows with hjkl 
call submode#map('WindowsMode', 'n', '', 'j', '<C-w>j') 
call submode#map('WindowsMode', 'n', '', 'k', '<C-w>k') 
call submode#map('WindowsMode', 'n', '', 'h', '<C-w>h') 
call submode#map('WindowsMode', 'n', '', 'l', '<C-w>l') 
इन पंक्तियों के साथ

, आप (नेता + कश्मीरके साथ) नई विधा में प्रवेश करने के बाद आप के रूप में यदि आप में <c-w>hjlk उपयोग कर रहे थे कुंजी hjkl के साथ अपने विंडो के बीच ले जाने के लिए सक्षम हो जाएगा सामान्य स्थिति।

" Resize windows with <C-yuio> (interesting on azerty keyboards) 
call submode#map('WindowsMode', 'n', '', 'u', '<C-w>-') 
call submode#map('WindowsMode', 'n', '', 'i', '<C-w>+') 
call submode#map('WindowsMode', 'n', '', 'y', '<C-w><') 
call submode#map('WindowsMode', 'n', '', 'o', '<C-w>>') 
कुछ कुछ और लाइनों

साथ खिड़की के आकार बदलने की अनुमति देने के yuio(मैं क्योंकि एक AZERTY कुंजीपटल वे सिर्फ hjkl से अधिक पंक्ति पर हैं और बहुत उपयोग करने के लिए सुविधाजनक हैं पर इन कुंजियों चुनते हैं, तो हो सकता है यह होगा एक क्वर्टी कीबोर्ड पर इसे बदलने के लिए और अधिक उपयोगी, मुझे यकीन नहीं है)

" Move windows with <C-hjkl> 
call submode#map('WindowsMode', 'n', '', '<C-j>', '<C-w>J') 
call submode#map('WindowsMode', 'n', '', '<C-k>', '<C-w>K') 
call submode#map('WindowsMode', 'n', '', '<C-h>', '<C-w>H') 
call submode#map('WindowsMode', 'n', '', '<C-l>', '<C-w>L') 

चलिए विंडोज़ को <C-hjkl> के साथ ले जाएं।

" close a window with q 
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c') 

" split windows with/and ! 
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s') 
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v') 

और कुछ और मैपिंग विंडो बंद करने और नए विभाजन बनाने के लिए।

let g:submode_keep_leaving_key = 1 
let g:submode_timeout = 0 

अंत में ये विकल्प एक कुंजी दबाए रखने की अनुमति देते हैं और यह इसकी क्रिया दोहराएगा।

नोट मुझे पता है कि यह उत्तर ओपी के रूप में विंडोज़ के बीच नेविगेट करने से कहीं अधिक है।मुझे लगता है कि एक सबमिड बनाना बहुत सुविधाजनक है, लेकिन केवल तभी ब्याज है जब पनडुब्ब सिर्फ एक ही क्रिया से अधिक करने की अनुमति देता है।