Ctrl + a, ctrl + x ile “true” ve “false” değerlerini değiştirin


10

+ Veya + kombinasyonu ile koddaki değerleri trueve falsedeğerleri hızlı bir şekilde değiştirme imkanına sahip olmanın yararlı olacağını düşünüyorum . Bunun için başka bir eklenti var mı?ctrlactrlx

Yanıtlar:



12

Switch.vim var ve özelleştirilebilir.

Eklentinin ana giriş noktası tek bir komuttur :Switch,. Komut yürütüldüğünde, eklenti imlecin altındaki birkaç belirli desenden birini arar ve desene bağlı olarak bir alt bölüm gerçekleştirir.

Örneğin, imleç trueaşağıdaki kodda ise:

flag = true

Daha sonra yürütme üzerine :Switch, truedönüşecek false.


Rica ederim! İmleç altında sözdizimine (örneğin Enter tuşuna basarken) farklı davranan bir 'vim-dwim' eklentisi gibi çılgın bir fikrim var ve sanırım bu eklentiden kendime çok ilham vereceğim. Eğer yapmaya başlasam, bu.
VanLaser

7

Eklentiler bolluğu

Geçiş true/ falseve benzeri birçok eklenti yazarı tarafından uygulanmıştır. İkisinden daha önce bahsedilmişti:

  • Andrew Radev ( # 4172 , github ) tarafından switch.vim ve
  • geçiş-bool Sagar Rakshe ( github ) tarafından.

Diğerleri şunlardır geçiş Timo Teifel (tarafından # 895 ), pazartesi Stefan Karlsson (tarafından # 1046 ), toggle_words Vincent Wang (tarafından # 1676 ), toggle_word Alexandru Ungur (tarafından # 1748 ), incbool.vim Dmitry Petrov tarafından ( # 4361 , github ) , nextval tarafından Michael Arlt ( # 4536 , github ).

Her ihtimale karşı özel bir dizi göre sayıları artırmak isteyen, örneğin Fibonacci serisi, kontrol nexus Barry Arthur (tarafından github ).

Eklenti Supercharging Ctrl-A/X

Bununla birlikte, hepsi varsayılan olarak Ctrl-A/Xyeni bir komut ve / veya yeni bir eşleme ( ancak switch.vim ve toggle-bool dahil) genişletme ancak tanımlama fikrini takip etmez . Ctrl-A/XKutudan 'supercharge' olan bu eklentileri vurgulamak ve bu nedenle OP'nin sorduğu varsayılanı sağlamak istiyorum:

  • SwapIt Michael Brown tarafından ( # 2294 , github ),
  • Takuya Nishigori ( # 4817 , github ) tarafından arttırma aktivatörü ,
  • Konfekt tarafından CtrlXA ( # 5600 , github ),
  • Zef Houssney ( github ) ile döngü ,
  • Bootleq ( github ) ile döngü

Ayrıca uzanır İlgili bir eklenti Ctrl-A/Xolduğunu speeddating Tim Pope (tarafından # 2120 , github artım tarihleri yapmanızı sağlar).

Geri çekil

Bazı eklentiler, ikinci bir Ctrl-A/Xartım eklentisini yedek olarak birleştirmeye izin verir , ör.

  • Michael Brown tarafından SwapIt :

    nmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
    nmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
    vmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
    vmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
    
  • bootleq ile döngü :

    map <silent> <Plug>CycleFallbackNext <Plug>SpeedDatingUp
    map <silent> <Plug>CycleFallbackPrev <Plug>SpeedDatingDown
    
  • Andrew Radev tarafından switch.vim :

    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>
    

Not
Yerleşikin arama davranışını kullanırsanız Ctrl-A/X(artışa göre bir sonraki olası değeri bulun), bunların aşırı yüklenmesi engellenebilir.


1

eşlemeyi kullanmak istediğinizle değiştirin

geri alma, onu bir alanın üstünde kullanmanız durumundadır, çünkü ciw kelime yerine alanı düzenleyecektir (ve doğru kelimeye güvenilir bir şekilde ulaşmanın kolay bir yolu yoktur)

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

Ayrıca ^ M'nin <C-V><Enter>tam anlamıyla değil , olması gerektiğini unutmayın ^ M


1
Bu siteye hoş geldiniz! Not o fonksiyonu gibi yapacak bir durumu eklemek ilginç olacağını dahili <C-a>ve <C-x>cari kelime değil bir boolean olduğunda, bu şekilde OP gerçekten bu eşleştirmeleri kullanmak mümkün olacaktır. Ayrıca eşlemenizde kullanmak <CR>yerine kullanabilirsiniz ^Mve genellikle mapkomutunuza bir mod sağlamak için en iyi uygulamadır , burada nnoremapdaha uygun olacaktır noremap.
statox
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.