Linux 在特定单词之间使用VIM删除.txt的内容

Linux 在特定单词之间使用VIM删除.txt的内容,linux,vim,text-files,Linux,Vim,Text Files,我想删除两行之间的.txt内容,而不是内容关键字。vim是否可以这样做?您可以使用以下命令: :g/BEGIN/,/END/d 如果不需要删除关键字: :g/BEGIN/+1,/END/-1d 您可以使用以下命令: :g/BEGIN/,/END/d 如果不需要删除关键字: :g/BEGIN/+1,/END/-1d 给定 我要删除的最后一行在文件的末尾,但我要删除的第一行不是文件的第一行 我会使用: %s/\_.*\zs\n\=.*BEGIN\_.*END.*// ->:h/\\\.,:

我想删除两行之间的.txt内容,而不是内容关键字。vim是否可以这样做?

您可以使用以下命令:

:g/BEGIN/,/END/d
如果不需要删除关键字:

:g/BEGIN/+1,/END/-1d

您可以使用以下命令:

:g/BEGIN/,/END/d
如果不需要删除关键字:

:g/BEGIN/+1,/END/-1d
给定

我要删除的最后一行在文件的末尾,但我要删除的第一行不是文件的第一行

我会使用:

%s/\_.*\zs\n\=.*BEGIN\_.*END.*//
->
:h/\\\.
:h/\zs
=>直到
\zs
,可以匹配的所有内容(新行/CR)都已匹配(包括您似乎要忽略的第一次出现的BEGIN)。然后匹配要删除的行的所有行(及其以前的
\n
),直到结束(及其完整行)。

给定

我要删除的最后一行在文件的末尾,但我要删除的第一行不是文件的第一行

我会使用:

%s/\_.*\zs\n\=.*BEGIN\_.*END.*//

->
:h/\\\.
:h/\zs
=>直到
\zs
,可以匹配的所有内容(新行/CR)都已匹配(包括您似乎要忽略的第一次出现的BEGIN)。然后匹配要删除的行的所有行(及其以前的
\n
),直到最后一行(及其完整的行)。

谢谢,但是…我要删除的最后一行在文件的末尾,但我要删除的第一行不是文件的第一行…
开始
/
结束
只是关键字,将它们更改为满足您需要的任何内容。谢谢,但是…我要删除的最后一行在文件末尾,但我要删除的第一行不是文件的第一行…
BEGIN
/
End
只是关键字,将它们更改为满足您需要的任何内容。您能解释一下如何仅删除内部关键字吗?将
\zs
0长度模式移动到您希望匹配真正开始的位置(之前的内容变成上下文)。并添加区域结束模式(
\ze
)以及->
%s/\\\\\\\.*\n\=.*BEGIN\zs\\\\.*\zeEND.*/
您能解释一下如何只删除内部关键字吗?将
\zs
0长度模式移动到您希望匹配真正开始的位置(之前的内容变成上下文)。并添加区域结束模式(
\ze
)以及->
%s/\\\\\\.*\n\=.*BEGIN\zs\\.*\zeEND.*/