Я думаю , что было бы полезно иметь возможность для обмена 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
.
Переключение true
/ false
и подобное было реализовано многими авторами плагинов. Два из них уже были упомянуты:
Другие - переключение Тимо Тейфеля ( # 895 ), понедельник - Стефана Карлссона ( # 1046 ), toggle_words - Винсента Вана ( # 1676 ), toggle_word - Александра Унгура ( # 1748 ), incbool.vim - Дмитрия Петрова ( # 4361 , github ) , следующий шаг Майкла Арлта ( # 4536 , github ).
На всякий случай, если вы хотите увеличить числа в соответствии с пользовательской серией, например, серией Фибоначчи, обратитесь к Nexus от Barry Arthur ( 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
также обратите внимание, что ^ M должен быть <C-V><Enter>
, а не буквально ^ M
<C-a>
и <C-x>
когда текущее слово не является логическим, таким образом OP действительно сможет использовать эти отображения. Кроме того, вы можете использовать <CR>
вместо ^M
своего отображения, и, как правило, рекомендуется предоставить режим для вашей map
команды, здесь nnoremap
более подходящим, чем noremap
.