Я думаю, було б корисно мати можливість швидко змінювати місцями true
і false
значеннями в коді, комбінуючи ctrl+ aабо ctrl+ x. Чи є якийсь плагін для цього чи чогось іншого?
Я думаю, було б корисно мати можливість швидко змінювати місцями true
і false
значеннями в коді, комбінуючи ctrl+ aабо ctrl+ x. Чи є якийсь плагін для цього чи чогось іншого?
Відповіді:
Я написав плагін ( toggle-bool ) для перемикання булевих значень, ви можете спробувати. Він підтримує наступні булеві значення:
true
<-> false
yes
<-> no
on
<-> off
0
<-> 1
Є switch.vim , і це налаштовується.
Основна точка входу плагіна є однією командою,
:Switch
. Коли команда виконується, плагін шукає один із декількох конкретних шаблонів під курсором і виконує підстанцію залежно від шаблону.
Наприклад, якщо курсор увімкнено true
у наступному коді:
flag = true
то після виконання :Switch
, true
воля перетвориться на false
.
Toggle true
/ false
та подібне було реалізовано багатьма авторами плагінів. Про них уже згадувалося два:
Інші - тумблер Тимо Тейфеля ( №895 ), понеділок - Стефан Карлссон ( # 1046 ), перемикач_словів Вінсента Ванга ( # 1676 ), перемикання_слова Олександра Унгура ( # 1748 ), інкбул.вім Дмитра Петрова ( # 4361 , github ) , nextval Майкла Арльта ( # 4536 , github ).
На всякий випадок, якщо ви хочете збільшити кількість відповідно до користувальницької серії, наприклад, серії Фібоначчі, перегляньте зв'язок Баррі Артура ( github ).
Ctrl-A/X
Однак не всі вони за замовчуванням дотримуються ідеї розширити, Ctrl-A/X
але визначити нову команду та / або нове відображення (включаючи switch.vim та toggle-bool ). Я хочу виділити ті плагіни, які "надзаряджаються" Ctrl-A/X
поза коробкою, і, таким чином, надаю за замовчуванням те, що попросила ОП:
Пов’язаний плагін, який також розширюється, Ctrl-A/X
- це пришвидшення роботи Тіма Попа ( # 2120 , github ), що дозволяє збільшити дати.
Деякі плагіни дозволяють поєднувати другий Ctrl-A/X
плагін інкрементора як резервний, наприклад
SwapIt Майкла Брауна:
nmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
nmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
vmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
vmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
цикл по bootleq:
map <silent> <Plug>CycleFallbackNext <Plug>SpeedDatingUp
map <silent> <Plug>CycleFallbackPrev <Plug>SpeedDatingDown
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>
Примітка.
Якщо ви використовуєте поведінку вбудованого Ctrl-A/X
пошуку (знайдіть наступне можливе значення відповідно до приросту), перезарядка може заважати.
змінити відображення на те, що ви хочете використовувати
скасування скасовується у випадку, якщо ви використовуєте його поверх пробілу, оскільки ciw відредагує простір замість слова (і не існує простого способу надійно дійти до потрібного слова)
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
також зауважте, що ^ М повинно бути <C-V><Enter>
, а не буквально ^ М
<C-a>
і <C-x>
коли поточне слово не є булевим, таким чином ОП дійсно зможе використовувати ці відображення. Крім того, ви можете використовувати <CR>
замість ^M
свого картографування, і зазвичай найкращою практикою є надання режиму для вашої map
команди, тут nnoremap
було б більш доцільно, ніж noremap
.