直接在 vim 中调用“伪终端”来编译 rust 代码。

vim 自带的终端

neovim 自带的终端: https://neovim.io/doc/user/nvim_terminal_emulator.html
在 vim8 打开的文本中执行 :terminal 会在文本栏上方新开一个终端栏:

  • 使用 C-W C-W(按两次 Ctrl+W 键,vim 里面的习惯用 c-w 或者 C-W 来表示,一般组合键不区分字母的大小写)可以在两个窗口之间切换
  • 终端栏也有 normal / insert 两种模式,在终端栏按:
    • <c-\><c-N>Ctrl+\Ctrl+N 键)进入 insert 模式,能够像文本一样控制光标实现复制和翻页,但是无法写入/修改
    • aiAI 也可以)来进入 normal 模式,像终端一样进行输入/输出
  • 终端栏输入命令 exit 来关闭退出终端,如果停留在 vim 文本的界面,则输入 :q 退出。

image.png
当然,vim 可以针对这个终端进行快捷键和样式等设置:vimhelp: terminal-use
貌似在 neovim 输入 :terminal 是打开一个缓冲区终端页面。参考前面部分 关于 buffer (缓冲区)的一些操作 ;使用 exit 来退出终端。

vim-terminal-help

官网:https://github.com/skywind3000/vim-terminal-help
这个国人开发的小工具能让反常的 vim 终端更美观一些:

  • 默认让终端处在底部,当然也可以用 Alt+Shift+hjkl 等快捷键来改变终端位置
  • C-q 用于在终端栏进入 insert 模式
  • M-=Alt+= )唤起/隐藏终端
  • M-S-pAlt+Shift+p )切换窗口
  • g:terminal_height 在 vimrc 文件里设置终端栏的行数(高度),默认为 10,注意终端的上下一行会有窗口的信息,这不包括在高度里面。例如设置成5行: let g:terminal_height=5
  • g:terminal_pos 在 vimrc 文件里设置终端的默认位置
  • ……

几个需要注意的问题:

  1. vim 分栏后切换窗口的快捷键貌似也改成了 ~~`Alt+Shift+p~~`

image.png
这个作者(skywind3000)也写了 asyncrun.vim 插件(比这里介绍的小插件更多 star),另一种在 vim 中编译项目的方式,具体参看文档。