在 shell 中使用 vi 命令可以这样工作:
vi -c "set fileformat=unix | wq" filename.txt
但是,这不适用于 g 等命令。
您需要使用两个 -c 参数才能使其工作,例如:
vi -c g/^/m0 -c wq filename.txt
或
vi filename.txt -c g/^/m0 -c wq
编码愉快!
附注
在您使用的情况下:
vi test.txt +$'i\nhihi' +wq
这将在内存中的当前行之前插入!
例如,如果您之前使用此命令在第 20 行之前插入了“hihi”:
vi test.txt +20$'i\nhihi' +wq (insert hihi before line 20)
vi test.txt +20$'a\nhihi' +wq (insert hihi after line 20)
然后在没有指定数字的情况下键入将使用内存中的最后一个数字。
vi test.txt +$'i\nhihi' +wq (This command will now insert before line 20)
vi test.txt +$'a\nhihi' +wq (This command will now insert after line 20)
您必须通过指定新编号来重置内存中的行号:
vi test.txt +0$'i\nhihi' +wq (add hihi before line 0 to very top)
vi test.txt +0$'a\nhihi' +wq (add hihi after line 0 to very top)
vi test.txt +1$'i\nhihi' +wq (add hihi before line 1 to very top)
vi test.txt +1$'a\nhihi' +wq (add hihi after line 1 as line 2)
如果不知道 test.txt 中的最后一行数,则可以使用 wc 计算行数。
(在最后一行之前添加 hihi)
vi test.txt +$(wc -l < test.txt)$'i\nhihi' +wq
或
(在最后一行后添加 hihi)
vi test.txt +$(wc -l < test.txt)$'a\nhihi' +wq