通过ctrl + a,ctrl + x交换值“ true”和“ false”


Answers:



12

switch.vim,它是可定制的。

插件的主要入口点是单个命令:Switch。执行该命令时,插件会在光标下查找一些特定的模式之一,并根据该模式执行替换。

例如,如果光标true在下面的代码中:

flag = true

然后执行时:Switchtrue将变成false


别客气!我有一个关于'vim-dwim'插件的疯狂想法,它会根据光标下的语法(例如,按Enter键)而表现不同,而且我认为我会从该插件中获得很大的启发。如果我能开始做,那就是。
VanLaser

7

插件的Plethora

切换true/ false等已由许多插件作者实现。已经提到其中两个:

其他人则切换由蒂莫Teifel(#895),周一由斯特凡·卡尔松(#1046),toggle_words文森特·王(#1676),toggle_word由亚历Ungur(#1748),incbool.vim德米特里·彼得罗夫(#4361github上) ,nextval由Michael Arlt(#4536github)。

万一你要根据定制系列,以增加数字,例如斐波纳契数列,检查出的Nexus由巴里·亚瑟(github上)。

插件增压 Ctrl-A/X

但是,默认情况下,并非所有人都遵循扩展思想,Ctrl-A/X而是定义了新命令和/或新映射(包括switch.vimtoggle-bool)。我想突出显示那些“增压” Ctrl-A/X开箱即用的插件,因此,默认情况下会提供OP要求的内容:

Tim Pope(#2120githubCtrl-A/X正在加速扩展一个相关的插件,它允许您增加日期。

倒退

一些插件允许组合第二个Ctrl-A/X增量器插件作为后备,例如

  • 迈克尔·布朗(Michael Brown)的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
    
  • 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>当当前单词不是布尔值时,这种方式OP确实可以使用这些映射。另外,您也可以在映射中使用,<CR>而不是^M在映射中使用,通常最好的做法是为map命令提供一种模式,这里nnoremap比更为合适noremap
statox
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.