我正在尝试编写一个批处理文件,它将使用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键生成)是否作为用户按Enter运行每个命令?如何编写正确的批处理文件来编辑文本文件?感谢。
答案 0 :(得分: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