मैं आसानी से एक लाइन कैसे चला सकता हूं?


47

Vim में लाइन अप या डाउन करने के लिए कमांड (या शॉर्टकट) क्या है? मेरे वर्तमान वर्कफ़्लो को लाइन को कॉपी (कॉपी) करना है और उस लाइन को हटाना और उस लाइन को डालना (पेस्ट करना) है।


8
वास्तव में कटौती को हटाने के बाद, आप यान को छोड़ सकते हैं:, ddkPनीचे जाना आसान है ddp:।
मुरु

इन्हें भी देखें: vi.stackexchange.com/questions/598/…
रिच

जवाबों:


52

सबसे पहले, आपको यैंक और हटाने की आवश्यकता नहीं है ; उत्तरार्द्ध हटाए गए सामग्रियों को भी (डिफ़ॉल्ट या निर्दिष्ट) रजिस्टर में डाल देगा। इसलिए, ddp/ ddkPएक पंक्ति को नीचे / ऊपर स्थानांतरित करने के लिए सामान्य आदेश हैं।

वैकल्पिक रूप से, आप :moveकमांड का उपयोग कर सकते हैं , अर्थात :move +1/ / :move -2; यह रजिस्टर को बंद नहीं करता है, और आप पूरी श्रृंखला को स्थानांतरित भी कर सकते हैं। इसे छोटा करने के लिए आप आसानी से कुंजी मैपिंग को परिभाषित कर सकते हैं।

आप प्लग इन कोई आपत्ति नहीं है (और अतिरिक्त आराम है कि अक्सर उनके साथ आता है), दोनों टिम पोप के अछूता प्लगइन और मेरे LineJuggler प्लगइन प्रदान ]e/ [eमैपिंग लाइनें (और कई और अधिक ले जाने के लिए, टिम का उपयोग करता है की एक किस्म के लिए, मेरा निपटने पर ध्यान केंद्रित लाइन (रों))।


36

सबसे आसान है: :m+या :m-2जो :moveIngo के सुझाव के लिए संक्षिप्त नाम है ।

या Vलाइन ( d/ ) को काटकर दृश्य मोड ( ) का उपयोग करके ( xफिर pकर्सर के नीचे - ( कर्सर के Pऊपर) , पेस्ट करने से पहले अपने कर्सर को सही स्थान पर ले जाने के बाद (ताकि सारांश में यह Vxp/ Vdp)।

जब दृश्य मोड में कई लाइनें चलती हैं, तो आपको :m '>+1(एक पंक्ति को नीचे स्थानांतरित करने के लिए) या :m '<-2(एक पंक्ति को ऊपर ले जाने के लिए) का उपयोग करना होगा।


यहाँ नमूना उपयोगी मानचित्रण ( Shift+ ↑/ Shift+↓) है:

nnoremap <S-Up> :m-2<CR>
nnoremap <S-Down> :m+<CR>
inoremap <S-Up> <Esc>:m-2<CR>
inoremap <S-Down> <Esc>:m+<CR>

जो उदात्त पाठ ( Win / OSX ) के समान है।

यहाँ विम विकिया में कुछ सुझाव दिए गए हैं :

nnoremap <A-j> :m .+1<CR>==
nnoremap <A-k> :m .-2<CR>==
inoremap <A-j> <Esc>:m .+1<CR>==gi
inoremap <A-k> <Esc>:m .-2<CR>==gi
vnoremap <A-j> :m '>+1<CR>gv=gv
vnoremap <A-k> :m '<-2<CR>gv=gv

सामान्य मोड में या इन्सर्ट मोड में, वर्तमान लाइन को नीचे ले जाने के लिए Alt-j दबाएँ, या वर्तमान लाइन को ऊपर ले जाने के लिए Alt-k दबाएँ।

नेत्रहीन रूप से लाइनों के एक ब्लॉक का चयन करने के बाद (उदाहरण के लिए, वी दबाकर फिर कर्सर नीचे ले जाएं), पूरे ब्लॉक को नीचे ले जाने के लिए Alt-j दबाएं, या ब्लॉक को स्थानांतरित करने के लिए Alt-k दबाएं।

यह सभी देखें:


2
विम विकिया लिंक के लिए +1। वहां कुछ चीजें सीखीं।
गोंकेलो रिबेरो

पता नहीं क्यों, लेकिन वे Gvim में बहुत अच्छी तरह से काम करते हैं, लेकिन टर्मिनल विम में अपेक्षा के अनुसार काम नहीं करते हैं। (ऐसा लगता है कि यह tmux की समस्या है)
CodyChan

11

अगर मैं एक लाइन को ऊपर से स्वैप करना चाहता हूं तो मैं आमतौर पर निम्नलिखित कार्य करता हूं

ddkP

व्याख्या

  • dd लाइन को हटा देगा और इसे डिफ़ॉल्ट रजिस्टर में जोड़ देगा।
  • k एक लाइन ऊपर ले जाएगा (j एक लाइन नीचे जाएगी)
  • P वर्तमान लाइन के ऊपर चिपकाएगा

3
वर्तमान लाइन को नीचे ले जाने के लिए,ddp
Qinjie

4

एफडब्ल्यूआईडब्ल्यू, यहां वही है जो मैंने वर्षों से उपयोग किया है। यह चालू लाइन को सामान्य मोड में या दृश्य मोड में चयन को स्थानांतरित करता है, जबकि इंडेंटेशन को स्वचालित रूप से समायोजित करता है।

nnoremap ,<Up>   :<C-u>silent! move-2<CR>==
nnoremap ,<Down> :<C-u>silent! move+<CR>==
xnoremap ,<Up>   :<C-u>silent! '<,'>move-2<CR>gv=gv
xnoremap ,<Down> :<C-u>silent! '<,'>move'>+<CR>gv=gv
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.