我想从命令行使用vi编辑器创建一个新文件,并多次添加一个字符串,比如100.使用vi -S command.script file.txt
应该可以创建一个新文件file.txt并创建它command.script文件中给出的命令可以写入此文件。我的command.script包含
:%100a hello world
:wq
但它不起作用,我做错了什么?
答案 0 :(得分:0)
如果您在Vim会话中以交互方式执行:%100a hello world
,则会获得E488: Trailing characters
。查找:help :a
:
:{range}a[ppend][!] Insert several lines of text below the specified line. If the {range} is missing, the text will be inserted after the current line. [...] These two commands will keep on asking for lines, until you type a line containing only a ".".
告诉您文本必须放在后面的行中(并且只有一个.
字符的行结束)。
或者您的意思是使用普通模式a
命令? (那个需要[count]
乘以;你的%100
范围也是错误的!)
你也可以使用低级函数append()
,用repeat()
重复字符串。
$append
hello world
[...]
hello world
.
execute "$normal! 100ahello world\<CR>"
" Easier with o instead of a:
$normal! 100ohello world
call append('$', repeat(['hello world'], 100))
但老实说,如果这是你的真实用例(而不仅仅是一个简化的玩具示例),你根本就不需要Vim。以下是 Bash shell的一个示例:
$ for i in $(seq 100); do echo "hello world" >> file.txt; done