如何在 emacs 中删除引用的字符串?

2024-03-20

我想删除源文件中带引号的字符串 无需标记字符串的开头和终止区域, 但只需将点放置在引用字符串内的任意位置并按快捷键即可。

我尝试在 elisp 中为此编写一个函数,但我发现该文件 需要从头到点进行解析,以确定该点是否在带引号的字符串内,并找到带引号的字符串的边界(还处理 \")...

但该文件已经被 font-lock 解析。 所以现在我可以知道我是否在带引号的字符串内:

(defun inside-quoted-string? ()
  (interactive)
  (print (find 'font-lock-doc-face (text-properties-at (point)))))

但如何获得字符串的边界呢? font-lock 知道它,因为它很好地以蓝色突出显示它,但我如何获得它?

编辑: 感谢您的回答。我想出了这个代码 正是我想要的 - 移动代码而不选择区域甚至 移至代码开头。

(defun kill-at-point ()
  "Kill the quoted string or the list that includes the point"
  (interactive)
  (let ((p (nth 8 (syntax-ppss))))
    (if (eq (char-after p) ?\")
    (progn 
      (goto-char p)
      (kill-sexp))
      (progn
    (up-list)
    (let ((beg (point)))
      (backward-list)
      (kill-region beg (point)))))))
(global-set-key (kbd "C-,") 'kill-at-point)

欢迎提出任何改进建议。


您可以使用底层解析器的数据,而不是依赖字体锁定。围绕点(如果有)的字符串的开头可用作(nth 8 (syntax-ppss))。然后您可以使用(forward-sexp 1)跳过绳子找到它的末端。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 emacs 中删除引用的字符串? 的相关文章

  • 将 CSV 导入组织模式属性

    我想将 CSV 导入组织模式 其他人已经询问过如何将 CSV 导入组织模式表 这不是我想做的 我需要将 CSV 导入到组织模式属性 例如 像这样的 CSV Name Tel Mobile Fax John 11111 22222 33333
  • 如何在 Emacs 中强制绑定?

    我正在尝试绑定
  • 更改组织模式新一天开始的时间

    我使用组织模式来计时我的工作 有时我会工作几个小时到午夜 例如 我记录的时间从 2013 年 6 月 3 日晚上 10 点开始 到 2013 年 6 月 4 日凌晨 2 点结束 组织模式在凌晨 0 点进行划分 开始新的一天 但如果将 0am
  • 在 Emacs org-mode 中设置本地文件变量

    在特定的组织模式文件中 我不希望继承标签 我以为放 org use tag inheritance nil因为第一行可以解决问题 但这似乎不起作用 缺少手动执行setq声明 我怎样才能做到这一点 你缺少一个尾随 在标题评论中 尝试这个 or
  • IPython 自动完成 emacs24 不起作用

    我将 emacs24 0 92 与 IPython 12 一起使用 我从 IPython 存储库中获取了 ipython el 文件并尝试了这个补丁 https github com ipython ipython pull 204但是自动
  • windows下无法用emacs + sbcl启动slime

    我想配置我的 emacs 以使用 SLIME 和 SBCL emacs 文件如下所示 add to list load path D app slime setq inferior lisp program sbcl require sli
  • 如何根据文件位置运行钩子

    我参与了使用选项卡的 python 项目 但是我没有在我编写的所有其他代码中使用它们 在该特定项目中使用它们至关重要 项目位于特定目录下的一个目录中 IE main folder project1 project2 project3 etc
  • emacs 启动后更改 X11 窗口标题

    当我启动 emacs 时 我可以使用 title 选项来控制保存 emacs 应用程序的 x 窗口的标题 emacs从elisp启动后可以更改标题吗 M x set frame name NewName RET 和来自 elisp set
  • emacs中如何删除重复行

    我的文本有很多行 我的问题是如何删除 emacs 中的重复行 在没有外部实用程序的情况下使用 emacs 或 elisp 包中的命令 例如 this is line a this is line b this is line a 删除第三行
  • Emacs:调试Python的方法

    我把这个贴在程序员 stackexchange com https softwareengineering stackexchange com questions 29844 emacs methods for debugging pyth
  • 如何使用 emacs prettify-symbols-mode?

    我有 emacs 版本 25 0 我启用prettify symbols mode 然后输入 lambda t 但它并不能美化 我该如何使用这个模式 还有哪些符号可用以及如何配置它 任何参考都值得赞赏 Edit 什么也没发生在scratch
  • 在 Emacs ruby​​ 模式下使用制表符缩进而不是空格

    我一直在尝试配置 Emacs 以便在缩进 Ruby 代码时插入一个 制表符 而不是一系列 空格 到目前为止 我已经尝试设置 varruby indent tabs mode to t这样 根据文档 它将 如果非零 则在 ruby 模式下插入
  • 如何在 elisp 中将列表作为宏的参数?

    我想实现这样的目标 setq my global keybindings C x C d dired C x C b ibuffer C x b ivy switch buffer apply bind keys my global key
  • 如何在 Emacs Lisp 中“URL 解码”字符串?

    我有一个像 foo 20bar 这样的字符串 我想要其中的 foo bar 我知道 Emacs Lisp 中必须有一个内置函数来解码 URL 编码的字符串 查询字符串 但我今天找不到它 无论是在我的文档中还是在我的文档中都找不到它 lisp
  • emacs:Orgmode,如何从一行行中创建一个列表

    有没有办法隐藏这样的行块 line1 line2 linen into 1 line1 2 line2 n linen 使用 Emacsorg mode http orgmode org 我知道的最短的方法是 突出显示这些行 包括它们的换行
  • Emacs 强制组织模式捕获缓冲区在新窗口中打开

    如何强制组织模式的捕获缓冲区在新窗口中打开 我试过 setq special display regexps Capture 但它不起作用 我立即看到一个新窗口 然后 org mode 进行两个垂直分割 我使用 3 个垂直分割 并将捕获缓冲
  • Windows、Emacs、Git Bash 和 shell 命令

    Windows 7 Emacs 24 3 1 git 1 8 1 msysgit 1 我的等效 emacs 文件中有以下内容 if equal system type windows nt progn setq explicit shell
  • 配置jedi不自动完成?

    我在 emacs 中安装了 jedi mode 来进行 python 编辑 因为我发现C and C 对于跳转到定义并返回非常有用 然而 自动完成并不是我想要的 当我尝试在安装了 jedi 的情况下使用 emacs 时 它会不断尝试提供建议
  • emacs 临时文件的 .gitignore 正则表达式

    我正在尝试 gitignore emacs 临时 自动保存文件 我在用着 在我的 gitignore 中 But git add A在子文件夹中运行仍然给我 new file make collections py new file nor
  • 如何使用 Emacs 通过 HTTP 打开远程文件?

    大多数开源软件都通过某些 HTTP 服务公开其代码 我想从 Emacs 打开并浏览此类代码 但 AFAICS trapmp 只允许ssh and ftp 因此 我的第一个问题是如何打开 HTTP URL 以便在 Emacs 中进行读取 然后

随机推荐

  • 不变失败:您不应在 之外使用

    I use react router dom用于我的路由React应用 我的应用程序的一部分提取到另一个包中 依赖项列表如下所示 app dashboard package json dependencies app components
  • 您可以通过 Android studio 将 Android 应用程序作为 ARC 应用程序启动吗?

    我想知道是否有一种方法可以从 Android Studio 启动和 或构建 ARC 应用程序 而不必每次都手动使用 ARC 焊机 在开发过程中手动执行此操作可能非常麻烦 尤其是在发布过程中 您必须对同一应用程序的约 15 种不同风格执行相同
  • 从多个 SQL Server 表中选择 TOP 4 记录。使用vb.net

    我有大约 4 个不同的表 它们具有完全相同的列名 我想要做的是从所有这些按日期排序的表中选择前 4 条记录 因为日期是它们共享的列之一 我不断收到错误的语句 无论是语法问题还是不明确的记录等 本质上我的声明类似于 SELECT TOP 4
  • 如何在 AngularFire2 中获取 firebase.User

    我正在使用 AngularFire2 Ionic2 和 Firebase 身份验证 我在尝试获取当前用户时遇到问题 这对我有用 但不一致 有时它被填充 有时它为空 let user firebase User firebase auth c
  • 打开带有动态内容的窗口

    是否可以从 PHP 打开一个具有预定义内容的窗口 很明显 您可以从框架现有页面的 javascript 链接打开一个窗口 或者仅从引用现有页面的常规 a 标记执行 target blank 但我正在生成一些内容 并希望在新链接中打开该内容
  • 如何在命令行中从 .NET 程序集获取 IDL(或如何将 TLB 转换为 IDL)?

    我们有一个 NET 程序集 实际上是 Aspose Words 我们希望客户端能够从 COM 客户端轻松使用它 因此 我们随程序集提供了 TLB 以便客户端可以从 C 或 Delphi 等语言中使用它 而不必自己提取 TLB 我们还随程序集
  • 将所有对象从一个 Realm 复制到另一个 Realm

    我正在尝试添加使用领域将以前导出的数据库加载到手机应用程序中的功能 该数据库包含在一个 zip 文件中 我将其从电子邮件导入到应用程序中 将其提取 然后将领域文件写入应用程序本地存储 将其写入文件后 我将加载备份领域文件 查询对象 然后将它
  • SQLite3 Node.js JSON

    我正在使用sqlite3NPM 包 我想将 JSON 存储在我的数据库列之一中 据我所知 SQLite本身能够存储JSONhttps www sqlite org json1 html https www sqlite org json1
  • Coq 中的案例分析证明

    我试图证明关于以下函数的命题 Program Fixpoint division m nat n nat measure m nat match lt nat 0 n with false gt 0 true gt match leq na
  • Steam:使用 PHP 将 SteamID64 转换为 SteamID

    有人如何使用 PHP javascript 将 steamid64 例如 76561198074259974 转换为 steamid STEAM 0 0 56997123 我想在加载屏幕上显示 steamid 但不是 steamid64 看
  • 在 C# 中查找 MP3 长度

    我在用着TagLib http developer novell com wiki index php TagLib Sharp从一些 MP3 中获取 ID3 标签数据 但我似乎无法找到 MP3 的长度 如何在 C 中找到 MP3 的长度
  • Microsoft Teams Tab 应用程序无法访问剪贴板

    I m developing the Microsoft Teams Tab application Tab application is run inside Microsoft Teams through iframe so there
  • 上下文操作模式自定义行为

    在 Android 开发者中菜单指南 http developer android com guide topics ui menus html CAB其中提到 当用户取消选择所有项目 按 后退 按钮或选择操作栏左侧的 完成 操作时 操作模
  • 中继器控件 - 取消特定项目的绑定

    在转发器控件中 是否有一种方法可以在呈现页面之前解除某些项目的绑定 目前 我们有一个绑定到转发器的项目集合 如果该项目不是当前语言的一部分 我们将隐藏该项目 我希望能够对中继器进行计数并返回有效的号码 不包括隐藏项目的计数 是否可以解除特定
  • 创建实时数据仓库

    我正在做一个个人项目 其中包括创建数据仓库 DWH 的完整架构 在本例中 作为 ETL 和 BI 分析工具 我决定使用 Pentaho 它具有许多功能 从允许轻松创建仪表板到完整的数据挖掘流程和 OLAP 多维数据集 我读过数据仓库必须是关
  • 在Java中使用分隔符(与分割相反)连接数组元素的一种快速而简单的方法[重复]

    这个问题在这里已经有答案了 See 相关 NET 问题 https stackoverflow com questions 455438 opposite of string split with separators net 我正在寻找一
  • 为什么 std::vector 这么快(或者我的实现太慢)

    前几天我在玩游戏 试图看看我能在多大程度上优化某些东西 我决定从一个简单的映射开始 它只进行线性搜索来查找元素是否存在 然后尝试对其大部分进行优化 另外 为了进行比较 我使用 std find 对 std map 和 std vector
  • Protractor - 检查单选按钮是否被选中

    所以我遇到了这个问题 我运行量角器 硒测试 有时在测试过程中已经检查了单选按钮 有时则没有 etc div class radio item checked or div class radio item 您可以在其中看到该类有时具有 检查
  • 如何使用 Java 11 HttpClient 和 Jackson 将 JSON 响应映射到 Java 类?

    我是 Java 11 HttpClient 的新手 想尝试一下 我有一个返回 JSON 的简单 GET 请求 我想将 JSON 响应映射到名为的 Java 类Questionnaire 我知道我可以将响应直接转换为字符串或输入流 如下所示
  • 如何在 emacs 中删除引用的字符串?

    我想删除源文件中带引号的字符串 无需标记字符串的开头和终止区域 但只需将点放置在引用字符串内的任意位置并按快捷键即可 我尝试在 elisp 中为此编写一个函数 但我发现该文件 需要从头到点进行解析 以确定该点是否在带引号的字符串内 并找到带