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

emacs撤消中的一次击键

Emacs编辑器中的“一次击键”(one-key undo)功能允许用户通过单个按键快速撤销上一次编辑操作。以下是关于这个功能的基础概念、优势、应用场景以及可能遇到的问题和解决方法:

基础概念

  • 一次击键:指的是用户可以通过按下特定的按键(通常是C-/C-x u)来撤销上一次编辑操作。
  • 撤销栈:Emacs维护一个撤销栈,记录用户的每一次编辑操作,允许用户逐个撤销这些操作。

优势

  1. 高效性:用户无需多次按键即可快速撤销操作,提高了编辑效率。
  2. 便捷性:单键操作简化了撤销流程,减少了用户的操作负担。
  3. 灵活性:可以随时撤销到任意历史状态,提供了极大的灵活性。

类型

  • 简单撤销:撤销上一次单一操作。
  • 复杂撤销:连续撤销多个操作,直到达到某个历史点。

应用场景

  • 文本编辑:在编写代码、文档或其他文本时,快速修正错误。
  • 版本控制辅助:在没有版本控制系统的情况下,临时保存不同版本的草稿。
  • 实验性编辑:尝试不同的编辑方式,不满意时迅速回退。

可能遇到的问题及解决方法

问题1:撤销功能失效

原因

  • 可能是由于Emacs配置错误或插件冲突导致的。
  • 撤销栈可能已满或被意外清空。

解决方法

  1. 检查Emacs配置文件(通常是.emacsinit.el),确保没有禁用撤销功能的设置。
  2. 尝试重启Emacs,看是否能恢复撤销功能。
  3. 使用M-x view-lossage命令查看最近的编辑历史,确认是否有异常操作影响了撤销栈。

问题2:撤销操作不彻底

原因

  • 某些复杂操作可能被Emacs视为单一操作,导致无法逐个撤销其内部步骤。

解决方法

  1. 尝试使用更细粒度的编辑方法,避免一次性进行大量复杂操作。
  2. 如果问题依旧,可以考虑手动记录关键步骤,以便后续精确撤销。

示例代码

以下是一个简单的Emacs Lisp代码片段,用于演示如何绑定一次击键撤销功能:

