vim将ex范围设置为当前段落,不带视觉/标记等

时间:2012-01-13 15:56:28

标签: vim

我想将一个命令应用于当前段落,但我想自动化它,所以我不需要事先在视觉上选择/标记段落。

我想要像

这样的东西
:{,}s/this isn't/important/g  

指定要应用's'(在本例中)的范围。

最终我想使用范围接受命令来重新格式化段落。

有谁知道怎么做?我缺少一种更好的方法吗?

3 个答案:

答案 0 :(得分:6)

:'{,'}s/this isn't/important/g

请参阅:

:h '{

答案 1 :(得分:2)

如果您要排除段落周围的第一行和最后一行空行(就像文本对象“ v_ip”一样),则可以使用以下方法:

:'{+1,'}-1

对于:sort之类的东西,这不会将最后一行添加到顶部。我使用此映射按长度对当前段落进行排序:

nn <leader>s mx:'{+1,'}-1!awk '{print length(), $0\|"sort -n"}'\|cut -d' ' -f2-<cr>`x

答案 2 :(得分:1)

在Vim中存在Text object selectionp表示段落。

要以可视模式选择段落,例如,要对其应用其他命令,请使用vipvap