首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在编译以emacs结束后自动跳转到*编译*缓冲区?

在编译以emacs结束后自动跳转到编译缓冲区,可以通过设置emacs的编译选项来实现。

首先,需要在emacs配置文件(通常是~/.emacs或~/.emacs.d/init.el)中添加以下代码:

代码语言:txt
复制
(setq compilation-finish-functions
      (lambda (buf str)
        (if (string-match "compilation" (buffer-name buf))
            ;; 如果当前buffer的名称中包含"compilation",则跳转到该buffer
            (switch-to-buffer-other-window buf))))

上述代码中,我们使用了compilation-finish-functions变量来指定一个函数,该函数在编译完成后被调用。在这个函数中,我们首先判断当前buffer的名称是否包含"compilation",如果是,则使用switch-to-buffer-other-window函数跳转到该buffer。

保存配置文件后,重新启动emacs或者重新加载配置文件,当编译完成后,emacs会自动跳转到编译缓冲区。

这种方法适用于大多数编译命令,包括make、gcc等。如果你使用的是特定的编译命令,可能需要根据实际情况进行适当的修改。

希望以上信息对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vim常用快捷键

l 跳转到右边的窗口 ctrl-w t 跳转到最顶上的窗口 ctrl-w b 跳转到最底下的窗口 八、多标签编辑 :tabedit file 新标签中打开文件file :tab split file...tab 5gt 跳到第五个tab 九、执行shell命令 命令模式下输入":sh",可以运行相当于字符模式下,到输入结束想回到VIM编辑器中用exit,ctrl+D返回VIM编辑器 可以"!...command",运行结束自动回到VIM编辑器中 用“Ctrl+Z“回到shell,用fg返回编辑 :!...make -> 直接在当前目录下运行make指令 十、VIM启动项 -o[n] 水平分屏的方式打开多个文件 -O[n] 垂直分屏的方式打开多个文件 十一、自动排版 粘贴了一些代码之后,vim变得比较乱...,只要执行gg=G就能搞定 十二、如何在vim中编译程序 vim中可以完成make,而且可以将编译的结果也显示vim里,先执行 :copen 命令,将结果输出的窗口打开,然后执行 :make 编译的结果就显示

1.8K00

VIM常用快捷键(转载)

l 跳转到右边的窗口 ctrl-w t 跳转到最顶上的窗口 ctrl-w b 跳转到最底下的窗口 多标签编辑 :tabedit file 新标签中打开文件file :tab split file 新标签中打开文件...tab 执行shell命令 命令模式下输入":sh",可以运行相当于字符模式下,到输入结束想回到VIM编辑器中用exit,ctrl+D返回VIM编辑器 可以"!...command",运行结束自动回到VIM编辑器中 用“Ctrl+Z“回到shell,用fg返回编辑 :!...make -> 直接在当前目录下运行make指令 VIM启动项 -o[n] 水平分屏的方式打开多个文件 -O[n] 垂直分屏的方式打开多个文件 自动排版 粘贴了一些代码之后,vim变得比较乱,只要执行...gg=G就能搞定 如何在vim中编译程序 vim中可以完成make,而且可以将编译的结果也显示vim里,先执行 :copen 命令,将结果输出的窗口打开,然后执行 :make 编译的结果就显示

