我正在尝试创建一个命令,该命令将当前行复制到新选项卡,然后在句号(.
(处将其断开,然后在下面(文本末尾(添加一个空行,最后转到文本的开头(第一行(。我使用以下代码:
command Lnew y | tabnew | pu | s/. /rr/g | noh | o | 1G
它可以工作到noh
部分,但o
和1G
部分不起作用。问题出在哪里?
您的命令是 Ex 命令和正常模式命令的混合体。您有两种选择:
-
仅使用 Ex 命令
y | tabnew | put | s/. /rr/g | nohlsearch | put='' | 1
-
在正常模式命令前面加上
:help :normal
y | tabnew | put | s/. /rr/g | nohlsearch | normal! o^O1G
使用
<C-v><C-o>
插入文字^O
。
可能的改进:
command! Lnew y | tabnew | pu | -d | s/. /r/g | noh | pu='' | 1
Ex 'put' 命令在复制的行上方添加一个新行。添加"-d"命令可解决此问题。
通过我的阅读,这个问题询问了在句号处拆分并在文本末尾添加空白行的问题。替换命令中似乎只需要一个"\r"。
在"查找和替换"命令中,还需要跳过空格,因此不要:
s/. /rr/g
您必须使用:
s/. /rr/g
在我早期的 Vim 中,我为此苦苦挣扎了很长一段时间。希望这有帮助。