Vim:忽略“f”和“t”运动命令中的大小写

Vim:忽略“f”和“t”运动命令中的大小写

Vim:set ignorecase命令不会影响我的 vim 配置中的“f”和“t”运动命令。

是否有任何选项或技巧可以使该命令忽略大小写?

答案1

我建议如下:

function! ForwardLookup()
    " get next key pressed
    let c = nr2char(getchar())
    let old_search_pattern = @/
    " Use of \V enables very-nonmagic pattern
    exec 'normal /\c\V' . escape(c, '\/') . nr2char(0x0d)
    let @/ = old_search_pattern
endfunction
nnoremap f :call ForwardLookup()<CR>

答案2

该函数的基本版本实际上在参考手册中作为如何使用该函数的示例getchar()

此示例重新定义“f”以忽略大小写:

:nmap f :call FindChar()<CR>
:function FindChar()
:  let c = nr2char(getchar())
:  while col('.') < col('$') - 1
:    normal l
:    if getline('.')[col('.') - 1] ==? c
:      break
:    endif
:  endwhile
:endfunction

:help getchar()

如果您希望它也能工作,则需要保存返回的字符并编写类似的映射,如果您希望它与计数一起工作;,则需要编写代码来处理。v:count1

相关内容