映射 Vim 命令后跟替换
Mapping a Vim command followed by a replacement
我正在使用以下内容将当前段落换行,然后删除双空格:
nnoremap Q gqap :s/ / /g<cr>
但是当我执行它时,我找不到模式,这很奇怪,因为如果我单独执行它,它会起作用::s/ / /g
+ Enter
可能是什么问题?
映射本身看起来不错;我想问题在于 :s
仅适用于 current 行,而在重新格式化后,文本可能分布在多行中。您可以通过解决 :substitute
的最后更改范围 (:'[,']
) 来解决此问题。由于不一定有多个空格(更好地匹配 \+
也匹配超过 2 个),您可以使用 /e
标志抑制错误:
:nnoremap Q gqap:'[,']s/ \+/ /ge<cr>
我正在使用以下内容将当前段落换行,然后删除双空格:
nnoremap Q gqap :s/ / /g<cr>
但是当我执行它时,我找不到模式,这很奇怪,因为如果我单独执行它,它会起作用::s/ / /g
+ Enter
可能是什么问题?
映射本身看起来不错;我想问题在于 :s
仅适用于 current 行,而在重新格式化后,文本可能分布在多行中。您可以通过解决 :substitute
的最后更改范围 (:'[,']
) 来解决此问题。由于不一定有多个空格(更好地匹配 \+
也匹配超过 2 个),您可以使用 /e
标志抑制错误:
:nnoremap Q gqap:'[,']s/ \+/ /ge<cr>