是否可以用终端分割Vim/Vi中的窗口?

qgzx9mmu  于 2022-12-29  发布在  其他
关注(0)|答案(6)|浏览(191)

有没有办法在Vi/Vim中分割一个窗口,使其中一个窗口成为终端?
另外,像安装新的文本编辑器这样的解决方案对我没有帮助。

toiithl6

toiithl61#

在Vim 8中,如果使用+terminal选项编译,则可以水平拆分当前窗口,并使用命令:terminal:term添加一个终端,以实现速记。

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

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

:vertical terminal

" OR

:vert term

终端将以类似于插入模式的方式打开,按下<c-w>N将进入“正常”模式,在该模式下,您可以进行常规的Vim运动并运行Vim命令。(我在Bash和Zsh中肯定地知道),你可以运行set -o vi来命中<c-[><esc>,并且无论如何都可以使用Vim动作。最好的部分是在“正常”状态下命中v当前命令在新Vim示例中打开并在退出Vim时运行的模式。

xnifntxz

xnifntxz2#

也许加上字符串

rightb vert term

bel vert term

到您的.vimrc(隐藏文件与编辑器设置;默认情况下,它位于用户主目录中:~/.vimrc)将解决您的问题。因此,如果您在终端模拟器中输入vim file_name.txt,您将得到两个拆分窗口:在左侧-txt文件,在右侧-终端仿真器窗口。
ps:你可以用ctrl +双“w”(按“w”两次)在分割窗口之间移动。
另外,根据我的经验,“term”-命令在8.0 vim版本中不受支持,这与8.2版本不同。

dsekswqp

dsekswqp3#

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

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

6yt4nkrj4#

对于使用 NeoVim 的任何人:

投票最多的答案是使用vim命令。这在NeoVim上不起作用(至少对我来说)。但是,它仍然相当简单:
第一个月
term://是NeoVim打开终端的方式
bash是您要使用的shell类型(例如,我使用zsh,所以我的命令实际上是:tabe term://zsh
我创建的一些有用的命令:

" open terminal
if has('nvim')
    command Terminal vsplit term://zsh
    command TerminalTab tabe term://zsh
else
    command Terminal vert term
    command TerminalTab tab ter
endif
t5zmwmid

t5zmwmid5#

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

但是我建议使用screen linux command,当通过执行Ctrl+aEsc进入复制模式时,它的行为与vim几乎相同(尤其是移动命令)

bqf10yzr

bqf10yzr6#

不需要额外的插件,只需要 vanilla Vim。

vim

:term将打开带有端子的水平拆分。
:vert term将打开带有端子的垂直拆分。
默认情况下,您将处于insert模式,终端将正常工作。
Ctrl+(\,n)以在终端窗口中转到normal模式,以防您想要取消某些输出或更改某些设置。* 读作:按住Control键,然后按反斜杠,再按n。*
要返回正常的终端行为,只需返回insert模式,例如在normal模式下按i。要关闭终端,只需执行exit命令退出终端。
注意:vim对缓冲区和终端如何工作的理解存在问题。例如,如果你关闭终端,拆分也会关闭。因此,对于大量使用终端的用户来说,这可能不是最好的选择。

新病毒

前面的答案仍然适用,但默认情况下,终端将以正常模式启动。因此,您必须像前面解释的那样进入insert模式。
normal模式下,如果行号可见:set nonu nornu

相关问题