代码语言:txt
复制
(global-set-key (kbd "C-/") 'undo)

将这段代码添加到你的Emacs配置文件中,即可将C-/键绑定到撤销功能上。

总之,Emacs的一次击键撤销功能极大地提升了编辑效率,但在使用过程中也可能遇到一些问题。通过了解其基础概念和解决方法,你可以更加顺畅地利用这一强大工具。

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

相关·内容

使用 Emacs 收听 elfeed 中的播客

Elfeed[1] 是 Emacs 中一个非常好用的 RSS 客户端,之前笔者也写过相关文章[2]进行介绍,强烈建议读者尝试一下跨平台的 RSS 客户端。...对于播客,主要的分发形式就是基于 RSS,所以用 elfeed 来听是在自然不过的事情,只需要一个支持命令行启动的音乐播放器即可,常见的有:vlc[3]、mpv[4],而且它们都支持直接播放网络流,这样我们就省去了下载音频文件的步骤...GitHub 上的 elcast[5] 已经解决这个问题,但是过于定制,因此笔者 fork 过来修改了一版,修改后的代码在: ;;; elcast.el --- Play podcast within...elcast-player-params '("--socks" "127.0.0.1:1080" "--verbose" "2" "--no-color"))) 以后,在 *elfeed-entry* 中浏览某个播客时...参考资料 [1] Elfeed: https://github.com/skeeto/elfeed [2] 相关文章: https://liujiacai.net/blog/2021/03/05/emacs-love-mail-feed

24610
  • vim编辑器使用方法

    概述 vim编辑器是linux下享有盛誉的文本编辑器,据说世界上的程序员只用三种编辑器,Vim(编辑器之神), Emacs(神的编辑器), 其他编辑器。...:由#指定一次跳转的单词数 行首行尾跳转 ^: 跳转至行首的第一个非空白字符; 0: 跳转至行首; $: 跳转至行尾; 行间移动 #G:跳转至由#指定行; G:最后一行; 1G, gg: 第一行; 句间移动...: u(undo):撤消此前的操作; #u: 撤消指定次数的操作; 撤消此前的撤消: Ctrl+r 重复前一个编辑操作: ....tmp]# vimtutor # 显示vim文档 vim中的末行模式: 1.地址定界 :start_pos,end_pos #: 具体第#行,例如2表示第2行; #,#: 从左侧#表示行起始,到右侧...每一行只替换第一次出现; 练习: 1.复制/etc/grub2.cfg至/tmp/目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符; %s/^[[:space:]]\+//g

    81630

    TW洞见 | 浅谈快捷键

    又是一个小的分享,落笔成文。开始其实是想做一个文本编辑器的分享,不过在准备过程中,发现编辑器之争很多时候争的却是快捷键系统的设计。...1 溯源 回想第一次接触键盘应该就是小学时代玩过的打字机了,通过敲击键盘上的某一个按键,驱动一个撞针,将该按键对应的字符的字模打击到色带上,从而在纸上打出该字符,知道为什么我们现在叫“打字”了吧。...随着计算机技术的发展,先后出现了电子打字机(又称文字处理机)和个人计算机(PC),打出来的字不再是印到纸上,而是显示在显示器中。...例如打开一个文件的快捷键是Ctrl+X Ctrl+F。这种快捷键的设计好处是不需要关注当前的编辑器模式了,但缺点是需要按更多的键,可以简单的理解每次按下Ctrl就是在做一次短暂的模式切换。...而我本人所使用的软件中,像Readkit、Airmail类似的软件的快捷键就是混合了Vim和Emacs的一些经典元素的,而Gmail、Trello和Github这种常用的有点逼格的网站都一定程度的借鉴了

    75390

    一次搞定js中的this指向

    js中this的指向是在运行时会变动的 这句话严谨的说是有问题的。 this这个关键词,在java中的解释是引用当前类的实例变量。...这种情况的时候,代码的效果就是这样的 function sayThis() { // TODO console.log(this); } this.sayThis(); 复制代码 如果一个函数没有显式的调用者...,那么,这个函数的调用者就是此函数执行的作用域中的this 所以,归根结底,this是当前执行方法的调用者 你以为这样就结束了?...Too young too simple js中还有三个显式绑定this的方法,bind,apply,call当使用这些方法指定执行函数的this时,那this基本上就是指定的了 基本上?...上面的代码用babel编译之后 var _this = this; var sayThis = function () { console.log(_this); }; 复制代码 很容易理解箭头函数中this

    43730

    线程(1)

    另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。...一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。...线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。...在单个程序中同时运行多个线程完成不同的工作,称为多线程 有一个很形象的比喻: 1.单进程单线程:一个人在一个桌子上吃菜 2.单进程多线程:多个人在同一个桌子上一起吃菜 3.多进程单线程:多个人每个人在自己的桌子上吃菜...因此,Linux 下的学习重点是大家要学习进程间通讯的方法 Tip: 引自 《多线程有什么用》 这里分享一下我在学习线程过程中的笔记和心得 ---- 概要 ---- 代码示例 要求 编写单进程多线程程序

    43910

    vi与vim的区别以及常用命令

    一、vi与vim的区别 1、多级撤消 在vi编辑器中,按u只能撤消上次命令,而在vim里可以无限制的撤消。...vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。在vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。...2、插入模式 (Insert-mode) 在正常模式中按下i, a, o, I,A,O键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中,击键时会写入相应的字符。...7、替换字符 r:替换单个字符(按完r在按你要替换的字符即可) R:替换多个字符(从你要替换的位置开始替换,直至你退出正常模式) 8、撤销编辑操作:u u:撤消前一次的编辑操作; #u:直接撤消最近...#次编辑操作; 温馨提示:连续u命令可撤消此前的n次编辑操作; 9、将另外一个文件(/path/sunhui.txt)的内容填充在当前文件夹中 :r /path/sunhui.txt :填充到当前文件所在光标的后面

    2.5K20

    数组中只出现一次的数字

    如果数组中只一个数字是只出现一次的,其他数字都是成双成对出现的,那么我们从头到尾依次异或数组中的每个数字,最终的结果刚好就是那个只出现一次的数字,因为那些成对出现两次的数字全部在异或中抵消了。...那么回到我们的题目,因为有两个只出现一次的数字,所以我们可以试着把原数组分成两个子数组,使得每个数组包含一个只出现一次的数字,而其他数字都成对出现两次。...我们还是从头到尾依次异或数组中的每个数字,那么最终得到的结果就是两个只出现一次的数字异或的结果。...位都为1,第二个子数组中的数组第index位都为0,那么只出现一次的数字将被分配到两个子数组中去,于是每个子数组中只包含一个出现一次的数字,而其他数字都出现两次。...这样我们就可以用之前的方法找到数组中只出现一次的数字了。

    90920

    记一次JS中的漏洞挖掘

    此文章不允许未经授权转发至除先知社区以外的其它平台!!!...前言当我们拿到网站,但是又不知道密码,目录扫描也扫不出有效的信息时,我们可以从前端JS源码入手,找找是否有可以利用的点,或者未授权的接口从而一步一步扩大危害,拿到系统源码或者用户信息等。...USERID=1&RESEARCHID=1" --batch --risk 3 --current-user地图key泄露这个KEY泄露虽然很常见,但是能用的不多,这个能够利用的我还是第一次遇见高德地图...passwd发现shadow密码文件也可以进行下载,猜测网站用户为root权限后面就是FUZZ下源码,或者SSH私钥登录,直接拿下shell,美滋滋文件下载二访问网站,打开熊猫插件发现一个export的接口直接使用目录穿越...1:如下图2:只有两个账号,泄露的东西也不多,所以赏金不高,hhh

    5200

    SSH客户端:Termius for Mac中文版

    组允许您共享设置,但每个主机可以有自己独立的首选项。这些数据以及连接和命令历史记录可以安全地同步到您的所有设备。...Termius使用端到端加密来确保您的数据自动完成Termius从您的所有服务器收集命令,并在您键入时提供建议经常使用的shell命令可以添加为Snippets并在多个主机上执行。...Termius为iOS和Android提供最佳终端体验,并完全支持Emacs和Vim。使用集成的SFTP客户端上载和下载文件。可在所有设备上轻松访问终端。密钥和密码的同步是可选的。...您可以远程撤消对设备的访问权限。...内置SFTP,MOSH和TELNET客户端移动会话在背景中运行SNIPPETS&AUTOCOMPLETEFACE ID,TOUCH ID,ANDROID FINGERPRINT / FACE UNLOCK

    7.1K30

    EditPlus中文版-具有 FTP、FTPS 和 sftp 功能的文本编辑器

    虽然它可以作为一个很好的记事本替代品,但它还为网页作者和程序员提供了许多强大的功能。...其他功能包括十六进制查看器、HTML 工具栏、用户工具、行号、标尺、URL 突出显示、自动完成、剪辑文本、列选择、强大的搜索和替换、多个撤消/重做、拼写检查、可自定义的键盘快捷键等。...突出显示普通文本文件中的 URL 和电子邮件地址,并让您通过单次击键 (F8) 或“Ctrl + 双击”来激活它们。 Hex Viewer Hex Viewer 允许您以 Hex 模式显示当前文件。...用户工具 EditPlus 支持用户自定义工具、帮助文件和击键记录文件。工具执行的输出可以在输出窗口中捕获,这样您就可以双击错误行来自动加载文件并将光标定位到该行。...自动完成 自动完成是一项节省时间的功能,可以将简短的缩写变成完整的字符串。它默认支持 Perl 和 C/C++。此外,您可以创建自己的自动完成文件来支持其他编程语言。

    2K30

    Emacs 快捷键

    C-_ undo 撤消您的上一次键入或操作 C-q 字符 或XXX quoted-insert 在插入点插入按键本身代表的字符 或由八进制数字(XXX )表示的字符。...E 编辑替换的字符串。 ^ 退回到前一次替换。 replace-regexp 和 query-replace-regexp 函数的工作方式是类似的,但是它们使用正则表达式作为要进行替换的字符串。...Emacs 搜索和替换命令 绑定 命令或者函数 描述 C-s [字符串 ] [C-w ] [C-y ] isearch-forward 前向增量地在整个缓冲区中搜索字符串(在缺省情况下,将搜索您上一次给出的搜索字符串...C-r [字符串 ] [C-w ] [C-y ] isearch-backward 后向增量地在整个缓冲区中搜索字符串 (在缺省情况下,将搜索您上一次给出的搜索字符串,如果存在),C-w 使用从光标处到光标所在单词的词尾之间的文本...参考推荐: Emacs(百度百科) Emacs 快捷键(CSDN) Emacs快捷键的总结(疑难问答)

    2K20

    玩转命令行之文本编辑器篇

    :D 介绍一个vim的第三方主题扩展包:spacevim,首先我们来看看它的样子: 怎么样,是不是很好看呢,我们在终端里输入这条命令即可直接安装到你的vim配置文件中,下次启动直接就变成sapcevim...此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。 以下是常用的几个命令: i 切换到输入模式,以输入字符。...底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。 在底线命令模式中,基本的命令有(已经省略了冒号): q 退出程序 w 保存文件 Emacs 2.1 介绍(看看就行) Emacs,著名的集成开发环境和文本编辑器。Emacs被公认为是最受专业程序员喜爱的代码编辑器之一,另外一个vim。...XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。 Emacs使用Emacs Lisp,这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。

    1.2K30

    记一次渗透竞赛中的思路笔记~

    因为是一次做渗透而且又是靶场,所以信息搜集也就没有做,拿到靶场网址后直接打开网页看看有什么东西,发现了一个登录口,想着有登录那就有注册,所以思路就出来了:注册→登录-修改密码(越权) ?...ok,我们后台已经找到 继续分析,经过这么短的时间其他哥哥们已经进入后台了,那么账号密码肯定不会很难,所以是弱口令的几率是非常大的!...第一次做渗透就轻而易举的进入后台了,说不紧张是假的,经过层层查看,发现几个上传点,如下: ? 上传点1 - 个人设置-修改头像 ? 上传点2 - 编辑文章-上传附件 ?...> 将一句话木马写到php文件内,并且百度搜索一个emlogcms系统的插件,然后把一句话木马php压缩进去,之后再上传! 如果没有waf的情况下,那么他就会顺便把我们的shell文件也给解压出来。...etcetra directory在百度上搜索的结果为linux根目录下的/etc文件夹 ?

    66420

    记一次Spring中HttpMessageConverter的源码分析

    排除了业务代码问题后,我的注意力放在了项目中的几个拦截器上,会不会是拦截器导致的数据被刷掉了?...进行逐一排查,但是奇怪的是拦截器并没有做什么修改接口响应的操作,仅仅是记录日志和一些无关紧要的操作 3....由于ResponseBody注解和JSON解析框架有着密切的关系,所以着重排查有关JSON的依赖引用,经过我的排查,发现jackson依赖在最近的提交中被删除。...问题的原因浮出水面,Jackson的引用被删除,导致Spring默认的HttpMessageConverter由Jackson变为了默认的Gson。...~ 分析完毕,一开始我以为是Gson的BUG,后来慢慢分析发现这是Spring中GsonHttpMessageConverter 实现类的 BUG....

    77530

    找出数组中只出现一次的数字

    一个数组中,有一个数字只出现一次,其余的数都出现两次,求出那个单独的数 可以使用异或或来解决这个问题,因为两个相同的数异或之后就是0,0与一个数异或还是这个数,而且异或满足交换律 public static...n ^= arr[i];//与sun+=arr[i]类似,方便理解 } System.out.println(n); } 拓展: 一个数组中,...只有两个不同的数字出现一次,其余的数都出现两次,求出那两个只出现一次的数 思路:假设数组是{1,2,3,1},要想找到那两个只出现一次的数,只需要将数组里面所有的数字异或一下,得到结果sum,然后将...sum进行移位操作判断是否为1,如果不为1,依次往后,知道右移到位为1的时候为止,其实就是确定sum从右往左数第几位是1,从而起到筛选的作用, 接下来将数组遍历一遍,判断数组中的每个数是否满足移k位结果是否为...,所以在异或一个num1就可以得到num2 总结:简单来说,就是通过移位操作来达到分类的作用,接下来就是使用之前异或的方法即可 代码如下 public static int[] Search(int[]

    60530
    领券