Ctrl + a, ctrl + x के माध्यम से "सच्चे" और "झूठे" मानों को स्वैप करें


10

मुझे लगता है कि संयोजन + और + के साथ कोड में तेजी से स्वैप trueऔर falseमूल्यों की संभावना होना उपयोगी होगा । क्या इसके लिए कुछ प्लगइन है या कुछ और है?ctrlactrlx

जवाबों:


6

मैंने बूलियन मूल्यों को टॉगल करने के लिए एक प्लगइन ( टॉगल-बूल ) लिखा था जिसे आप आजमा सकते हैं। यह निम्नलिखित बूलियन मूल्यों का समर्थन करता है:

  • true <-> false
  • yes <-> no
  • on <-> off
  • 0 <-> 1

ओह, यह मैं क्या देख रहा था। लेकिन मुझे एक छोटी सी समस्या है। क्या आप इसे ठीक कर सकते हैं? github.com/sagarrakshe/toggle-bool/issues/1
अलेक्जेंडर माईशॉव

1
@lucidbrot ने सुधारा
सागर रक्षा

12

वहाँ switch.vim है , और यह अनुकूलन योग्य है।

प्लगइन का मुख्य प्रवेश बिंदु, एक भी आदेश है :Switch। जब कमांड निष्पादित किया जाता है, तो प्लगइन कर्सर के नीचे कुछ विशिष्ट पैटर्नों में से एक को देखता है और पैटर्न के आधार पर एक सबस्टेशन करता है।

उदाहरण के लिए यदि कर्सर trueनिम्नलिखित कोड में है:

flag = true

तब क्रियान्वित होने पर :Switch, में trueबदल जाएगा false


आपका स्वागत है! मेरे पास एक 'vim-dwim' प्लगइन का यह पागल विचार है जो कर्सर के तहत सिंटैक्स पर आधारित अलग-अलग कार्य करता है (उदाहरण के लिए एंटर करते समय), और मुझे लगता है कि मैं इस प्लगइन से खुद को बहुत प्रेरित करूंगा। अगर मुझे इसे बनाना शुरू करना है, तो यह है।
VanLaser

7

प्लगइन्स का ढेर

कई प्लगइन लेखकों द्वारा टोगलिंग true/ falseऔर समान लागू किया गया है। उनमें से दो का उल्लेख पहले ही किया जा चुका है:

  • switch.vim by Andrew Radev ( # 4172 , github ) और
  • टॉगल-bool सागर Rakshe (द्वारा GitHub )।

अन्य लोग कर रहे हैं टॉगल टीमो Teifel (द्वारा # 895 ), सोमवार स्टीफन कार्लसन (द्वारा # 1046 ), toggle_words विन्सेंट वांग (द्वारा # 1676 ), toggle_word एलेक्ज़ेंड्रु Ungur (द्वारा # 1748 ), incbool.vim दिमित्री पेत्रोव द्वारा ( # 4361 , GitHub ) , nextval माइकल Arlt (द्वारा # 4536 , GitHub )।

बस अगर आप कस्टम श्रृंखला के अनुसार संख्या बढ़ाना चाहते हैं, उदाहरण के लिए फाइबोनैचि श्रृंखला, बैरी आर्थर ( गीथूब ) द्वारा नेक्सस की जाँच करें ।

प्लगइन्स सुपरचार्जिंग Ctrl-A/X

हालांकि, उनमें से सभी डिफ़ॉल्ट रूप से विस्तार करने के लिए विचार का पालन नहीं करते हैं, Ctrl-A/Xलेकिन एक नई कमांड और / या एक नई मैपिंग को परिभाषित करते हैं (incl। Switch.vim और टॉगल-बूल )। मैं उन प्लगइन्स को उजागर करना चाहता हूं जो 'सुपरचार्ज' Ctrl-A/Xबॉक्स से बाहर हैं और इसलिए, डिफ़ॉल्ट रूप से प्रदान करें कि ओपी ने क्या पूछा है:

  • SwapIt माइकल ब्राउन द्वारा ( # 2294 , GitHub ),
  • बढ़ते क्रम में-उत्प्रेरक Takuya Nishigori द्वारा ( # 4817 , GitHub ),
  • CtrlXA Konfekt द्वारा ( # 5600 , GitHub ),
  • Zef Houssney ( github ) द्वारा साइकिल ,
  • साइकिल bootleq द्वारा ( GitHub )

जो भी फैली हुई है इससे संबंधित एक प्लगइन Ctrl-A/Xहै SpeedDating टिम पोप (द्वारा # 2120 , GitHub ) जो आप वेतन वृद्धि दिनांक के लिए अनुमति देता है।

मैदान छोड़ना

कुछ प्लगइन्स एक दूसरे Ctrl-A/Xइंक्रीमेंटर प्लगइन को कमबैक के रूप में संयोजित करने की अनुमति देते हैं , जैसे

  • माइकल ब्राउन द्वारा स्वैप :

    nmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
    nmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
    vmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
    vmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
    
  • बूटलेक द्वारा चक्र :

    map <silent> <Plug>CycleFallbackNext <Plug>SpeedDatingUp
    map <silent> <Plug>CycleFallbackPrev <Plug>SpeedDatingDown
    
  • switch.vim द्वारा एंड्रयू Radev:

    nnoremap <c-a> :if !switch#Switch()<bar>call speeddating#increment()<bar>endif<cr>
    nnoremap <c-x> :if !switch#Switch({'reverse': 1})<bar>call speeddating#decrement()<bar>endif<cr>
    

नोट
यदि आप बिलिन के खोज व्यवहार का उपयोग करते हैं Ctrl-A/X(वेतन वृद्धि के अनुसार अगली संभावित कीमत पाते हैं), तो उन्हें सुपरचार्ज करना हस्तक्षेप कर सकता है।


1

मैपिंग को आप जो उपयोग करना चाहते हैं उसे बदल दें

यदि आप इसे किसी स्थान के शीर्ष पर उपयोग करते हैं, तो चूंकि शब्द के बजाय civ स्थान को संपादित करेगा (और सही शब्द को विश्वसनीय तरीके से प्राप्त करने का कोई आसान तरीका नहीं है)

function SwapBool ()
  let s:w = expand("<cword>")
  if s:w == "false"
    normal ciwtrue
    if expand("<cword>") != "true"
      normal u
    endif
  elseif s:w == "true"
    normal ciwfalse
    if expand("<cword>") != "false"
      normal u
    endif
  endif
endfunction
noremap <C-F> :call SwapBool()^M

यह भी ध्यान दें कि ^ M की आवश्यकता है <C-V><Enter>, शाब्दिक रूप से ^ M की आवश्यकता नहीं है


1
इस साइट पर आपका स्वागत है! ध्यान दें कि यह एक शर्त जोड़ना दिलचस्प होगा जो फ़ंक्शन को बिल्ट-इन की तरह बना देगा <C-a>और <C-x>जब वर्तमान शब्द बूलियन नहीं होगा, तो इस तरह से ओपी वास्तव में इन मैपिंग का उपयोग करने में सक्षम होगा। इसके अलावा, आप अपनी मैपिंग के <CR>बजाय उपयोग कर सकते हैं ^M, और यह आमतौर पर अपने mapकमांड को एक मोड प्रदान करने के लिए सबसे अच्छा अभ्यास है , यहां nnoremapसे अधिक उपयुक्त होगा noremap
statox
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.