मैं Ctrl-W के बिना विम में विभाजन के साथ कैसे काम कर सकता हूं?


24

मेरा टर्मिनल मुझे Ctrl+ टाइप करने की अनुमति नहीं देता है W, क्योंकि यह टर्मिनल टैब बंद करने का एक शॉर्टकट है।

मुझे स्प्लिट्स के साथ काम करना पसंद है, लेकिन मैं बिना उपयोग किए ऐसा करने का कोई तरीका नहीं खोज सकता C-W। इसने मुझे टैब का उपयोग करने के लिए मजबूर किया, क्योंकि मैं उनके बीच स्विच कर सकता हूं gt, gTया #gtजहां # एक संख्या है, लेकिन मुझे यह विभाजन से कम सुविधाजनक लगता है क्योंकि मैं एक समय में केवल एक फ़ाइल की सामग्री देख सकता हूं।

मैं mouse=aया तो उपयोग नहीं कर सकता क्योंकि मेरा टर्मिनल इसका समर्थन नहीं करता है।

मैं कैसे बिना विम में विभाजन के साथ काम कर सकते हैं Ctrl+ Wउपलब्ध कॉम्बो?


1
मैपिंग का उपयोग करें wincmd उदाहरण के लिए आप मैप कर सकते हैं: :nmap wj :wincmd j<cr>यह उसी तरह कार्य करता है CTRL-W j(नीचे विंडो में ले जाएँ)। :help wincmd
एलेक्स क्रोल

@AlexKroll आप एक उत्तर के रूप में पोस्ट क्यों नहीं करते? :-)
मार्टिन टूरनोइज

1
@Carpetsmoker यह इस समस्या के लिए पूर्ण कवर नहीं है जो मुझे लगता है। CTRL-W jकाउंटर के साथ काम करता है (वर्तमान से नीचे n-वें विंडो पर जाएं) मेरा समाधान नहीं करता है।
एलेक्स क्रोल

2
मैं आमतौर पर इस तरह की सलाह की सराहना नहीं करता, लेकिन मैं दूसरे टर्मिनल की तलाश करूंगा। <C-W>बहुत उपयोगी है (न केवल विम में कई स्थानों पर, बल्कि बैश में भी) जाली करने के लिए। मुझे उत्सुक होगा कि टर्मिनल द्वारा अन्य प्रमुख बाइंडिंग का क्या उपभोग किया जाता है - <C-T>? बहुत कम से कम, मैं देखूंगा कि क्या ये टर्मिनल में कॉन्फ़िगर करने योग्य हैं।
tommcdo

जवाबों:


23

आप <C-w>उदाहरण के लिए, किसी अन्य संयोजन के लिए केवल रीमैप कर सकते हैं :

:nnoremap <C-e> <C-w>

अब आप उपयोग कर सकते हैं <C-e>और यह इस तरह कार्य करेगा जैसे आपने दबाया हो <C-w>

यह डिफ़ॉल्ट <C-e>मैपिंग (नीचे स्क्रॉल करें) को ओवरराइट कर देगा । विम कीबोर्ड पर पहले से ही हर कुंजी का उपयोग करता है, और इसे रोकने का एकमात्र तरीका नेता कुंजी का उपयोग कर रहा है, जो "उपसर्ग" की तरह काम करता है:

:nnoremap <Leader>w <C-w>

जब तक आपने रीमैप नहीं किया है <Leader>, आप अब \w(एक दूसरे के बाद) का उपयोग कर सकते हैं । मैं वास्तव में इसे पसंद करता हूं क्योंकि मुझे CTRL + कुंजी संयोजन पसंद नहीं है।

देखें <लीडर> क्या है? और मैं कैसे पता लगा सकता हूं कि <लीडर> किस पर सेट है? और क्या यह संभव है <नेता> को रीमैप करने के लिए?


मेरी समस्या का समाधान करता है। मेरे vimrc में मैपिंग को जोड़ा और बिना किसी समस्या के थोड़ा परीक्षण किया।
Mateon1

13

मैं वास्तव में + :wincmdसे अधिक बार उपयोग करता हूं क्योंकि मुझे संक्षिप्त रूप टाइप करना आसान लगता है ।CtrlW:winc

उदाहरण के लिए, Ctrl+ के बराबर W Lहै :winc l


7

मैंने निम्नलिखित रिमैप को अपने में सेट किया है .vimrc:

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

अब मैं Ctrl+hबाईं विंडो Ctrl+lमें जाने के लिए, दाईं ओर की खिड़की पर जाने के लिए उपयोग कर सकता हूं , आदि यह सिर्फ विम के सामान्य नेविगेशन के साथ तार्किक रूप से फिट होने के लिए लगता है।


