Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 将所有以X开头的行放在文件末尾,并使用vi_Vim_Vi - Fatal编程技术网

Vim 将所有以X开头的行放在文件末尾,并使用vi

Vim 将所有以X开头的行放在文件末尾,并使用vi,vim,vi,Vim,Vi,用vi将所有以单词“define”开头的行粘贴到文本文件末尾的最佳方法是什么 例如,如果我有: 定义XXX a 定义YYY b 我想得到: 定义XXX a 定义YYY b 定义XXX 定义YYY 解决方案: 在vi中,g/^define/t$运行良好 有关vim解决方案,请参见下文 您可以使用Go(gee、owe和escape键)在文件末尾打开一行,然后输入字符: !!grep '^define' %<ENTER> !!grep“^define%” 它用grep命令(其中

用vi将所有以单词“define”开头的行粘贴到文本文件末尾的最佳方法是什么

例如,如果我有:

定义XXX

a

定义YYY

b

我想得到:

定义XXX

a

定义YYY

b

定义XXX

定义YYY


解决方案:

  • 在vi中,
    g/^define/t$
    运行良好

  • 有关vim解决方案,请参见下文

您可以使用
Go
(gee、owe和escape键)在文件末尾打开一行,然后输入字符:

!!grep '^define' %<ENTER>
!!grep“^define%”
它用
grep
命令(其中
%
是当前文件)的输出替换当前行(您刚刚在文件末尾打开的行)


您需要确保首先保存该文件,因为它使用的是磁盘上的副本,而不是内存中的副本,请记住这是Vim的一部分-旧版本的Vi可能没有此功能。

为什么必须使用
Vi
?使用其他命令预处理文件不是更容易吗?我正在使用vi编辑一些代码。我想对代码将生成的所有文件发表一点意见。如果我已经在vi中,那么使用另一个命令似乎很奇怪,但是如果这是最好的方法,我会接受它。我几乎100%确定您使用的不是vi而是vim。如果是这样,两种解决方案都是有效的。不过,我会使用内置命令。grep方法在我从vi切换到vim之前不起作用。
vi
很可能是指向
vim
的别名或符号链接,可能是在
兼容模式下启动的。始终使用
vim
。为什么使用双感叹号?@dimitry,第一个相当于
:。
(切换到
ex
模式并选择当前行),第二个意思是用以下命令的输出替换选择。您也可以轻松地执行
:。!grep…
如果您不介意额外的按键。