Vim 实用技巧必知必会
吴咏炜
前 Intel 资深软件架构师
21753 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
Vim 实用技巧必知必会
15
15
1.0x
00:00/00:00
登录|注册

16|终端和 GDB 支持:不离开 Vim 完成开发任务

终端的用途
使用提示
使用 :terminal 命令
内容小结
终端的用途
使用提示
基本用法
课后练习
GDB 支持
终端窗口支持
Vim 8 新功能:终端支持和 GDB 调试

该思维导图由 AI 生成,仅供参考

你好,我是吴咏炜。
早在 Vim 和 Emacs 的“圣战”时期,Emacs 有个功能可是 Vim 用户一直暗暗垂涎的,那就是可以集成 GDB 来调试程序。Emacs 之所以能够实现这个功能,是因为它可以模拟一个终端环境,像终端一样跟一个程序进行输入输出的交互。这样一来,我们不离开编辑器,也能调试程序,既可以方便地看到目前执行在源代码的第几行,也可以直接在编辑器里跟执行中的程序进行交互。
很多主流的开发环境都支持类似的功能。但 Vim 一直不支持这样的功能,直到 Vim 8。虽然到得有点晚,但 Vim 也算是厚积薄发,利用 libvterm 给出了完整的终端支持。今天,我们就拿终端窗口支持和 GDB 支持,作为我们最后的技术话题来介绍了。

终端窗口支持

基本用法

使用 :terminal(缩写 :term)命令,我们可以在 Vim 的窗口中运行终端模拟器。基本的用法就是下面两种:
使用 :terminal,后面不跟其他命令,分割一个新窗口,并使用默认的 shell 程序进行终端模拟;shell 退出后窗口自动关闭(可用使用命令参数 ++noclose 改变这一行为)。
使用 :terminal 命令 的方式,分割一个新窗口,在其中运行指定的命令并进行终端模拟;命令执行完成退出后窗口不自动关闭,保留执行中显示的信息(可用使用命令参数 ++close 改变这一行为)。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Vim 8终于支持了终端窗口和GDB调试功能,这意味着用户可以在Vim中进行程序调试而无需离开编辑器。通过`:terminal`命令,用户可以在Vim窗口中运行终端模拟器,并进行程序调试。终端模拟器支持多种命令,包括横向和纵向分割窗口,以及在新标签页中打开终端窗口。此外,用户还可以在终端模拟器中进行程序输入和输出,并支持色彩和其他文本控制。文章还介绍了在终端作业模式下的特殊命令,以及一些使用提示和技巧。总的来说,这篇文章介绍了Vim 8的终端窗口支持和GDB调试功能,为读者提供了快速了解这些新功能的概览。Vim 8的终端支持功能为用户提供了便利,可以在Vim中打开终端窗口进行程序调试,同时还介绍了GDB调试支持的使用方法,为读者提供了全面的使用指南。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Vim 实用技巧必知必会》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 前端西瓜哥
    老师,怎么在vimrc设置默认shell啊,Windows 下我每次打开默认打开的是 cmd,我想用的是 powershell,每次打开都要敲 :term powershell,命令有点长(当然我也想到一个解决方案是加个快捷方式 \t

    作者回复: :help 'shell' :set shell=powershell.exe

    2020-09-16
    1
  • 我来也
    学习了. 有时间了再好好研究研究. 这个功能对我来说还比较陌生. 之前是用tmux来实现终端的一部分功能. 在使用了`vim-dispatch`插件后,才知道这个功能这么方便. 可以单独开一个小终端去执行make中的编译操作, 主窗口还是继续做自己的事情. 这样编译结束或出错了,立马就知道了,也不用傻等. ---- 老师在写专栏的过程中没少恶补周边知识吧,哈哈。 平常自己折腾的话,不需要掌握的特别全,能用和好用就够了. 但是写专栏时,就需要知识比较全,且是准确无误的,有时还需要知道来龙去脉. ---- 不知不觉专栏的正文部分都结束了,不舍。������

    作者回复: 老师在写专栏的过程中没少恶补周边知识吧,哈哈。 ------------------ 回头看结束语,你就知道了。:-)

    2020-09-09
    1
  • 谁家内存泄露了
    请问老师,在vim内置的终端里,如果我想输入上一条命令,怎么实现呢?普通终端应该使用方向键↑就好了。

    作者回复: 我在 Vim 的终端里也还是可以这样啊…… 是不是漏看这段,映射了 Esc 了? “在 Unix 终端的情况下,很多功能键本身包含 <Esc>,因而会误触发这个键映射。对于这种情况,我们使用下面的键映射,用连按两下 <Esc> 退出终端作业模式效果更好” 甚至这个我现在都有偶尔误触发的情况,所以我现在索性改成映射 <C-Q> 了。

    2023-03-12归属地:北京
    2
  • 唐龙
    首先体验了一下`:tab term`的无限递归,我一直都挺喜欢用多个标签页的。 后面试了一下gdb,突然发现我几乎没用过gdb,就记得start run b c s这么几个命令,但是也确实体验到了在中间那一栏输出。 虽然还不太熟练,但是我设想了一下,以后再写项目的时候,切换文件直接用`:e`,编辑多个文件用多个标签页,除了gdb调试的时候基本不会主动使用多窗口,但是gdb调试用多窗口还是挺舒服的。 当然也可以写一些快捷键简化上述操作,比如:`nnoremap <leader>o :tabnew `。 整篇课程里80%+的插件自己都尝试了一下,`frazrepo/vim-rainbow`在我看来就特别香。 感觉自己还可以进一步的做些定制,主要是快捷键,到时候再假装vim是IDE,奈斯。

    作者回复: 不错不错,多多练习就对了。

    2020-09-09
  • doge
    学到了,单文件调试效果确实不错。不过大型项目的调试感觉不是特别好用了。

    作者回复: 比以前有进步。:-)

    2020-09-09
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部