我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
当前回答
到目前为止,我已经尝试了很多这里提到的解决方案,我真正想要的是保持终端开放,同时在VsCode中编码类似的体验。然后我发现了一个对我非常有效的解决方法。
在安装之前:
我正在使用Nvim 0.5,但我认为它可以用于任何版本,并在vim上进行检查 我使用的是macOS卡特琳娜10.15.7版
设置集成终端
步骤1 -
创建名为myQuickTerminal的脚本。Vim或者任何你想要的名字。 输入以下脚本
"==============================================================================
"
" ▒█▀▀█ █░░█ ░▀░ █▀▀ █░█ ▀▀█▀▀ █▀▀ █▀▀█ █▀▄▀█ ░▀░ █▀▀▄ █▀▀█ █░░
" ▒█░▒█ █░░█ ▀█▀ █░░ █▀▄ ░▒█░░ █▀▀ █▄▄▀ █░▀░█ ▀█▀ █░░█ █▄▄█ █░░
" ░▀▀█▄ ░▀▀▀ ▀▀▀ ▀▀▀ ▀░▀ ░▒█░░ ▀▀▀ ▀░▀▀ ▀░░░▀ ▀▀▀ ▀░░▀ ▀░░▀ ▀▀▀
"
"==============================================================================
" " This is a script that will trigger a terminal quickly than the FloatTerminal
" open new split panes to right and below
"link: https://betterprogramming.pub/setting-up-neovim-for-web-development-in-2020-d800de3efacd
"==============================================================================
set splitright
set splitbelow
" turn terminal to normal mode with escape
tnoremap <Esc> <C-\><C-n>
" start terminal in insert mode
au BufEnter * if &buftype == 'terminal' | :startinsert | endif
" open terminal on ctrl+n
function! OpenTerminal()
split term://zsh
resize 10
endfunction
nnoremap <leader> n :call OpenTerminal()<CR>
注意:如果你因为特定的原因想运行bash而不是zsh,那么用bash替换zsh。
步骤2 -
我们来源它,把它放到init中。Vim代表neovim或'。Vimrc '表示vim
source $HOME/.config/nvim/modules/mySpecialScripts/myQuickTerminal.vim
这将在您保存和资源它之前预加载,您可以使用源$MYVIMRC快速重新加载初始化。vim文件。
步骤3 -
我映射,你可以看到在脚本n打开一个终端在一个新的窗格,我是(空格键),一旦我点击(空格+ n)终端将被触发,我将享受写我的代码,而终端是打开的。
按“Esc”键退出终端插入模式。 现在,要切换到代码编辑器窗格,使用CTRL+w w。一旦打开了两个以上的面板,这个快捷键就会变得很烦人,所以我也添加了以下快捷键。 我也映射了这些,以便在打开的窗格中快速跳转,使用这些
" Better window navigation
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
可选
如果你想让你的终端用键退出当前缓冲区。你可以使用
tnoremap <Esc> <C-\><C-n>:q!<CR>
但是因为我想在我使用的几个缓冲区之间切换而不关闭我使用的终端:
tnoremap <Leader><Esc> <C-\><C-n>:q!<CR>
最终结果
参考:
https://betterprogramming.pub/setting-up-neovim-for-web-development-in-2020-d800de3efacd
其他回答
如果你对快速回答感兴趣,这里是::vert术语。它会垂直分割你的屏幕并打开终端。
我所知道的唯一方法是使用vim-shell,一个第三方补丁。
我不确定你到底想要实现什么(我从未使用过Emacs),但你可以在Vim中通过键入以下命令来运行命令:
:! somecommand [ENTER]
如果你想输入几个命令,或者在shell中玩一会儿,你总是可以使用:
:! bash (or your favourite shell) [ENTER]
一旦命令或shell终止,您将得到按Enter返回编辑器窗口的选项
Vim是有意轻量级的,并且缺乏执行非编辑类型事情的能力,就像在Vim窗格/选项卡中运行一个完整的shell一样,但正如上面提到的,有第三方插件,如Vim -shell,允许您执行这类事情。
通常情况下,如果我想在Vim和shell (Bash)之间切换,我只需按CTRL+Z暂停Vim进程,在我的shell中玩,然后当我想返回Vim时键入'fg' -保持我的编辑器和shell良好且独立。
如果在您的Vim版本中启用,则可以使用:term命令启动终端。
终端窗口支持被添加到Vim 8。这是一个可选特性,可以在使用+终端特性编译Vim时启用。如果你的Vim版本有终端支持,:echo has('terminal')将输出"1"。
输入:term将使您进入终端作业模式,在此模式下您可以按预期使用终端。
在Terminal-Job模式下,按Ctrl- w N或Ctrl-\ Ctrl-N将模式切换到Terminal-Normal,这允许光标移动,命令运行类似于Vim的Normal模式。若要切换回终端作业模式,请按“i”。
其他回答提到了Neovim中类似的功能。
Vim 8.1的主要新特性是支持在Vim窗口中运行终端。
:term将在Vim内部的另一个窗口中打开终端。