2016-08-31 85 views
0

我正在尝试编写一个批处理文件,它将使用vim替换文本文件中的几行文本。下面是我的批处理文件:如何编写批处理文件来运行vim命令

vim toedit.txt 
:10 
:R new value 
:11 
:R new value 
:wq 

执行时,它会从视图VIM的角度给出一个消息:

Swap file "toedit.txt.swp" already exists! 
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort: 

什么是交换文件?无论如何,我按D,因为它听起来只是一个临时文件,那么我的批处理运行将停止在vim中,光标位于文本文件的第10行。

在批处理文件函数中是否有换行符(它是通过按回车键产生的)作为用户按Enter键来运行每个命令?如何编写正确的批处理文件来编辑文本文件?谢谢。

+0

要做一些系列的命令,你可能会去宏的情况下,类似的和重复的操作。或者,也可以选择一个函数或命令行参数。你可以指定你想要做什么 – SibiCoder

回答

5
:help swap-file 

通常情况下,交换文件在磁盘上,如果Vim的崩溃,或者打开一个文件,是已经被Vim的另一个进程中打开。您可以使用-n开关忽略交换文件。

对于批量编辑,最好使用ex,这是批量版本的Vim。然而,在vanilla Vim中没有:R命令,所以我不能确定你想要做什么;但它会是这样的

ex -n toedit.txt +10 +"R new value" +11 +"R new value" +wq 
+0

ex是不是一个公认的命令,它说。 :R将替换文本文件中的整行 – James

+0

您应该能够相当等效地使用'vim'而不是'ex'。 ':R'不是一个内置的Vim命令,所以如果这个部分不起作用,不能帮助你。 – Amadan

+0

*替换几行*:它们的意思是':s /.*/新值吗? – rgoliveira

相关问题