命令字符串的 vim 键映射,例如 9:s/pat/sub/ge<cr>:



如果我想在 9 行文本上运行 :s 命令,我键入 9:s,vim 将命令行设置为

:.,+8s  

这非常有用。但是,如何才能在键映射中应用该行为呢?

我已经尝试了以下映射开始:

nmap _p :s/etc  
nmap _p :^Us/etc  
nmap _p ^U:s/etc  
nmap _p :^Ulet @l=v:count1<cr>:exe @l.'s/etc'  
nmap _p :^Ulet @l=v:count1<cr>:exe @l.':s/etc'  
nmap _p :^Ulet @l=v:count1<cr>:exe '.,+'.@l-1.'s/etc'  

前 3 个都9_p视为_p,接下来的 2 个将其视为_p但将其应用于文本的第 10 行,而最后一个努力的行为类似于前 3

使用 :normal 获取映射的计数:

nmap _p :normal :s/etc/

您可以使用以下地图:

nnoremap _p :<c-u>exe".,+".v:count." s/etc"<cr>

这将执行命令.,+N s/etc其中N是正常模式计数。

最新更新