Vim:从命令行进入文件末尾并开始编辑的方法是什么?

4

如果我在调用Vim时带上+参数,就可以让光标定位到文件的最后一行:

vi + myfile          # "+" = go to last line of file

我该如何做到这一点,并进入追加模式,以便用户可以从文件末尾开始输入?

类似于以下代码:

emacs myfile --eval "(goto-char (point-max))"

在处理命令行时检测到错误: E20:未设置标记。 - Mark Harrison
这对你有用吗?对我来说,它开始在第一行的第一个字符处插入,这不是我想要的。我需要到文件的末尾。 - Mark Harrison
@TimBiegleisen,Emacs非常好用。这个问题是关于在Vim中做同样的事情。 - Mark Harrison
阅读这篇SO帖子 - Tim Biegeleisen
@TimBiegeleisen,是的,正如我之前提到的那样,它不起作用。这是vim 7.3 fwiw。 - Mark Harrison
也许你可以更新一下问题,加上这些具体细节。可惜的是,我目前在一个Windows环境下工作,所以除了Cygwin(在这里没有帮助),我无法在Linux系统上使用Vim。 - Tim Biegeleisen
2个回答

5

一种解决方法是使用+参数,在读取文件后传递一个要执行的命令。Vim可以通过这种方式接受最多10个命令,因此您可以使用:

vim "+norm Go" "+startinsert" myfile
  • 第一条命令 norm Go 将跳转到最后一行并添加新行。
  • 第二条命令将启动插入模式,允许用户在最后一行中输入文字。

注意:此解决方案会在文件末尾创建一个新行。如果您想要编辑最后一行的末尾而不创建新行,则可以使用以下命令:

vim "+norm G$" "+startinsert" myfile

但是,如果您这样做,而且您的最后一行已经包含了一些文本,您将在最后一个字符之前开始插入文本。我不知道是否有类似于startinsert的等效方法,例如startappend,因此我不知道如何解决这个问题。


1
第一个正好符合我的需要。谢谢! - Mark Harrison
不用谢!另外,你可能会对 Vi/ViM SE 网站 对于 Vim 的未来问题感兴趣 :-) - statox

1
根据这个网站的说法,与startinsert相当的命令是startappend,而它的等效命令是startinsert!。因此答案可能是:
vim "+norm G$" "+startinsert!" myfile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接