有没有办法在Vi/Vim中分割一个窗口,使其中一个窗口成为终端?另外,像安装新的文本编辑器这样的解决方案对我没有帮助。
toiithl61#
在Vim 8中,如果使用+terminal选项编译,则可以水平拆分当前窗口,并使用命令:terminal或:term添加一个终端,以实现速记。
+terminal
:terminal
:term
如果你想垂直分割窗口,我知道的最好的方法是用:vsp或<c-w>v做一个常规的垂直分割,然后分割其中一个窗口作为终端窗口(:term),最后移动到较小的非终端窗口并关闭它。
:vsp
<c-w>v
编辑:......就在我写完这篇文章之后,我发现了如何轻松地垂直分割终端窗口......
:vertical terminal " OR :vert term
终端将以类似于插入模式的方式打开,按下<c-w>N将进入“正常”模式,在该模式下,您可以进行常规的Vim运动并运行Vim命令。(我在Bash和Zsh中肯定地知道),你可以运行set -o vi来命中<c-[>或<esc>,并且无论如何都可以使用Vim动作。最好的部分是在“正常”状态下命中v当前命令在新Vim示例中打开并在退出Vim时运行的模式。
<c-w>N
set -o vi
<c-[>
<esc>
v
xnifntxz2#
也许加上字符串
rightb vert term
或
bel vert term
到您的.vimrc(隐藏文件与编辑器设置;默认情况下,它位于用户主目录中:~/.vimrc)将解决您的问题。因此,如果您在终端模拟器中输入vim file_name.txt,您将得到两个拆分窗口:在左侧-txt文件,在右侧-终端仿真器窗口。ps:你可以用ctrl +双“w”(按“w”两次)在分割窗口之间移动。另外,根据我的经验,“term”-命令在8.0 vim版本中不受支持,这与8.2版本不同。
.vimrc
vim file_name.txt
dsekswqp3#
没有插件是无法做到这一点的。这里有几种方法可以获得类似的功能。
:!pwd
:!git add *
:read !ls
6yt4nkrj4#
投票最多的答案是使用vim命令。这在NeoVim上不起作用(至少对我来说)。但是,它仍然相当简单:第一个月term://是NeoVim打开终端的方式bash是您要使用的shell类型(例如,我使用zsh,所以我的命令实际上是:tabe term://zsh)我创建的一些有用的命令:
term://
bash
: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
t5zmwmid5#
conque_term插件让你可以在vim缓冲区内运行shell。
但是我建议使用screen linux command,当通过执行Ctrl+aEsc进入复制模式时,它的行为与vim几乎相同(尤其是移动命令)
bqf10yzr6#
不需要额外的插件,只需要 vanilla Vim。
:term将打开带有端子的水平拆分。:vert term将打开带有端子的垂直拆分。默认情况下,您将处于insert模式,终端将正常工作。Ctrl+(\,n)以在终端窗口中转到normal模式,以防您想要取消某些输出或更改某些设置。* 读作:按住Control键,然后按反斜杠,再按n。*要返回正常的终端行为,只需返回insert模式,例如在normal模式下按i。要关闭终端,只需执行exit命令退出终端。注意:vim对缓冲区和终端如何工作的理解存在问题。例如,如果你关闭终端,拆分也会关闭。因此,对于大量使用终端的用户来说,这可能不是最好的选择。
:vert term
insert
Ctrl+(\,n)
normal
i
exit
前面的答案仍然适用,但默认情况下,终端将以正常模式启动。因此,您必须像前面解释的那样进入insert模式。在normal模式下,如果行号可见:set nonu nornu。
:set nonu nornu
6条答案
按热度按时间toiithl61#
在Vim 8中,如果使用
+terminal
选项编译,则可以水平拆分当前窗口,并使用命令:terminal
或:term
添加一个终端,以实现速记。如果你想垂直分割窗口,我知道的最好的方法是用
:vsp
或<c-w>v
做一个常规的垂直分割,然后分割其中一个窗口作为终端窗口(:term
),最后移动到较小的非终端窗口并关闭它。编辑:......就在我写完这篇文章之后,我发现了如何轻松地垂直分割终端窗口......
终端将以类似于插入模式的方式打开,按下
<c-w>N
将进入“正常”模式,在该模式下,您可以进行常规的Vim运动并运行Vim命令。(我在Bash和Zsh中肯定地知道),你可以运行set -o vi
来命中<c-[>
或<esc>
,并且无论如何都可以使用Vim动作。最好的部分是在“正常”状态下命中v
当前命令在新Vim示例中打开并在退出Vim时运行的模式。xnifntxz2#
也许加上字符串
或
到您的
.vimrc
(隐藏文件与编辑器设置;默认情况下,它位于用户主目录中:~/.vimrc)将解决您的问题。因此,如果您在终端模拟器中输入vim file_name.txt
,您将得到两个拆分窗口:在左侧-txt文件,在右侧-终端仿真器窗口。ps:你可以用ctrl +双“w”(按“w”两次)在分割窗口之间移动。
另外,根据我的经验,“term”-命令在8.0 vim版本中不受支持,这与8.2版本不同。
dsekswqp3#
没有插件是无法做到这一点的。这里有几种方法可以获得类似的功能。
:!pwd
或:!git add *
也可以使用。如果你想把一个命令的输出读入你当前的vim缓冲区,你可以使用read命令,例如,如果你运行:read !ls
,vim会把你当前目录下的文件列表输入到你当前缓冲区的光标位置。6yt4nkrj4#
对于使用 NeoVim 的任何人:
投票最多的答案是使用vim命令。这在NeoVim上不起作用(至少对我来说)。但是,它仍然相当简单:
第一个月
term://
是NeoVim打开终端的方式bash
是您要使用的shell类型(例如,我使用zsh,所以我的命令实际上是:tabe term://zsh
)我创建的一些有用的命令:
t5zmwmid5#
conque_term插件让你可以在vim缓冲区内运行shell。
但是我建议使用screen linux command,当通过执行Ctrl+aEsc进入复制模式时,它的行为与vim几乎相同(尤其是移动命令)
bqf10yzr6#
不需要额外的插件,只需要 vanilla Vim。
vim
:term
将打开带有端子的水平拆分。:vert term
将打开带有端子的垂直拆分。默认情况下,您将处于
insert
模式,终端将正常工作。Ctrl+(\,n)
以在终端窗口中转到normal
模式,以防您想要取消某些输出或更改某些设置。* 读作:按住Control键,然后按反斜杠,再按n。*要返回正常的终端行为,只需返回
insert
模式,例如在normal
模式下按i
。要关闭终端,只需执行exit
命令退出终端。注意:vim对缓冲区和终端如何工作的理解存在问题。例如,如果你关闭终端,拆分也会关闭。因此,对于大量使用终端的用户来说,这可能不是最好的选择。
新病毒
前面的答案仍然适用,但默认情况下,终端将以正常模式启动。因此,您必须像前面解释的那样进入
insert
模式。在
normal
模式下,如果行号可见:set nonu nornu
。