Vim:vsplit并运行外部命令
我正在尝试映射一个命令或函数,该命令或函数垂直拆分新窗口,将光标切换到新窗口,并在Vim:vsplit并运行外部命令,vim,Vim,我正在尝试映射一个命令或函数,该命令或函数垂直拆分新窗口,将光标切换到新窗口,并在上运行外部命令 当我这样做时: :vsplit|wincmd w|execute '!perldoc <cWORD>' :vsplit | wincmd w | execute'!佩尔多克' Vim似乎首先在当前窗口中运行外部命令,然后当命令退出时,Vim创建一个新窗口并将焦点切换到该窗口 如果我在一个函数中将这些命令分成单独的行并调用该函数,同样的事情也会发生。有没有办法让Vim做我想让它做的事
上运行外部命令
当我这样做时:
:vsplit|wincmd w|execute '!perldoc <cWORD>'
:vsplit | wincmd w | execute'!佩尔多克'
Vim似乎首先在当前窗口中运行外部命令,然后当命令退出时,Vim创建一个新窗口并将焦点切换到该窗口
如果我在一个函数中将这些命令分成单独的行并调用该函数,同样的事情也会发生。有没有办法让Vim做我想让它做的事
:vsplit
之后,将在呈现新窗口之前执行更多命令,您可以将其想象为“虚拟窗口”
这意味着,无论它多么令人不安,在下一个命令之前,您都不会看到新窗口。Vim就是这样工作的,你对此无能为力
在下面的例子中
- 我在同一个目录中有两个perl文件
- 在
中,我在网上找到了一个示例perl脚本perl.pl
- 在
中有一个单词,warnings.pl
warnings
在Vim中打开,光标位于perl.pl
strict
- 我运行
:vsplit |!perldoc
- 我希望在我的寻呼机中看到关于
的文档,当我回到Vim时,在两个垂直窗口中显示相同的缓冲区strict
- 我关上左边的窗户
- 我运行
:vsplit warnings.pl |!perldoc
- 当我回到Vim时,我希望在我的寻呼机中看到关于
警告的文档,并在两个垂直窗口中显示两个不同的缓冲区
:help K
和:help'关键字prg
:
set keywordprg=perldoc
我的同事Tye向我展示了如何做到这一点:
让w=expand(“”)vnew执行“read!perldoc”。w|1
- 将
另存为变量w
打开一个新的空窗口vnew
- 执行
将read!perldoc
作为变量传递。输出被读入新窗口w
- 跳转到新窗口中缓冲区的第一行
:vsplit
已将光标放在新窗口中。另外,请检查:help K
:vsplit
不会在我的计算机上自动将光标放入新窗口。然后您应该调查原因。我为什么要这样做?这不是问题所在……你的同事向你展示了如何做一些不是你要求的事情。