1.7K20
  • 超全的Vim常用快捷键,建议收藏备用!

    l 跳转到右边的窗口 ctrl-w t 跳转到最顶上的窗口 ctrl-w b 跳转到最底下的窗口 八、多标签编辑 :tabedit file 新标签中打开文件file :tab split file...tab 5gt 跳到第五个tab 九、执行shell命令 命令模式下输入":sh",可以运行相当于字符模式下,到输入结束想回到VIM编辑器中用exit,ctrl+D返回VIM编辑器 可以"!...command",运行结束自动回到VIM编辑器中 用“Ctrl+Z“回到shell,用fg返回编辑 :!...make -> 直接在当前目录下运行make指令 十、VIM启动项 -o[n] 水平分屏的方式打开多个文件 -O[n] 垂直分屏的方式打开多个文件 十一、自动排版 粘贴了一些代码之后,vim变得比较乱...,只要执行gg=G就能搞定 十二、如何在vim中编译程序 vim中可以完成make,而且可以将编译的结果也显示vim里,先执行 :copen 命令,将结果输出的窗口打开,然后执行 :make 编译的结果就显示

    19.6K32

    用了VS Code、IDEA等十几款编辑器,我总结出优秀编辑器的特质

    你可以将编辑器划分为几个缓冲区缓冲区间移动、跳转到段落开头、搜索和替换、将动作注册为宏并重播它们,等等。 所有这些甚至都不用挪动手腕。...它有几种模式,具体取决于你要执行的移动类型: 按行:此模式允许你至当前(或所有打开的)缓冲区中的任何行。 按单词:此模式允许你跳转到当前(或所有打开的)缓冲区中的任何“单词”。...按字符:如果单词模式无法跳转到特殊的运算符或字符(因为无法识别为单词),则可以使用此模式跳转到当前缓冲区(或所有打开的缓冲区)中的任何字符。...我的当前缓冲区中键入SPC l会发生: 键入任何高亮显示的字符将使我的光标至该字符。对于单词也是如此,命令是SPC w: 对于字符模式,输入 SPC c 我必须按另一个字符(我想跳到的字符)。...mzlogin/vim-markdown-toc 一个非常酷的软件包,提供了一种 Markdown 缓冲区中创建目录的方法,并让 neovim 在编辑标头时自动更新 section。

    1.8K10

    Emacs 29快到了!我们能期待什么

    您不再需要安装包,只需注册一个 LSP 服务器,自动完成、文档、错误检测和其他功能将立即可用!...我的例子中,当缓冲区的内容更新时,我有时会看到一些幻影文本(尽管我仍然需要纯 GTK,因为我 Xorg 和 Wayland 之间交替)。...如果您现在使用 编译 Emacs --with-native-compilation=aot,Emacs 的本机 EmacsLisp 文件将与 Emacs 本身一起本机编译!...更好地处理.pdmp文件 Emacs 有几个版本能够将其状态转储到pdmp文件中加快启动时间。...Emacs 的 WebKit 小部件浏览器中的 WebKit 检查器 Emacs 中使用 WebKit 小部件浏览器时,您现在可以访问 WebKit 检查器,前提是您使用的 Emacs 版本是用它编译

    2.5K20

    【LInux】基础开发工具

    「#yw」:复制#个字到缓冲区 「yy」:复制光标所在行到缓冲区。 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 「p」:将缓冲区内的字符贴到光标所在位置。...插入模式 进入插入模式的方式有三种: i:直接进入插入模式 a进入插入模式之后向后一格 o进入插入模式向下一行。...跳到文件中的某一行: 「#」:「#」号表示一个数字,冒号输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行。...如何判断我们当期在对哪个文件进行编译呢?光标所在处就是我们编译的文件 如何切换编译的文件呢?shift+ww vim配置 vim中,配置文件通常是.vimrc文件,位于用户的主目录中。...保存 .vimrc 文件,重新启动 vim 或执行 :source ~/.vimrc 应用更改。

    10810

    文件IO (一).非缓冲IO实现mycopy

    当前的计算系统除了包括对数据有 加工和处理 以外还有 搬运 这个 搬运 代表着 输入和输出 ,及 input/output ,简称 I/O UNIX/Linux 的缔造者们将数据的 来源和目标 都抽象为 文件,所以...read和write都调用内核中的一个系统调用 Note: 之所以是不带缓冲的,也是相对于标准I/O而言,标准I/O库使用了缓冲技术,而这正是产生很多问题,引起许多混淆的部分,文件I/O进行了有效的规避,缓冲区由开发者自己来定义和管理...printf("write error on:%s\n",fileB); break; } } if(0 == rres) //如果返回结果是0,就代表读取完毕正常结束...fileA); } close(fr); close(fw); //回收文件描述符,刷新到硬盘 return res; } Note: 文件打开数是一种系统资源,是有上限的,虽然程序退出,...系统会帮忙清理,但在程序设计中,打开文件,使用完后进行手动关闭是一种很好的习惯,这样可以有效避免缓存未刷新的潜在隐患,也可以更加节约资源 编译执行 emacs@ubuntu:~/c$ alias gtc

    49630

    标准IO (一).fopen

    增强系统的健壮性和可移植性 不仅是UNIX,很多其它操作系统都实现了标准I/O库,所以这个库由ISO C标准说明 (# include 中包含了标准I/O库) 标准I/O库处理很多细节,如缓冲区分配...,优化的块长度执行I/O等操作,这些工作帮助开发者将注意力从这些琐碎繁杂的事务中抽出,投放到更有价值的业务逻辑中 Tip: 标准I/O库是1975年左右编写的,35年来几乎没有被修改过,后人发现里面存在很多不足...不断打开文件xx,直到打开不了(fopen函数返回空指针),过程中使用i进行计数 printf("%d\n",i); //将计数结果进行打印 return 0; } fopen 的返回值是,文件顺利打开,...,若打开文件失败则返回NULL,并把错误代码存在errno中 以上的代码中,为NULL会导致while判断为条件不成立,从而跳出循环,停止计数 如果文件指针不断被打开而不释放(fclose()) , 程序结束前就会逐渐耗尽系统资源...Note: 文件打开数是一种系统资源,是有上限的,虽然程序退出,系统会帮忙清理,但在程序设计中,打开文件,使用完后进行手动关闭是一种很好的习惯,这样可以有效避免缓存未刷新的潜在隐患 编译执行 emacs

    88530

    Emacs Verilog mode 简单使用指南

    安装完成,只需Verilog文件中打开,Emacs自动识别并激活Verilog mode。 核心特性 语法高亮:自动识别Verilog的关键字、注释、字符串等,不同颜色显示,增强代码可读性。...自动缩进:根据Verilog的语法规则自动调整代码缩进,保持代码整洁。 代码补全:输入关键词的一部分,可通过快捷键自动完成剩余部分,提高编码效率。...代码自动补全不生效 问题描述:新安装Verilog mode,发现代码补全功能未启用。 解决策略:确保Emacs的ac-source-verilog被正确配置。...t) ; if语句自动缩进 实用代码示例 快速创建Verilog模块 Verilog mode下,你可以快速插入一个模块模板。...Verilog mode支持标签(Tags)功能,通过运行 M-x retag-table 更新标签数据库,你可以使用 M-. (跳转到定义)和 M-, (返回上次位置)定义与引用之间快速切换。

    30510

    软件逆向基础

    由于实际分析中,很多场合不方便运行目标(例如病毒程序,设备不兼容,软件的单独某一模块)。那么这个时候静态分析技术就该上场了! 反编译 汇编语言还原成高级语言。...栈的原理 从计算机科学的角度来看,栈是一种数据结构,它的存储规则是先进出。栈结构计算机中是一片连续的存储空间,且是向下生长的,即由大向小排列。系统中通过两个寄存器来表示一个堆栈。...下面用一个实际的例子来介绍函数的调用: 编译方式的识别 VC VC的编译方式有Debug和Release方式。...;先执行各类影响标志位的指令,如cmp ;其后是各种跳转指令 jxx xxxx if…else语句 先进行比较指令,然后判断条件跳转到if的分支代码处,执行完成采用无条件跳转指令( jmp)跳转到else...分支的结束代码处。

    1.3K30

    缓冲区溢出 攻击 「建议收藏」

    下面的指令描述了如何设置 zsh 程序: 这里我才知道Tab可以补全qaq困惑了好久 GCC编译器有一种栈保护机制来阻止缓冲区溢出,所以我们在编译代码时需要用 –fno-stack-protector...而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到...按照前面刚刚讲过的系统调用规则,Linux下生成一个shell并结束退出需要以下步骤: 在内存中存放一个’\0’结束的字符串”/bin/sh”; 将字符串”/bin/sh”的地址保存在内存中的某个机器字中...如何组织buffer的内容,使溢出能使程序执行注入的shellcode。这需要猜测buffer在内存中的起始地址,从而确定溢出返回地址的具体值。...如果我们函数的返回地址填入一个地址,该地址指向的内存保存了一条特殊的指令jmp esp——跳板。那么函数返回,会执行该指令并跳转到esp所在的位置——即data的位置。

    1.2K30

    编译器构造

    (3)文件结束:文件结束返回-1作为符号,此符号是无意义的记号,但是标识编译结束条件。 (4)意外字符:文件中出现预期以外的字符时当作异常处理。 (5)有限自动机异常终止。...长度被压入需要将其内存地址写入到结果临时变量系统栈的内存中去,用来访问该结果。因此压入oprand1的时候需要先读取长度,和oprand1的长度相加再写回,最后压入oprand1的内容。...若在循环体内遇到break语句,编译器根据循环ID生成跳转到循环结束标签的指令,若遇到continue语句,编译器会生成跳转到循环开始标签的指令。...然后对if的复合语句翻译,恢复栈指针,生成跳转到else结束位置的指令。...后边就准备介绍如何自己构造一个汇编器,将这些汇编代码转换为二进制文件,使用静态链接器链接为可执行文件,执行一下便能知道结果是否正确了!

    2.1K80

    我的 IDE 太重了,所以迁到了 Emacs

    几年来,我已经成功地将 Emacs 配置为最基本的现代快捷键,这些快捷键 90 年代的大多数其他应用程序中都能使用(比如 Cmd+S 保存,Ctrl+Tab 切换缓冲区等等)。...而且对我喜欢使用的所有语言(Java、Go、C、Rust、Dart、Groovy、Common Lisp 甚至 Zig)都有很好的支持,包括自动完成、内联文档、代码导航(转到定义、查找实现、返回 / 前进到上一个...例如, IntelliJ 中,配置想使用的 Java 版本是很容易的,不仅包括编译器,还包括你想坚持使用的 Java 标准 API 版本(因为现在 Java 发展很快,这一点很重要),如果你要使用的特性在你使用的版本上不可用...比如当你检查一个逻辑上不可能的条件时,它会发现那些令人震惊的逻辑错误……还有一些平凡的功能,我还没有费心去发现如何实现,比如自动修复警告(我真的很怀念 IntelliJ 的 Alt+Enter)和为诸如...早上使用 IntelliJ 的情况,你可以看到充满电,电量被“凶猛吞噬”,我晚上回到 Emacs 之前,电量就恢复了正常的使用模式。 并不是说我需要这个才知道 IntelliJ 真的非常耗电!

    1.1K10

    跟我一起学习VIM - The Life Changing Editor

    所以分享结束之后,将这篇简短教程整理一下作为我2014年的第一篇Blog。...如何学习VIM 一秒钟变记事本 很多时候大家希望能够最快的速度编辑文档,而不愿意花大量的时间在学习这一工具上,比如偶尔要去Linux改变一下配置。...总的来说Tagbar对面向对象的支持更好,它会自动根据文件修改的时间来重新排列Symbol的列表。它们不同的纬度展示了当前文件的Symbol。...语法 Syntastic - integrated syntax checking 这是一个非常有用的插件,它能够实时的进行语法和编码风格的检查,利用它几乎可以做到编码完成编译错误...更强大的它支持近百种编程语言,像是一个集大成的实时编译器。出现错误之后,可以非常方便的跳转到出错处。 强烈推荐 。

    1.2K20

    【Linux】Linux开发工具-vim 编译器-gccg++ 调试器-gdb git操作 项目自动化构建工具-makeMakefile

    预处理指令是以#号开头的代码行 实例: gcc –E hello.c –o hello.i 选项“-E”,该选项的作用是让 gcc 预处理结束停止编译过程 选项“-o”是指目标文件,“.i”文件为已经过预处理的...C原始程序 3.2.2 编译(生成汇编) 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,确定代码的实际要做的工作,检查无误,gcc 把代码翻译成汇编语言 用户可以使用“-S”选项来进行查看...,哪些文件需要编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 makefile带来的好处就是——“自动编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率...可见,makefile都成为了一种工程方面的编译方法 make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建 6.2 实例代码 我们先创建一个test.c文件,并在里面编写一些代码...6.4 原理 make是如何工作的,默认的方式下,也就是我们只输入make命令。

    8310

    史上最轻量的 IDE……

    几年来,我已经成功地将 Emacs 配置为最基本的现代快捷键,这些快捷键 90 年代的大多数其他应用程序中都能使用(比如 Cmd+S 保存,Ctrl+Tab 切换缓冲区等等)。...而且对我喜欢使用的所有语言(Java、Go、C、Rust、Dart、Groovy、Common Lisp 甚至 Zig)都有很好的支持,包括自动完成、内联文档、代码导航(转到定义、查找实现、返回 / 前进到上一个...例如, IntelliJ 中,配置想使用的 Java 版本是很容易的,不仅包括编译器,还包括你想坚持使用的 Java 标准 API 版本(因为现在 Java 发展很快,这一点很重要),如果你要使用的特性在你使用的版本上不可用...比如当你检查一个逻辑上不可能的条件时,它会发现那些令人震惊的逻辑错误……还有一些平凡的功能,我还没有费心去发现如何实现,比如自动修复警告(我真的很怀念 IntelliJ 的 Alt+Enter)和为诸如...早上使用 IntelliJ 的情况,你可以看到充满电,电量被“凶猛吞噬”,我晚上回到 Emacs 之前,电量就恢复了正常的使用模式。 并不是说我需要这个才知道 IntelliJ 真的非常耗电!

    35610

    史上最轻量的 IDE……

    几年来,我已经成功地将 Emacs 配置为最基本的现代快捷键,这些快捷键 90 年代的大多数其他应用程序中都能使用(比如 Cmd+S 保存,Ctrl+Tab 切换缓冲区等等)。...而且对我喜欢使用的所有语言(Java、Go、C、Rust、Dart、Groovy、Common Lisp 甚至 Zig)都有很好的支持,包括自动完成、内联文档、代码导航(转到定义、查找实现、返回 / 前进到上一个...例如, IntelliJ 中,配置想使用的 Java 版本是很容易的,不仅包括编译器,还包括你想坚持使用的 Java 标准 API 版本(因为现在 Java 发展很快,这一点很重要),如果你要使用的特性在你使用的版本上不可用...比如当你检查一个逻辑上不可能的条件时,它会发现那些令人震惊的逻辑错误……还有一些平凡的功能,我还没有费心去发现如何实现,比如自动修复警告(我真的很怀念 IntelliJ 的 Alt+Enter)和为诸如...早上使用 IntelliJ 的情况,你可以看到充满电,电量被“凶猛吞噬”,我晚上回到 Emacs 之前,电量就恢复了正常的使用模式。 并不是说我需要这个才知道 IntelliJ 真的非常耗电!

    28410
    领券