emacs shell 命令输出不显示 ANSI 颜色,但显示代码

2024-04-09

当我做M-!在我的 emacs 21.4 中,ANSI 代码是字面意思。例如:ls --color

^[[0m^[[0m05420273.pdf^[[0m
^[[0m100829_Baño1.pdf^[[0m 

有没有办法同时使用颜色和UTF8?

同样的问题已经被之前在SO中回答过 https://stackoverflow.com/questions/4726220/how-to-have-colors-in-the-output-of-emacs-shell-command但结果并不完全令人满意(给出的解决方案是打开 shell 模式)。我知道如何在贝壳中添加颜色。我只想知道怎么才能和M有颜色! (shell 命令)或者如果根本不可能。

当您只想快速显示某些内容并且不想移动到此缓冲区并且希望它在不使用 C-x-k 的情况下自动消失时,shell 模式的干扰性太大。显然,在某些情况下,shell 缓冲区更方便,但由于另一个问题,我发现了如何将颜色添加到 shell 模式。

【注意】emacs使用中 builder6.centos.org 上的 2008 年 6 月 15 日的 GNU Emacs 21.4.1(x86_64-redhat-linux-gnu、X 工具包、Xaw3d 滚动条)


ansi-color.el包含处理 ANSI 颜色代码的函数。不幸的是,并没有真正的好方法将其挂接到shell-command。这是一个 hack,但它有效:

(require 'ansi-color)

(defadvice display-message-or-buffer (before ansi-color activate)
  "Process ANSI color codes in shell output."
  (let ((buf (ad-get-arg 0)))
    (and (bufferp buf)
         (string= (buffer-name buf) "*Shell Command Output*")
         (with-current-buffer buf
           (ansi-color-apply-on-region (point-min) (point-max))))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

emacs shell 命令输出不显示 ANSI 颜色,但显示代码 的相关文章

  • 似乎无法使用 Magit 推送到 GitHub

    我正在尝试在 Emacs 24 3 1 上使用 Magit 推送到 GitHub 存储库 请注意 我使用的是 Windows 盒子 我已经暂存并提交了对文件的更改 并且 M x magit status 仅反映驻留在我的存储库克隆中的未跟踪
  • 如何使用 emacs/elisp 获取当前缓冲区信息的开始/结束?

    我有以下代码运行以范围输入的Figlet 如何修改此代码以检查 b 或 e 是否未指定 使 b 位于当前缓冲区的开头 e 位于当前缓冲区的结尾 defun figlet region optional b e interactive r s
  • 如何在 emacs 中以 info 模式打开 *.info 文件?

    C x C f blah info以基础金属模式打开文件 我用过apropos并发现Info mode我认为这可能会从基本模式更改为信息模式 但这会引发 lisp 错误 如何在 emacs 中打开外部 第三方 info 文件 以便获得与查看
  • 在 Emacs Lisp 中检查字符串是否以后缀结尾

    是否有一个函数可以检查字符串是否以某个子字符串结尾 Python 有endswith http docs python org 2 library stdtypes html highlight endswith str endswith
  • 如何去掉 CR (^M) 并保留 LF (^J) 字符?

    我正在尝试使用 Hexl 模式手动从文本文件中删除一些特殊字符 但不知道如何在 Hexl 模式下删除任何内容 我真正想要的是删除回车符并保留换行符 Hexl 模式是执行此操作的正确方法吗 无需寻找替代 就用吧 M x delete trai
  • clojure 的 emacs slime-connect 版本不会查找 $CLASSPATH

    我需要将 clojure 函数与 slime connect 一起使用 我将所有库都放在 CLASSPATH 中 据我了解这个问题 https stackoverflow com questions 3376840 clojure clas
  • 如何在emacs中获取顶部和底部边距[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 使用 emacs 时如何获得顶部和底部边距 如左右边缘 我发现当我编写或审阅大块文本时 让文本从屏幕顶部开始有点不舒服 我找不到仅顶部和底部边距设置
  • 在 Emacs 中定义新的工具提示

    我想向 emacs 添加自定义工具提示 更具体地说 每当我将鼠标悬停在符号 函数 变量 名称上时 用我的鼠标我想看到带有符号定义的工具提示 我知道我可以使用 cscope 这样的工具找到此类信息 但我不知道如何找到 将 cscope 的输出
  • Emacs 中的 C 注释 - Linux 内核风格

    我在用着 setq default comment style multi line and my region comments when doing M are void main int i int b printf format s
  • Emacs Evil“重复”(点)行为

    我的中有以下行 emacs define key evil normal state map M j lambda interactive evil next line 5 这使得文件中的导航变得更加容易 例如 与M j我在下面 5 行 所
  • emacs 启动后更改 X11 窗口标题

    当我启动 emacs 时 我可以使用 title 选项来控制保存 emacs 应用程序的 x 窗口的标题 emacs从elisp启动后可以更改标题吗 M x set frame name NewName RET 和来自 elisp set
  • 并排镜像两个打开的缓冲区中的文件位置

    我试图在 emacs 中找到一个包 函数 它可以并排打开两个文件 使其位于同一行位置 镜像正在移动的缓冲区的移动 这意味着 对于并排打开的两个缓冲区 在其中一个缓冲区中移动 向上 向下翻页 移动光标等 将在另一个缓冲区中进行相同的移动 更具
  • eshell (elisp shell) 启动时读取什么设置文件? eshell 如何设置它的 PATH?

    使用 emacs eshell echo PATH 显示与 PATH 环境变量不同的路径 我还检查了 eshell 不读取 bashrc 或 profile 我认为这就是路径不同的原因 eshell 启动时读取什么设置文件 eshell 如
  • Emacs:调试Python的方法

    我把这个贴在程序员 stackexchange com https softwareengineering stackexchange com questions 29844 emacs methods for debugging pyth
  • 如何在组织模式议程树视图中显示条目的完整上下文

    在组织模式的每日 每周议程视图中 有没有办法显示条目的完整上下文 我对代码的解读是 它找到时间戳上方的第一个标题并显示它 然而 就我而言 该标题通常有 3 4 层深度 如果没有上面的项目符号 就没有意义 似乎也没有办法可以轻松改变这一点 过
  • Pymacs 助手在 30 秒后未启动

    我见过其他关于此的问题 但没有一个得到真正的回答 而且没有一个是我的问题 我有一个新系统 emacs 23 1 Centos 6 2 我认为 我下载了最新的 pymacs 并安装了它 但是 我得到 error Pymacs helper d
  • emacs 临时文件的 .gitignore 正则表达式

    我正在尝试 gitignore emacs 临时 自动保存文件 我在用着 在我的 gitignore 中 But git add A在子文件夹中运行仍然给我 new file make collections py new file nor
  • 将字符定义为单词边界

    我已经定义了 字符在乳胶模式下充当单词组成部分 我对结果非常满意 唯一困扰我的是像这样的序列 alpha beta被视为单个单词 当然 这是预期的行为 有没有办法让 emacs 将特定字符解释为单词 starter 这样 它将始终被视为其后
  • 将剪贴板上的图像粘贴到 Emacs Org 模式文件而不保存它

    由于我使用 Emacs Org 模式作为研究日志 有时我想通过屏幕截图来跟踪某些内容 但我绝对不想保存它们 所以我想知道是否有任何方法可以将这些数字插入到我的组织模式文件中 就像使用 word 从剪贴板复制它们一样 您想要的确切功能目前尚未
  • Emacs 行编号性能

    我试过了linum and nlinum 两者对于超过 100k 行的文件的性能都很糟糕 for x in 1 100000 do echo x done gt 100k txt emacs q 100k txt M x load libr

随机推荐