我想使用Vim来查看history
(不在shell中)的结果。我认为history | vim
将工作(使用的history
结果为vim
输入),但它返回:为什么“history | vim”不起作用?
$history | vim
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: Finished.
任何人能解释一下吗?
我想使用Vim来查看history
(不在shell中)的结果。我认为history | vim
将工作(使用的history
结果为vim
输入),但它返回:为什么“history | vim”不起作用?
$history | vim
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: Finished.
任何人能解释一下吗?
通过管道进入vim,您正在更改标准输入流。因为vim是一个交互式程序,它需要标准输入作为控制台。
如果你想查看VIM,你应该告诉它,你正在阅读从标准输入文件(通过提供参数-
):
history | vim -
或者,你可以只使用更或少:
history | more
history | less
这些后两者是优选的。如果你输入vim,它会看到你的“文件”有修改,所以你不能用直接的:q
命令退出。相反,你必须强制退出:q!
,这有点笨重。
在另一方面,你可以更或少只需键入q
退出。看看这两个程序的手册页。你会用很多。
正如意见建议罗素·席尔瓦,您可以在只读模式,当你从标准输入读取打开VIM。只需提供-R
参数。然后你就可以正常退出,而无需倍率:
history | vim -R -
我尝试过'vim |历史也......这似乎是一件可怕的事情..结果是外壳不响应..我不能输入任何说明..你能解释这个给我吗? – Sayakiss
哦,亲爱的。你所做的是将'vim'的输出连接到'history'的输入。这不是一个好主意。请记住,'vim'仍然在运行,因为它是一个交互式程序。您仍然可以发送命令,因为它仍在从标准输入读取数据,但由于您将输出管道输送到另一个程序中,因此您无法看到它。如果你输入':q!'并按下回车键,你应该返回到shell。如果您已进入其他编辑模式,您可能需要按几次Esc键。 – paddy
哇......当我输入':q!'并按下回车键时,我会返回到shell ...它的工作原理..真的非常感谢〜 – Sayakiss
除此之外的vim -
,您可以尝试bash命令替换,如:
vim <(history)
参见:
+1。我喜欢这个解决方案(也在Ubuntu上成功测试过,因为“vi”实际上是一个到/ usr/bin/vim.tiny的符号链接)。尽管如此,为什么你会为此付出一些代价呢?人们有时会很残酷。 :) – syntaxerror
这happend我试图把它发送到使用背景控制台(&)
一个脚本:
...
vi "$file" &
...
# change to just:
vi "$file"
去除&,问题就走了。
这是不相关的问题... –
如果你想使用vim作为寻呼机[vimpager](https://github.com/rkitover/vimpager)似乎工作得很好。 – FDinoff