是否可以在一个窗口中使用 stdin 打开 vim,并在另一个窗口中打开文件?
vim -
使用缓冲区中标准输入的文本启动 vim
vim -o file1 file2
启动 vim,在多个分割窗口中显示文件
它们可以组合吗?vim -o file1 -
不起作用;它会因错误而终止Too many edit arguments
。我知道我可以使用vim -
然后:split file1
,但如果可能的话,我想使用命令行标志来执行此操作。
答案1
虽然您不能使用-o
,但您可以执行通过 传递的任何命令-c
:
$ vim - -c 'split file1'
答案2
我刚刚发现了另一种从多个临时文件打开的很酷的方法(但无需从 stdin 读取):
vim -O <(sort file1) <(sort file2)
(分裂)
vim -p <(sort file1) <(sort file2)
(标签式)
当然你可以执行括号内的任何命令:
vim -O <(cat file1) <(cat file2)
(灵感来自https://unix.stackexchange.com/questions/16443/combine-text-files-column-wise)
答案3
根据 vim 手册页的概要,答案是否定的。您可以指定多个文件或连字符,但不能同时指定:
NAME
vim - Vi IMproved, a programmer's text editor
SYNOPSIS
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
实现目标的一种方法是使用命令替换和文件输入重定向:
vim -o mine.txt yours.txt <(diff mine.txt yours.txt)
上述命令在 vim 中打开三个窗口:
- 常规文件:mine.txt
- 常规文件:yours.txt
- 对两个文件进行差异分析,然后将差异的输出重定向到 vim 作为文件输入。
vim 基本上将的输出<(any command here)
视为另一个要打开的文件。