如何在Vim中限制替换命令的行范围至当前折叠内?
在Vim中限制替换范围到当前折叠的指定行段
当然可以实现,以下是两种实用的方法:
方法1:利用折叠行号函数直接构造命令
Vim提供了foldstart('.')和foldend('.')两个内置函数,分别返回当前光标所在折叠的起始行号和结束行号。你可以通过这两个函数拼接出目标范围,执行替换:
:execute (foldstart('.') + 1) . ',' . foldend('.') . 's/str/replace/'
foldstart('.') + 1定位到折叠的第二行foldend('.')定位到折叠的最后一行execute命令负责将拼接后的字符串作为Vim命令执行
方法2:可视模式选中目标范围后替换
如果更习惯用可视化操作,可以按以下步骤来:
- 将光标移到折叠的第二行(可先跳到折叠第一行,再按
j下移一行) - 按
v进入可视模式,再按]z直接跳到当前折叠的末尾,选中从第二行到折叠结束的所有内容 - 输入
:s/str/replace/并回车,替换只会作用于选中的范围
内容的提问来源于stack exchange,提问作者kargirwar
相关产品推荐
相关产品推荐

