【问题标题】:Is it possible to split a window in Vim/Vi with a terminal?是否可以使用终端在 Vim/Vi 中拆分窗口?
【发布时间】:2016-11-14 17:59:07
【问题描述】:

有没有办法在 Vi/Vim 中拆分一个窗口,使一个窗口成为终端?

附:安装新的文本编辑器之类的解决方案对我没有帮助。

【问题讨论】:

  • 我建议使用 tmux 之类的东西,拆分控制台窗口,为 vim 使用一个拆分
  • 据我所知,拆分 vim 并给终端半屏是行不通的。 Vim 只是一个编辑器,别指望它是一个终端。
  • neovim 在拆分中有一个终端。 :help :terminal
  • @nadavgam 如果您解释了为什么不能使用 tmux 或 screen 之类的解决方案,这将对我们有所帮助。这些是此类问题的自然解决方案,通常会比其他解决方案(如 conque_term)产生更好的结果。了解您不能使用它们的原因将有助于我们提出您可以使用的建议。

标签: vim vi


【解决方案1】:

在 Vim 8 中,如果编译时使用+terminal 选项,可以将当前窗口水平分割并添加终端,使用命令:terminal:term 进行简写。

如果你想垂直分割窗口,我知道的最好方法是使用:vsp<c-w>v 进行常规垂直分割。然后,将其中一个窗口拆分为一个终端窗口(@98​​7654330@),最后移动到较小的非终端窗口并关闭它。

编辑:...在我写完这篇文章之后,我发现了如何轻松地垂直拆分终端窗口...

:vertical terminal

" OR

:vert term

终端将以类似于插入模式的方式打开,按下<c-w>N 将使您进入“正常”模式,您可以在该模式下进行常规的 Vim 动作并运行 Vim 命令。请注意,在许多 shell 中(我在 Bash 和 Zsh 中肯定知道),您可以运行 set -o vi 来点击 <c-[><esc> 并使用 Vim 动作。最好的部分是在“正常”模式下点击v,当前命令在新的 Vim 实例中打开并在退出 Vim 时运行。

【讨论】:

  • 你可以使用exit而不是<c-w>,然后使用:q!
  • 但是..如何关闭终端窗口?
  • @Georg 最快的方法是像往常一样在 bash 提示符下执行 Ctrl+D。
【解决方案2】:

也许添加字符串

rightb vert term

bel vert term

到您的.vimrc(带有编辑器设置的隐藏文件;默认位于用户主目录:~/.vimrc)将解决您的问题。 因此,如果您在终端仿真器中键入vim file_name.txt,您将得到两个拆分窗口:左侧 - txt 文件,右侧 - 终端仿真器窗口。

ps:你可以使用 ctrl + double "w" 在拆分窗口之间移动(按 "w" 两次)。

另外,根据我的经验,8.0 vim 版本不支持“term”命令,这与 8.2 版本不同。

【讨论】:

    【解决方案3】:

    没有插件就无法做到这一点。 以下是获得类似功能的几种方法。

    • 使用 tmux 或其他终端窗口管理器。 作为对您的 P.s. 的回应,tmux 不是另一个文本编辑器。 它只是允许您拆分终端屏幕,因此您仍然可以使用 vim 进行文本编辑。
    • 您还可以运行终端命令并从 vim 内部查看输出。 只需运行一个命令,但在它前面加上一个感叹号。 例如,如果您在 vim 中运行 :!ls,您将看到当前目录中的文件列表。 任何其他命令,例如 :!pwd:!git add * 也可以使用。 如果要将命令的输出读入当前的 vim 缓冲区,可以使用 read 命令。 例如,如果您运行:read !ls,vim 会将您当前目录中的文件列表输入到当前缓冲区的光标位置。

    【讨论】:

    【解决方案4】:

    插件conque_term 让您可以在vim 缓冲区内运行shell。

    但是我推荐screen linux command,它在通过执行 Ctrl+a 进入复制模式时具有与 vim 几乎相同的行为(尤其是移动命令) Esc

    【讨论】:

      猜你喜欢
      • 2012-08-08
      • 2011-06-16
      • 2010-10-03
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 2015-01-12
      相关资源
      最近更新 更多