vim-在分割窗口中打开标准输入和文件

vim-在分割窗口中打开标准输入和文件

是否可以在一个窗口中使用 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 中打开三个窗口:

  1. 常规文件:mine.txt
  2. 常规文件:yours.txt
  3. 对两个文件进行差异分析,然后将差异的输出重定向到 vim 作为文件输入。

vim 基本上将的输出<(any command here)视为另一个要打开的文件。

相关内容