![Vim:忽略“f”和“t”运动命令中的大小写](https://linux22.com/image/1281239/Vim%EF%BC%9A%E5%BF%BD%E7%95%A5%E2%80%9Cf%E2%80%9D%E5%92%8C%E2%80%9Ct%E2%80%9D%E8%BF%90%E5%8A%A8%E5%91%BD%E4%BB%A4%E4%B8%AD%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%86%99.png)
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