Saya pikir akan berguna untuk memiliki kemungkinan untuk menukar truedan falsenilai - nilai dalam kode dengan cepat, dengan kombinasi ctrl+ aatau ctrl+ x. Apakah ada plugin untuk itu atau yang lainnya?
Saya pikir akan berguna untuk memiliki kemungkinan untuk menukar truedan falsenilai - nilai dalam kode dengan cepat, dengan kombinasi ctrl+ aatau ctrl+ x. Apakah ada plugin untuk itu atau yang lainnya?
Jawaban:
Saya menulis sebuah plugin ( toggle-bool ) untuk mengganti nilai-nilai boolean yang dapat Anda coba. Ini mendukung nilai boolean berikut:
true <-> falseyes <-> noon <-> off0 <-> 1Ada switch.vim , dan dapat disesuaikan.
Titik masuk utama plugin adalah satu perintah
:Switch,. Ketika perintah dieksekusi, plugin mencari salah satu dari beberapa pola tertentu di bawah kursor dan melakukan substitusi tergantung pada polanya.
Misalnya jika kursor berada di truedalam kode berikut:
flag = true
kemudian setelah dieksekusi :Switch, trueakan berubah menjadi false.
Beralih true/ falsedan yang serupa telah diterapkan oleh banyak pembuat plugin. Dua dari mereka telah disebutkan:
Lainnya beralih oleh Timo Teifel ( # 895 ), Senin oleh Stefan Karlsson ( # 1046 ), toggle_words oleh Vincent Wang ( # 1676 ), toggle_word oleh Alexandru Ungur ( # 1748 ), incbool.vim oleh Dmitry Petrov ( # 4361 , github ) , nextval oleh Michael Arlt ( # 4536 , github ).
Untuk berjaga-jaga jika Anda ingin menambah angka sesuai dengan seri kustom, misalnya seri Fibonacci, periksa nexus oleh Barry Arthur ( github ).
Ctrl-A/XNamun, tidak semua dari mereka secara default mengikuti ide untuk memperpanjang Ctrl-A/Xtetapi mendefinisikan perintah baru dan / atau pemetaan baru (termasuk switch.vim dan toggle-bool ). Saya ingin menyoroti plugin yang 'supercharge' di Ctrl-A/Xluar kotak dan, oleh karena itu, memberikan secara default apa yang ditanyakan OP:
Plugin terkait yang juga diperluas Ctrl-A/Xadalah speeddating oleh Tim Pope ( # 2120 , github ) yang memungkinkan Anda untuk menambah tanggal.
Beberapa plugin memungkinkan untuk menggabungkan Ctrl-A/Xplugin incrementor kedua sebagai fallback, misalnya
SwapIt oleh Michael Brown:
nmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
nmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
vmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
vmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
siklus dengan bootleq:
map <silent> <Plug>CycleFallbackNext <Plug>SpeedDatingUp
map <silent> <Plug>CycleFallbackPrev <Plug>SpeedDatingDown
switch.vim oleh Andrew 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>
Catatan
Jika Anda menggunakan perilaku seek dari builtin Ctrl-A/X(temukan nilai berikutnya yang mungkin sejalan dengan peningkatan), pengisian daya supercharger dapat mengganggu.
ubah pemetaan menjadi apa yang ingin Anda gunakan
urungkan jika Anda menggunakannya di atas spasi, karena ciw akan mengedit spasi alih-alih kata (dan tidak ada cara mudah untuk mendapatkan kata yang tepat secara andal)
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
juga perhatikan ^ M harus <C-V><Enter>, bukan harfiah ^ M
<C-a>dan <C-x>ketika kata saat ini bukan boolean, dengan cara ini OP benar-benar dapat menggunakan pemetaan ini. Anda juga dapat menggunakan <CR>alih-alih ^Mdalam pemetaan Anda, dan biasanya merupakan praktik terbaik untuk memberikan mode ke mapperintah Anda , di sini nnoremapakan lebih tepat daripada noremap.