ctrl + a, ctrl + x를 통해 값을“true”와“false”로 교환


10

+ 또는 + 조합을 사용하여 코드에서 값을 신속하게 교환 true하고 교환 할 수있는 것이 유용 할 것이라고 생각합니다 . 해당 플러그인이나 다른 플러그인이 있습니까?falsectrlactrlx

답변:



12

switch.vim 이 있으며 사용자 정의 할 수 있습니다.

플러그인의 주요 진입 점은 단일 명령 :Switch입니다. 명령이 실행될 때 플러그인은 커서 아래에서 몇 가지 특정 패턴 중 하나를 찾고 패턴에 따라 대체를 수행합니다.

예를 들어 커서가 true다음 코드 에있는 경우

flag = true

실행 :Switch되면의 true로 바뀝니다 false.


천만에요! 커서 아래 구문에 따라 다르게 작동하는 'vim-dwim'플러그인에 대한이 미친 아이디어가 있습니다 (예 : Enter 키를 누를 때).이 플러그인에서 나에게 큰 영감을 줄 것이라고 생각합니다. 내가 그 일을 시작한다면
VanLaser

7

플러그인 Plethora

토글 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.vimtoggle-bool 포함 ) 을 확장 하지만 정의 하려는 아이디어를 따르지는 않습니다 . Ctrl-A/X상자에서 ' 초과 충전'하는 플러그인을 강조 표시 하여 기본적으로 OP가 요청한 것을 제공합니다.

  • Michael Brown ( # 2294 , github )에 의한 스왑 잇 ,
  • Takuya Nishigori ( # 4817 , github )의 증분 활성화 제 ,
  • Konfekt에 의한 CtrlXA ( # 5600 , github )
  • Zef Houssney ( github )에 의한 사이클 ,
  • bootleq에 의한 사이클 ( github )

확장되는 관련 플러그인 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(다음 가능한 값을 증가시키기 위해 줄에 표시) 과급하면 간섭이 발생할 수 있습니다.


1

매핑을 사용하려는 것으로 변경하십시오.

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이 아니라 이어야합니다 .


1
이 사이트에 오신 것을 환영합니다! 참고이 기능처럼 만들 수있는 조건을 추가 흥미로운 일이 될 것이라고 내장 <C-a>하고 <C-x>현재 단어가되지 부울 때, 이런 식으로 영업 이익이 정말로 이러한 매핑을 사용할 수있을 것입니다. 또한 매핑 <CR>대신에 사용할 ^M수 있으며 일반적으로 map명령에 모드를 제공하는 것이 가장 좋습니다 . 여기서 nnoremap보다 적합합니다 noremap.
statox
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.