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

如何防止emacs烦人的习惯将当前单词添加到任何命令缓冲区?

如何防止 Emacs 烦人的习惯将当前单词添加到任何命令缓冲区?

Emacs 是一个具有高度可定制性的文本编辑器,具有许多强大的功能,但也容易养成一些不太好的习惯。其中一个常见的问题就是将当前单词添加到任何命令缓冲区。这可能会导致一些不必要的麻烦,例如保存文件时出现错误,或者无法正常执行命令。

要防止 Emacs 将当前单词添加到任何命令缓冲区,您可以使用以下两种方法之一:

方法一:使用宏来过滤 Emacs 的输入

使用宏来过滤 Emacs 的输入是防止 Emacs 添加当前单词到命令缓冲区的最简单方法之一。您可以使用以下宏来阻止 Emacs 添加当前单词:

代码语言:txt
复制
(defmacro prevent-add-to-buffer ()
  "Prevent the current word from being added to any command buffer."
  `(let ((inhibit-modification-hooks t))
     (when (and (not (local-variable-p 'major-mode))
               (or (not (boundp 'syntax-after-jump))
                   (syntax-after-jump)))
       (let ((inhibit-modification-hooks t))
         (add-to-list 'command-buffer-alist (cons (point-marker) 'no-local-modification))))))

然后,在您使用 M-x 运行任何命令之前,您可以使用以下命令运行该宏:

代码语言:txt
复制
(progn
  (prevent-add-to-buffer)
  (execute-command-here))

这将防止任何命令将当前单词添加到命令缓冲区中。

方法二:使用 Emacs 的宏,将当前单词添加到空白列表中

如果您不想使用宏来过滤 Emacs 的输入,您可以使用 Emacs 的宏,将当前单词添加到空白列表中。这可以通过以下宏来实现:

代码语言:txt
复制
(defmacro add-to-blank-list ()
  "Add the current word to a blank list."
  `(let ((list ()))
     (when (and (not (local-variable-p 'major-mode))
               (or (not (boundp 'syntax-after-jump))
                   (syntax-after-jump)))
       (push (point-marker) list))))

然后,在您使用 M-x 运行任何命令之前,您可以使用以下命令运行该宏:

代码语言:txt
复制
(progn
  (add-to-blank-list)
  (execute-command-here))

这将向空白列表中添加当前单词,因此任何命令都不会将当前单词添加到命令缓冲区中。

无论使用哪种方法,都可以防止 Emacs 将当前单词添加到任何命令缓冲区中,从而避免一些不必要的麻烦。

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

相关·内容

Metal_入门01_为什么要学习它

b.主要技能 1.3D图形渲染 2.并行运算 c.网友对Metal理解 1.当我们使用OpenGL ES 渲染一个纹理时候,需要将数据从cpu 拷贝一份到gpu 中,以防止gpu 和cpu...在使用OpenGL时候,习惯上我们会挨个儿设置GPU状态,然后每次进行绘制调用之前必须要校验一道GPU状态。...,编码和排队渲染和计算命令被提交给GPU执行 b.命令队列由命令缓冲队列和组织这些命令缓冲执行顺序命令队列组成,命令缓冲区包含用于在特定设备上执行编码命令,命令编码器绘制、计算、和blitting...命令添加到命令缓冲区命令缓冲区最终提交到设备上执行 c .MTLCommandQueue 协议了一个命令队列接口,主要提供了方法创建命令缓冲对象,MTLCommandBuffer协议为命令缓冲对象定义了一些方法...许多命令编码器对象方法命令追加到命令缓冲区上。当一个命令编码器是活动,它有它命令缓冲区附加命令独占权。一旦你完成编码命令,调用endEncoding方法。

98220

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

打字准确和舒适附加好处就是打字很快(我打字速度为每分钟 120 到 130 个单词)。 不过,我认为编程时,速度并不重要,所以这里最重要部分是舒适度:无论输入速度如何,手腕都不会动。...如果我光标位于一个单词上,并且我想移至与我光标在同一行上非常接近另一个单词开头,那么如果相隔三个单词,我只输入www(或者 3w)。...它有几种模式,具体取决于你要执行移动类型: 按行:此模式允许你跳至当前(或所有打开)缓冲区中任何行。 按单词:此模式允许你跳转到当前(或所有打开)缓冲区中任何单词”。...按字符:如果单词模式无法跳转到特殊运算符或字符(因为无法识别为单词),则可以使用此模式跳转到当前缓冲区(或所有打开缓冲区)中任何字符。...在我的当前缓冲区中键入SPC l会发生: 键入任何高亮显示字符将使我光标跳至该字符。对于单词也是如此,命令是SPC w: 对于字符模式,输入 SPC c 后我必须按另一个字符(我想跳到字符)。

1.8K10
  • Windows 开发好痛苦

    工作时,我只需要使用键盘专心致志地工作,因为我注意力都集中在当前输入上。另外,我已经习惯Emacs 设置,而且特别依赖于 Vim 模拟和各种稀奇古怪小设置。...然后,我想使用 :vsplit 垂直打开另一个文件,于是我输入了 :vsplit bar.txt,结果当前窗口却被垂直分割了,而不是在垂直分割窗口中打开我需要文件。...我不得不重新训练十多年肌肉记忆。 whichwrap Vim 有一个叫做 whichwrap 功能,当光标移动到行尾或行首时,可以使用方向键光标移动到下一行行首,或上一行行尾。...要想改正这个问题,只能在 VSCode settings.json 中加入下面这一行: { "vim.whichwrap": "h,l,,[,]" } 很烦人,但至少可以正常使用。...这并不是最好选择,但从长期支持角度来看,也是一种方案。网上建议我下载新版 OpenSSH。 我下载了 zip 包并解压,然后发现了许多二进制文件,而且没有任何说明该如何安装。

    1.4K50

    linux之文本编辑器

    L (常用) 光标移到当前屏幕最下行行首。L表示Lowest。另外: xL光标移到屏幕倒数第x行。例如,3L,光标移到屏幕倒数第3行。...xH 光标移到当前屏幕第x行。例如,2H就是光标移到当前屏幕第2 行。注意这个当前屏幕第2行并不一定是本文件第二行。 和4.4.2节重复J,删除!...按“:”键,在屏幕最后一行出现“:”提示符时候,输入 “set nu” 可以给文件中每一行加上行号,方便阅读与编辑。注意此行号只是标注,而不是实际添加到文件里数字。...y$ 从当前位置复制到行尾。 p(常用) 如果要粘贴到其他地方 p 就可以了。 xp 当前字符与后一个字符交换位置。 ddp 光标所在行上下两行交换位置。 J 光标所在上下两行合并。...而开启了这个设置之后,光标就可以停留在文件任何地方做编辑了。可以根据自己习惯使用。不过请注意,有的时候这个选项会导致因分不清文件中是tab还是空格而引起格式错误。

    2.2K20

    10 个让你进入 Emacs 世界技巧

    我相信,问题在于人们其实并不想“学习” Emacs,而是他们想习惯 Emacs 传统。他们想了解那些神秘键盘快捷键和不熟悉术语。他们想按照他们认为“使用目的”来使用 Emacs。...例如,如果你不知道如何Emacs 中只用键盘快捷键复制一个单词,编辑菜单复制、剪切和粘贴选择提供了最轻松路径。没有理由因为选择了 Emacs 而惩罚自己。...例如,你可以用 M-d(Alt+d Emacs 行话)剪切一整个单词,或者用C-k(Ctrl+K)剪切一整行,或者用 M-m(Alt+M)剪切一个高亮区域。...人们习惯Emacs 键盘快捷键,以至于他们习惯性地尝试在其他所有的应用程序中使用这些快捷键,他们应用程序构建到 Emacs 中,所以他们永远不需要离开。...如果你想让 Emacs 在你计算生活中扮演重要角色,最终关键是拥抱未知,开始使用 Emacs。磕磕绊绊地,直到你发现如何让它为你工作,然后安下心来,享受 40 年舒适生活。

    80820

    OpenGL ES编程指南(四)

    由于此方法会预先计算照明计算输入,因此大量灯光添加到场景增量性能成本要小得多。延迟着色算法需要多个渲染目标支持,如下图所示,以实现合理性能。否则,渲染到多个纹理需要为每个纹理单独绘制通过。...图6-5显示了应用程序如何配置OpenGL ES图形管道来实现粒子系统动画。 由于OpenGL ES每个粒子及其状态表示为顶点,因此GPU顶点着色器阶段可以同时运行多个粒子模拟。...通常,OpenGL ES会一直等待,直到应用程序在命令发送到硬件之前许多命令排队为止 - 批处理通常更高效。但是,一些OpenGL ES函数必须立即刷新命令缓冲区。...这些情况需要OpenGL ES命令缓冲区提交给硬件执行。 函数glFlush命令缓冲区发送到图形硬件。它会阻塞直到命令提交给硬件,但不会等待命令完成执行。...OpenGL ES实现可自由数据转换为最适合图形硬件格式。这可以显着提高性能,特别是对于频繁更改数据。您应用程序还可以向OpenGL ES提供关于打算如何使用这些数据提示。

    1.9K20

    八种最常见Docker开发模式 别说你还不知道

    我试用Docker基础是保持在卷中持续状态,那样Docker容器本身可以随意重建,而不会丢失数据(除非我改动容器状态,而不更新Docker文件(Dockerfile)状态,而经常重建容器有助于改掉这个坏习惯...我为预计部署到任何地方大多数项目运行单独容器,至少它需要任何长时间运行进程,或者需要“标准”程序包集之外任何特定程序包时,是这样,因而我有好多容器,而程序包迅速变得越来越多。   ...下面是我当前“devbase”Docker文件: ? 这里没有什么需要特别说明――它安装了我往往喜欢随时可用一些特定工具。这些工具对大多数人来说恐怕不一样。选择什么样发行版很随意。...虽然有很多方法可以解决这个问题:只要确保你进行定期测试部署,结合上述模式,但我还是有一种个人很喜欢解决方案,因为它可以从根本上防止问题出现:   我有一个单独容器含有Emacs安装环境,还有我喜欢随时可用其他各种工具...但我喜欢先审查,比如弄清楚它们如何处理数据,然后我更有可能将自己修改后版本添加到自己“库”中。   比如说,我有一个BeanstalkdDocker文件: ?

    1.5K60

    Emacs 快捷键

    常用 Emacs 缓冲区和文件函数 绑定 函数名 描述 C-x C-s save-buffer 当前缓冲区保存到磁盘。...C-s Enter C-w 单词或者短语 word-search-forward 在整个缓冲区中前向搜索给定单词或者短语(不管它们之间如何分隔)。...C-r Enter C-w 单词或者短语 word-search-backward 在整个缓冲区中后向搜索给定单词或者短语(不管它们之间如何分隔)。...常见 Emacs 窗口操作命令 功能 绑定 描述 split-window-vertically C-x 2 从中间当前窗口划分为两半,垂直地堆叠新缓冲区。...2.使用 describe-variable 函数以得到变量值。当您运行这个函数时候,Emacs 打开一个新窗口,该窗口中包含该变量给定当前 值。如果有的话,还将提供关于该变量描述。

    2K20

    如何评价 GitHub 发布文本编辑器 Atom?

    确实是工作上用他们写过代码。而 VSC / Emacs 只是体验了一下基本使用方法,算不上真用。...用下来结论是:Atom 比 Vim 更 Vim,比 EmacsEmacs,同样,比 Sublime 更 Sublime。...向前/后移动一个单词单词头、尾。 快速更改当前单词,用/来快速搜索移动光标。 dd+p来快速移动代码块,取代shift+方向键半天。...而Vim/Atom-VimMode下,手指随时守护在home区(ASDF JKL;),所有微操都是围绕HOME区进行,不会移动到任何主键盘以外区域,更别说用鼠标、触摸板。 3....但是同时对不习惯VIM的人照样友好,或者对想使用VIM便利却又痛恨VIM这个软件简陋的人带来了福音。

    1.2K20

    【Linux】《how linux work》第二章 基本命令和目录层次结构(2)

    ,比如Pico或者其他各种图形界面编辑器,但如果你倾向于养成第一次使用习惯,就不要走这条路。...警告通常意味着有些问题,但程序尝试继续运行。要修复警告消息中指出问题,你可能需要在执行其他操作之前查找并终止一个进程(你将在2.16 列出和操作进程中学习如何列出和终止进程)。...要检查特定进程,请将其 PID 添加到 ps 命令参数列表中。例如,要检查当前 shell 进程,可以使用 ps u 是一个 shell 变量,它值为当前 shell PID。...you’ve accidentally suspended any processes on your current terminal, run the jobs command.提示要查看是否在当前终端上意外挂起了任何进程...,学习如何重新绘制终端窗口内容。

    14010

    IDEA Intellij小技巧和插件

    Ace Jump是一种从emacs上借鉴过来快速光标跳转方式,操作方式是:你用某个快捷键进入Ace Jump模式后,再按任一个键,当前屏幕中所有该字符都被打上一个字母标记,你只要按这个字母,光标就会跳转到这个字符上...感觉emacsIDEAs方式比较符合我思维习惯。  如果选择了AceJump插件,重启Intellij后即可使用,默认快捷键是Ctrl+;(分号)。但我习惯将它重设到Alt+K。...: 跳转到标签  AceJumpCopy : 光标当前位置到标签处文本复制到剪贴板  AceJumpCut  : 光标当前位置到标签处文本剪切到剪贴板  AceJumpWord : 调出书签时...yy10p 复制当前行10次  4. u 撤销修改 / Ctrl+R 重做修改  5. q加任何单个数字或字母,录制后续操作,记录到名为该数字或字母宏(Macro)中。...按(数字)ctrl+a,可将光标数字加上输入数字。  11.  ~ - 光标下字母改变大小写。 g~aw - 改变当前单词大小写。gU - 当前字母改大写。

    2.6K10

    30岁文转码:我用了三年时间从哲学家变成知名软件项目核心开发

    此外,Emacs 还是自文档化,意味着它能理解变量值何时发生变化、并在对应帮助缓冲区中通知用户。同理,Emacs 也能反映出各类函数新值与当前状况关联。...捕捉当前电子邮件内容并据此生成待办事项。任务还可包含一条返回原始消息链接,并能够在议程当中显示相应预定日期与截止日期。 在 Dired 中标记某些文件,再将它们添加到正在撰写电子邮件当中。...更重要是,这些功能既能单独起效、也可以协同工作。 因此,Emacs 得以各种界面连通起来,而且完全不会因为上下文切换而引起任何冲突。 Emacs 最后一项优势,就是易用性和规模化使用时便捷性。...自由软件不只是要替代专有代码,它更重要象征意义在于激励人们改变对于自主思想态度。社区和用户间关系不仅仅是予取予求,还应该引导用户习惯于争取自由、承担责任。...而推进这项事业第一步,就是打通软件壁垒、让一切程序都能协同工作。最终,用户学会如何掌管自己整台计算机,这样每个人才能真正成为自由软件新时代一分子。

    38030

    Emacs 折腾记

    在 ~/.emacs 文件里加上: (require 'evil) (evil-mode t) 这样就能在大部分地方(除了 eshell 等外)默认进入 Evil 模式使用 Vim 编辑习惯了...然后在如何运行当前 py 文件这件事上遇到些问题。在 Vim 中我一直是用 :!...添加 Edit with Emacs 到系统右键菜单。 将以下内容复制之后粘贴到一个 .reg 文件里,运行即可( exe 路径换为你自己)。...For use with Internet Explorer 平滑滚动 Emacs 默认滚动方式和 Vim 不一样,是光标移到屏幕上或者下边缘时突然跳动半屏,比较不符合我目光跟着光标走习惯,这个可以使用一个插件来解决...行时候再移动光标即自动滚屏,方便随时能看到当前编辑行上下文,可以根据自己使用习惯调整。

    1.9K10

    git 学习笔记

    此命令比较是工作目录中当前文件和暂存区域快照之间差异,也就是修改之后还没有暂存起来变化内容。...第二行告诉 Git 忽略所有以波浪符(~)结尾文件,许多文本编辑软件(比如 Emacs)都用这样文件名保存副本。此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成文档等等。...要养成一开始就设置好 .gitignore 文件习惯,以免将来误提交这类无用文件。 文件 .gitignore 格式规范如下: 所有空行或者以注释符号 # 开头行都会被 Git 忽略。...星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)...,又作了修改,现在,撤销修改就回到添加到暂存区后状态。

    880110

    受用一生高效 PyCharm 使用技巧(二)

    就进入了 Python Shell 界面,这个Shell 环境和我们当前运行程序环境是打通,使用是同一个 namespace,这下你可以轻松地进行调试了。 ?...这些测试文件搜索结果,对于我们看源代码不仅没有任何帮助,更重要是还干扰视线。于是我就研究了一下,从文件名入手,只要在 File mask 里填写 !test* 可以这些test文件过滤掉。...关闭烦人灯泡提示 本来没有想写这个,但是知乎上有一位朋友有这个需求,那我研究了下。 ? 先来说下这个灯泡提示是什么,有什么用?...Pycharm 本身会实时地对变量名进行检查,如果变量名不是一个已存在英文单词,就会出现一条波浪线,当一个变量里有多个单词时,Python 推荐写法是用下划线来分隔(其他语言可能会习惯使用驼峰式命名法...每个人变量命名习惯不一样,如何你在项目里大量使用了 myname 这种风格变量命名方法,像下面这样(随便找了一段 cloudinit 代码),是让人挺不舒服,总有一种代码有 bug 错觉。

    58220

    受用一生高效 PyCharm 使用技巧(二)

    就进入了 Python Shell 界面,这个Shell 环境和我们当前运行程序环境是打通,使用是同一个 namespace,这下你可以轻松地进行调试了。 ?...这些测试文件搜索结果,对于我们看源代码不仅没有任何帮助,更重要是还干扰视线。于是我就研究了一下,从文件名入手,只要在 File mask 里填写 !test* 可以这些test文件过滤掉。...关闭烦人灯泡提示 本来没有想写这个,但是知乎上有一位朋友有这个需求,那我研究了下。 ? 先来说下这个灯泡提示是什么,有什么用?...Pycharm 本身会实时地对变量名进行检查,如果变量名不是一个已存在英文单词,就会出现一条波浪线,当一个变量里有多个单词时,Python 推荐写法是用下划线来分隔(其他语言可能会习惯使用驼峰式命名法...每个人变量命名习惯不一样,如何你在项目里大量使用了 myname 这种风格变量命名方法,像下面这样(随便找了一段 cloudinit 代码),是让人挺不舒服,总有一种代码有 bug 错觉。

    84520

    对 Mastering Emacs作者 Mickey Petersen 采访

    只是我们“文本编辑器”与……记事本相关联。Emacs 远不止于此。 Emacs 已经比以前友好多了。更好默认值;Emacs 附带更明智内含物。...为此,我编写了几行代码 Emacs 各个部分粘合在一起。我按下一个按钮,Emacs 使用 TRAMP 连接到远程服务器并调用它需要调用程序,然后结果显示在 Emacs 缓冲区中。...我还将 IDO 用于文件和缓冲区, Selectrum 用于通用完成。 除了 Emacs,您还使用什么工具和装备(硬件、软件或想到任何其他东西)?...一个巨大 Emacs 框架,我可以轻松地将其拆分为多个窗口。 除了工具,还有哪些习惯和惯例可以帮助您完成工作? 我很少完成我工作。除非有人付钱给我,否则!...我是一个习惯项目启动者,少数项目的完成者。半生不熟,半发明是我通常如何称呼我所做事情。

    73510

    micro hdmi引脚定义义_Unity SRP 1.自定义管线「建议收藏」

    我正在使用Unity 2018.2.9f1,但任何2018.2或更高版本也应该工作。创建一个标准3D项目,禁用分析功能。我们创建自己管道,因此不要选择管道选项。...CreateAssetMenu(menuName = "Rendering/My Pipeline")] public class MyPipelineAsset : RenderPipelineAsset {} 使用新菜单项资产添加到项目中...这要求我们 EndSample延迟到提交上下文之前.所以我们在这里插入额外ExecuteCommandBuffer ,只包含结束样本指令。为此使用相同命令缓冲区,在完成之后再次清除它。...通过新draw setting 和默认filter setting 把它设置进去并且使用它渲染,我们不关心透明和不透明排序和分离,因为他们无论如何都不会生效。...using UnityEngine.Experimental.Rendering; using Conditional = System.Diagnostics.ConditionalAttribute; 属性添加到我们方法上

    1.7K20
    领券