Saya pikir akan berguna untuk memiliki kemungkinan untuk menukar true
dan false
nilai - 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 true
dan false
nilai - 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
<-> false
yes
<-> no
on
<-> off
0
<-> 1
Ada 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 true
dalam kode berikut:
flag = true
kemudian setelah dieksekusi :Switch
, true
akan berubah menjadi false
.
Beralih true
/ false
dan 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/X
Namun, tidak semua dari mereka secara default mengikuti ide untuk memperpanjang Ctrl-A/X
tetapi mendefinisikan perintah baru dan / atau pemetaan baru (termasuk switch.vim dan toggle-bool ). Saya ingin menyoroti plugin yang 'supercharge' di Ctrl-A/X
luar kotak dan, oleh karena itu, memberikan secara default apa yang ditanyakan OP:
Plugin terkait yang juga diperluas Ctrl-A/X
adalah speeddating oleh Tim Pope ( # 2120 , github ) yang memungkinkan Anda untuk menambah tanggal.
Beberapa plugin memungkinkan untuk menggabungkan Ctrl-A/X
plugin 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 ^M
dalam pemetaan Anda, dan biasanya merupakan praktik terbaik untuk memberikan mode ke map
perintah Anda , di sini nnoremap
akan lebih tepat daripada noremap
.