Vim 用点重复上一次函数调用

Vim 用点重复上一次函数调用,vim,Vim,我编写了一个小函数,并添加了一个映射以跳转到与当前行中的前两个字符不匹配的下一行: function! JumpToNextNonMatching() let curr_line = getline('.') let spattern = '^[^' . curr_line[0] . '][^' . curr_line[1] . ']' call search(spattern) endfunction nnoremap ,n :<C-U>call JumpToNextN

我编写了一个小函数,并添加了一个映射以跳转到与当前行中的前两个字符不匹配的下一行:

function! JumpToNextNonMatching()
  let curr_line = getline('.')
  let spattern = '^[^' . curr_line[0] . '][^' . curr_line[1] . ']'
  call search(spattern)
endfunction
nnoremap ,n :<C-U>call JumpToNextNonMatching()<CR><C-L>
函数!JumptonExtnomatching()
让curr_line=getline('.'))
让SPATERN='^[^'.当前行[0].][^'.当前行[1].]'
呼叫搜索(SPATERN)
端功能
nnoremap,n:调用JumpToNextNonMatching()
因此,如果我点击
,n
,它将跳转到不符合条件的下一行。我想使用repeat.vim插件来使用
重复此操作,即跳到不符合条件的下一行


我如何使用上面提到的插件来实现这一点,或者我可以使用更好的替代方案吗?

你应该告诉我们你到底在做什么。使用repeat.vim不需要太多更改:

  • 您需要引入一个中间的
    映射,以便repeat调用
  • 您需要在命令执行结束时向插件注册映射
  • 给你:

    function! JumpToNextNonMatching()
        let curr_line = getline('.')
        let spattern = '^[^' . curr_line[0] . '][^' . curr_line[1] . ']'
        call search(spattern)
    
        silent! call repeat#set("\<Plug>JumpToNextNonMatching")
    endfunction
    nnoremap <Plug>JumpToNextNonMatching :<C-U>call JumpToNextNonMatching()<CR><C-L>
    nmap ,n <Plug>JumpToNextNonMatching
    
    函数!JumptonExtnomatching()
    让curr_line=getline('.'))
    让SPATERN='^[^'.当前行[0].][^'.当前行[1].]'
    呼叫搜索(SPATERN)
    安静!调用repeat#set(“\JumpToNextNonMatching”)
    端功能
    nnoremap JumpToNextNonMatching:调用JumpToNextNonMatching()
    nmap,n JumptonExtnomatching
    
    To
    命令重复上一次更改。让它重复一个动作是相当令人困惑的经历。也许最好让函数设置模式寄存器,
    @/
    。然后点击
    n
    。read repeat.vim,下面是如何重复映射函数调用的示例@彼得林克他(据我理解)不想使用
    /n
    机制。函数调用do
    search
    ,每次
    spattern
    都会不同。比方说,我们有4行
    line1:aaa,line2:bbb,line3:aaa,line4:bbb
    。假设光标位于第一行,如果他调用他的函数3次,光标将跳转:
    2-3-4
    ,但是如果他保存了类似
    @
    的内容,跳转顺序将是
    2-4
    @Kent您是对的。看起来这里可以使用repeat.vim。然而,我仍然觉得
    命令应该做些改变。我也不认为,n太多,无法键入vs