4
ध्यान दें कि टर्मिनल में Ctrl + h की मैपिंग हमेशा काम नहीं करती है, क्योंकि यह अक्सर बैकस्पेस कुंजी होती है। इस जवाब और इस सवाल को देखें ।
मार्टिन टूरनोइज जूल

इसके अलावा, आप उपयोग कर सकते हैं nnoremap <cr> <c-w>w, क्योंकि वापसी कुंजी का उपयोग सामान्य मोड में ज्यादा नहीं किया जाता है। फिर फूट के माध्यम से साइकिल चलाना सरल है।
होप

5

विभाजन से निपटने के लिए, मैं सबमोड-प्लगइन का उपयोग करता हूं जो वास्तव में बहुत सुविधाजनक है: यह आपको एक नया मोड ("मोड" बनाने की अनुमति देता है जैसे सामान्य मोड, विजुअल मोड, इन्सर्ट मोड, आदि ...) जहां आप नए कुंजी बाइंडिंग को परिभाषित करते हैं। ।

इसके साथ आपको कोई उपयोग Ctrl+wनहीं करना पड़ता है और जैसा कि आप एक नई मोड में हैं, सभी कुंजियाँ बाइंड करने के लिए स्वतंत्र हैं: कोई और अधिक समस्या जैसे "लानत नहीं है कि मैं एक महत्वपूर्ण संयोजन नहीं पा सकता हूं जो एक संकेत के रूप में और अभी तक मैप नहीं किया गया है "

आप किसी भी नियमित प्लगइन प्रबंधक के साथ प्लगइन स्थापित कर सकते हैं, और यहां आपको कुछ प्रेरणा देने के लिए मेरे कुछ कॉन्फ़िगरेशन हैं:


मैंने एक नया मोड बनाया जिसे मैंने कॉल WindowsModeकिया जिसमें मैंने अपने विभाजन को हेरफेर किया:

call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')

इन पंक्तियों का अर्थ है कि मैं मोड में प्रवेश करता हूं Leaderkऔर मैं इस मोड से बाहर निकलता हूं Leader: मेरे द्वारा हिट की गई Leaderkसभी कुंजियों को मारने के बाद :

  • कुछ न करें अगर मैंने इस मोड में उनके लिए मैपिंग को परिभाषित नहीं किया है
  • मैंने उन्हें इस मोड में मैप करने का फैसला किया (शेष उत्तर देखें)
  • अगर मैं मारा तो वापस सामान्य मोड पर जाऊंगा Leader

एक बार जब मैं WindowsModeइन पंक्तियों में हूँ hjklजैसे विभाजन के माध्यम से नेविगेट करेंCtrl+whjkl

" 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')

मैंने इन पंक्तियों का उपयोग खिड़कियों को विभाजित करने के लिए किया है /और !:

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

और qएक विभाजन को बंद करें:

call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')

विभाजन को साथ ले जाएं Ctrlhjkl:

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')

विम-सबमोड कई शक्तिशाली चीजों को करने की अनुमति देता है, अधिक विवरण के लिए डॉक्टर को देखें।


EDIT विंडो सबमोड का एक और तरीका यहां वर्णित है । मुझे लगता है कि लेखक द्वारा उपयोग की गई विधि इस सवाल का जवाब देने के लिए और भी करीब है: यहां एक नया मोड बनाने के लिए उपयोग किया जाता है, लेकिन सभी <c-w>somethingमैपिंग सबमोड में एक ही कुंजी के साथ उपलब्ध हैं:

" Go through every letter
for key in ['a','b','c','d','e','f','g','h','i','j','k','l','m',
\           'n','o','p','q','r','s','t','u','v','w','x','y','z']
  " maps lowercase, uppercase and <C-key>
  call submode#map('window', 'n', '', key, '<C-w>' . key)
  call submode#map('window', 'n', '', toupper(key), '<C-w>' . toupper(key))
  call submode#map('window', 'n', '', '<C-' . key . '>', '<C-w>' . '<C-'.key . '>')
endfor

" Go through symbols. Sadly, '|', not supported in submode plugin.
for key in ['=','_','+','-','<','>']
  call submode#map('window', 'n', '', key, '<C-w>' . key)
endfor

इस तरह सभी मैपिंग <c-w>lowerCaseKey, <c-w>upperCaseKey, <c-w><c-Key>और मैपिंग <c-w>=_+-<>सभी उपसर्ग के बिना विंडो मोड में जाया जा सकता है<c-w>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.