답변:
시도 할 수있는 부울 값을 토글 하는 플러그인 ( toggle-bool )을 작성했습니다. 다음과 같은 부울 값을 지원합니다.
true
<-> false
yes
<-> no
on
<-> off
0
<-> 1
switch.vim 이 있으며 사용자 정의 할 수 있습니다.
플러그인의 주요 진입 점은 단일 명령
:Switch
입니다. 명령이 실행될 때 플러그인은 커서 아래에서 몇 가지 특정 패턴 중 하나를 찾고 패턴에 따라 대체를 수행합니다.
예를 들어 커서가 true
다음 코드 에있는 경우
flag = true
실행 :Switch
되면의 true
로 바뀝니다 false
.
토글 true
/ false
유사한 것은 많은 플러그인 저자들에 의해 구현되었습니다. 그중 두 가지가 이미 언급되었습니다.
기타는 토글 티모 Teifel (기준 # 895 ), 월요일 스테판 칼슨 (기준 # 1046 ) toggle_words 빈센트 왕 (기준 # 1676 ) toggle_word Alexandru Ungur (기준 # 1748 ) incbool.vim 드미트리 페트 그래피 ( # 4361 , GitHub의 ) , NEXTVAL 마이클 ARLT (기준 # 4536 , github에 ).
피보나치 시리즈와 같은 커스텀 시리즈에 따라 숫자를 늘리려면 Barry Arthur ( github )의 넥서스 를 확인하십시오 .
Ctrl-A/X
그러나 모든 Ctrl-A/X
명령 이 기본적 으로 새로운 명령 및 / 또는 새 매핑 ( switch.vim 및 toggle-bool 포함 ) 을 확장 하지만 정의 하려는 아이디어를 따르지는 않습니다 . Ctrl-A/X
상자에서 ' 초과 충전'하는 플러그인을 강조 표시 하여 기본적으로 OP가 요청한 것을 제공합니다.
확장되는 관련 플러그인 Ctrl-A/X
은 날짜를 증가시킬 수있는 Tim Pope ( # 2120 , github )에 의해 가속화 됩니다 .
일부 플러그인은 두 번째 Ctrl-A/X
증분 플러그인을 폴백으로 결합 할 수 있습니다.
Michael Brown의 스왑 잇 :
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
Andrew Radev의 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>
현재 단어가되지 부울 때, 이런 식으로 영업 이익이 정말로 이러한 매핑을 사용할 수있을 것입니다. 또한 매핑 <CR>
대신에 사용할 ^M
수 있으며 일반적으로 map
명령에 모드를 제공하는 것이 가장 좋습니다 . 여기서 nnoremap
보다 적합합니다 noremap
.