Vim自动运行终端命令

时间:2019-11-14 21:05:17

标签: vim neovim

我正在尝试编写一个命令(在vim rc中),该命令自动创建一个新的拆分并启动一个终端(即,通过执行:Term),然后在该终端上自动执行一些bash命令(特别是“ conda activate”)< / p>

这是我走了多远:

command CustomTerminal execute "vsplit ." <bar> execute "Term" 

如何扩展此命令,以便在此终端上通过管道执行一些bash命令?

1 个答案:

答案 0 :(得分:0)

我看到您的命令定义存在以下问题:

  • 这里不需要:execute<Bar>也仅在映射中需要
  • vsplit .创建目录列表;那是故意的吗?
  • 您是否定义了自定义:Term命令?打开终端的内置命令为:terminal
  • :term自行执行(水平)拆分; :help :terminal提及
  

如果要垂直拆分窗口,请使用:

    :vertical terminal

:terminal命令已经接受可选的Shell命令。如果您需要的是,可以轻松扩展自定义命令以接受并传递此参数:

:command -nargs=? CustomTerminal vertical terminal <args>

请参见:help :command-nargs:help <args>

此外,您可以通过-complete=shellcmd添加:help :command-completion

保持终端并向终端提供命令

如果要运行多个命令然后关闭终端,因此要重用单个终端会话,必须遵循:help terminal-to-job才能将命令从Vim发送到终端(由交互式shell接收或无论当前正在运行的任何应用程序)。看起来像这样:

call term_sendkeys(buf, "ls *.java\<CR>")