AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[emacs](unix)

Martin Hope
Alex028502
Asked: 2024-04-14 01:40:27 +0800 CST

xterm 似乎改变了 emacs 的“home”键行为

  • 5

在 xterm 中,当我按键盘上的 HOME 键时,它通常会发送,^[[H但是当我打开时emacs -nw,它会更改为^[OH; 这些分别是home和khome。我在尝试构建自己的终端时发现它^[[H在 emacs 中不起作用。但是,我无法弄清楚是什么导致 xterm (或 emacs)改变其行为。

此外

  • home“应该”对应于和的键khome(我通常使用的 home 键,以及关闭数字锁定的键盘上的 1) - 在我尝试过的每个终端上始终执行相同的操作,即使 xev 显示它们是不同的,所以对于其余的对于这个问题,我会将它们视为同一件事。
  • 它似乎与 pty 设置无关。我曾经stty -g在打开 emacs 的情况下复制设置,然后通过cat -v运行应用它们,但我仍然得到非 emacs 的行为。(下面的演示)
  • bash 的 readline 似乎比 emacs 和/或读取 TERM 变量更容易接受,因为无论我尝试什么终端,HOME 总是在 bash 中工作

这是我的实验:

xterm

获取终端信息:

$ tty
/dev/pts/1
$ echo $TERM
xterm
$ infocmp $TERM | grep home
    el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
    kf8=\E[19~, kf9=\E[20~, khome=\EOH, kich1=\E[2~,

尝试按 HOME 键,然后按返回cat -v,然后退出

$ cat -v
^[[H
^[[H
^C

打开 emacs

$ emacs -nw

尝试主页键的行为(它有效 - 我不会发布视频)

使用C-q来查看密钥发送的内容:

[^OH 在 emacs 中 在 xterm 中

同时在另一个终端(不必是 xterm)中,复制 emacs pty 设置:

$ emacs_settings=$(stty -F /dev/pts/1 -g)
$ echo $emacs_settings
4001:1:bf:a31:7:7:7f:15:4:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:

然后退出 emacs 并cat -v重新开始

$ cat -v

然后返回第二个终端 - 将 xterm pty 设置回 emacs 使用的设置

$ stty -F /dev/pts/1 $emacs_settings

然后在 xterm 中再次按 home:(然后按 return 并退出)

$ cat -v
^[[H^M

它与 emacs 之外的代码一样,是home代码,而不是khome有人在 emacs 中插入的代码。

现在,如果您在家中尝试此操作,并且想要退出cat -v,则需要使用 ctrl+G 而不是 ctrl+C,因为 emacs 设置会更改一些键。这证明设置有效。您还可以看到退出行末尾没有 ^G,但有一个回车符 - 我猜是因为回显设置发生了变化,并且处于原始模式。

如果您好奇的话,这里是人类可读的 emacs pty 设置。

$ stty -F /dev/pts/1 -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^G; quit = ^G; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = <undef>; stop = <undef>; susp = <undef>;
rprnt = <undef>; werase = <undef>; lnext = <undef>; discard = <undef>; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig -icanon -iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

其他终端

linux
$ infocmp linux | grep home
    home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
    kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,

这个不太容易截图(我可以拍照,但我没有)

总结是 - 无论您是否在 emacs 中,HOME 键都会khome从终端设置发送,并且它始终在 emacs 中起作用。

MATE 终端 ( xterm-256color)
$ echo $TERM
xterm-256color
$ infocmp $TERM | grep home
    el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
    kf8=\E[19~, kf9=\E[20~, khome=\EOH, kich1=\E[2~,
$ cat -v
^[[H
^[[H
^C

但它再次发送到^[OHemacs 内部!所以他们又是不同的。我不知道我之前是怎么错过这个的。我猜 MATE 终端完全实现了 xcode 的功能,或者使用了一些相同的组件。

另一方面:

超 (xterm-256color)

在这种情况下,他们只是khome一直发送,并且 HOME 键似乎仍然按照您期望的方式工作。

$ echo $TERM
xterm-256color
$ cat -v
^[OH
^[OH
^C
$ emacs -nw
$ # ... ^[OH again 
tmux(在 MATE 终端中)screen

我不知道 tmux 何时设置TERM为screen以及何时将其设置为tmux,但今天在这台计算机上,在该主机终端中,它是screen。

$ echo $TERM
screen
$ infocmp $TERM | grep home
        enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG,
        khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
$ cat -v
^[[1~
^[[1~
^C
$ emacs -nw
$ # also ^[[1~ with C-q inside emacs

围捕
  • 有些终端只是khome一直发送,而其他终端则设法khome在 emacs 内部发送,home其余时间都发送。
  • khome两者home都适用于 bash readline,但仅khome适用于 emacs - 或者只有一个固定的可在 emacs 中使用的 home 键列表(我说的是默认配置) - 我倾向于固定列表,因为我无法获取 emacs通过改变来改变行为TERM
大问题

xterm(和 MATE 终端)如何设法更改在 emacs 打开时发送的代码。

以下是我能想到的一些猜测:

a) xterm 有一个关于 emacs 的特殊规则 b) emacs 有一个关于 emacs 的特殊规则xterm c) emacs 确实会更改终端设置来导致这种情况,但无论该设置是什么,cat如果您尝试让 cat 使用该设置,它都会不断地更改回来

值得一提的小问题
  • 为什么看起来像的键不对应home并khome发送相应的值?
  • emacs(默认情况下)是否根据 改变其行为TERM?
emacs
  • 1 个回答
  • 35 Views
Martin Hope
Pedro Delfino
Asked: 2023-11-04 22:23:52 +0800 CST

使用 EXWM 时,GNU Guix 的资源使用情况与轻量级 Linux 发行版(Puppy、AntiX、Q4OS、Linux Lite、Mabox 和 Arch)相比如何?

  • 4

我正在寻找一个轻量级的 Linux 发行版,用于在较旧的硬件上进行开发,并考虑使用 GNU Guix(是的,我喜欢 lisp、函数式编程和可重复性:D)。我的要求是一个在内存和 CPU 使用方面都具有资源效率的系统。

我打算使用 EXWM(Emacs 窗口管理器)作为我的桌面环境,这是我的 emacs 配置文件,它相对适中。

具有使用 GNU Guix(尤其是 EXWM)经验的人能否提供与其他轻量级发行版(如 Puppy Linux、AntiX、Q4OS、Linux Lite、Mabox Linux 和 Arch Linux)相比的资源使用情况的见解?

我对启动后的平均 RAM 使用情况、典型开发任务期间的 CPU 负载以及系统响应能力等指标感兴趣。

任何比较见解或指向基准的指导都将不胜感激。

emacs
  • 1 个回答
  • 39 Views
Martin Hope
ychaouche
Asked: 2022-02-21 07:02:40 +0800 CST

如何在正在运行的 emacs 中打开特定行的文件?

  • 1

可以从命令行运行 emacs 以在第 n 行打开文件,并使用+n如下命令行参数:

$ emacs +n file

我想通过find-file或其他方式从正在运行的 emacs 实例做同样的事情。那可能吗 ?

emacs file-opening
  • 2 个回答
  • 157 Views
Martin Hope
hidromixer
Asked: 2022-02-16 19:53:59 +0800 CST

什么是 emacsen-common 包?

  • 0

我试图删除 emacs 和所有相关的包,并且几乎删除了 emacsen-common。输出apt remove emacsen-common为:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  atril-common bolt cinnamon-common cjs evince-common evolution-common evolution-data-server-common
  folks-common fonts-mathjax fwupd fwupd-amd64-signed gedit-common gedit-plugins-common gir1.2-champlain-0.12
  gir1.2-cmenu-3.0 gir1.2-gck-1 gir1.2-gcr-3 gir1.2-gdata-0.0 gir1.2-gdm-1.0 gir1.2-gfbgraph-0.2
  gir1.2-ggit-1.0 gir1.2-gmenu-3.0 gir1.2-gnomebluetooth-1.0 gir1.2-graphene-1.0 gir1.2-gtkchamplain-0.12
  gir1.2-gtkclutter-1.0 gir1.2-gtksource-4 gir1.2-gucharmap-2.90 gir1.2-handy-0.0
  gir1.2-javascriptcoregtk-4.0 gir1.2-keybinder-3.0 gir1.2-malcontent-0 gir1.2-meta-muffin-0.0
  gir1.2-mutter-7 gir1.2-nemo-3.0 gir1.2-nma-1.0 gir1.2-rb-3.0 gir1.2-rest-0.7 gir1.2-rsvg-2.0
  gir1.2-timezonemap-1.0 gir1.2-upowerglib-1.0 gir1.2-zpj-0.0 gnome-control-center-data gnome-session-bin
  gnome-session-common gnome-shell-common gnome-software-common gnome-todo-common gstreamer1.0-nice
  gstreamer1.0-pipewire libamtk-5-0 libamtk-5-common libappstream-glib8 libatrildocument3 libcaja-extension1
  libcamel-1.2-62 libchamplain-0.12-0 libchamplain-gtk-0.12-0 libcjs0 libcolord-gtk1 libdee-1.0-4
  libebackend-1.2-10 libebook-1.2-20 libebook-contacts-1.2-3 libecal-2.0-1 libedata-book-1.2-26
  libedata-cal-2.0-1 libedataserver-1.2-25 libevdocument3-4 libfarstream-0.2-5 libflashrom1 libflatpak0
  libfolks25 libfreerdp2-2 libftdi1-2 libfwupd2 libfwupdplugin1 libgadu3 libgcab-1.0-0 libgdl-3-5
  libgdl-3-common libgdm1 libgit2-glib-1.0-0 libgnome-autoar-gtk-0-0 libgnome-menu-3-0 libgnome-todo
  libgpod-common libgpod4 libgspell-1-common libgucharmap-2-90-7 libhandy-0.0-0 libimage-magick-perl
  libimage-magick-q16-perl libimagequant0 libjcat1 libjs-mathjax libkpathsea6 libmagick++-6.q16-8
  libmalcontent-0-0 libmalcontent-ui-0-0 libmeanwhile1 libmuffin0 libmutter-7-0 libnss-myhostname
  libostree-1-1 libpotrace0 libpst4 libpurple-bin libpurple0 libsgutils2-2 libsmbios-c2 libsynctex2
  libtepl-5-0 libtimezonemap-data libtimezonemap1 libunity-protocol-private0 libunity-scopes-json-def-desktop
  libunity9 libvncserver1 libwinpr2-2 libwpe-1.0-1 libwpebackend-fdo-1.0-1 libxmlb1 libytnef0 libzephyr4
  malcontent malcontent-gui metacity-common muffin-common mutter-common pidgin-data python-tinycss2-common
  python3-bs4 python3-evdev python3-html5lib python3-lxml python3-magic python3-mako python3-olefile
  python3-pampy python3-pil python3-scour python3-soupsieve python3-tinycss2 python3-tz python3-webencodings
  realmd shotwell-common switcheroo-control unoconv xdg-dbus-proxy xdg-desktop-portal xdg-desktop-portal-gtk
  xwayland yelp-xsl zenity-common
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libbotan-2-17 libtspi1 thunderbird
Suggested packages:
  fonts-lyx
Recommended packages:
  myspell-en-us | hunspell-dictionary | myspell-dictionary
The following packages will be REMOVED:
  aspell aspell-en aspell-es atril chrome-gnome-shell cinnamon cinnamon-control-center-goa cinnamon-core
  cinnamon-desktop-environment dictionaries-common emacsen-common enchant-2 evince evolution
  evolution-data-server evolution-plugin-bogofilter evolution-plugin-pstimport evolution-plugins gdm3 gedit
  gedit-plugin-bookmarks gedit-plugin-bracket-completion gedit-plugin-character-map gedit-plugin-code-comment
  gedit-plugin-color-picker gedit-plugin-color-schemer gedit-plugin-commander gedit-plugin-draw-spaces
  gedit-plugin-find-in-files gedit-plugin-git gedit-plugin-join-lines gedit-plugin-multi-edit
  gedit-plugin-session-saver gedit-plugin-smart-spaces gedit-plugin-synctex gedit-plugin-terminal
  gedit-plugin-text-size gedit-plugin-translate gedit-plugin-word-completion gedit-plugins gir1.2-evince-3.0
  gir1.2-webkit2-4.0 gnome gnome-calendar gnome-contacts gnome-control-center gnome-core gnome-documents
  gnome-getting-started-docs gnome-maps gnome-online-accounts gnome-remote-desktop gnome-session gnome-shell
  gnome-shell-extension-prefs gnome-shell-extensions gnome-software gnome-sushi gnome-todo gnome-tweaks
  gnome-user-docs gnote hunspell-en-us hyphen-en-us inkscape ispanish libatrilview3 libedataserverui-1.2-2
  libenchant-2-2 libevolution libevview3-3 libfolks-eds25 libgoa-backend-1.0-1 libgspell-1-2 libgtkspell0
  libgtkspell3-3-0 libwebkit2gtk-4.0-37 libyelp0 lightdm-webkit2-greeter lutris muffin myspell-es
  mythes-en-us pidgin rhythmbox-plugins shotwell steam-launcher task-cinnamon-desktop task-gnome-desktop
  wspanish yelp zenity
The following NEW packages will be installed:
  libbotan-2-17 libtspi1 thunderbird
0 upgraded, 3 newly installed, 92 to remove and 0 not upgraded.
Need to get 51.0 MB/52.8 MB of archives.
After this operation, 178 MB disk space will be freed.
Do you want to continue? [Y/n] 

那个包是什么,为什么它试图删除所有其他包?

apt emacs
  • 2 个回答
  • 279 Views
Martin Hope
Eric Hansen
Asked: 2019-03-06 18:34:52 +0800 CST

如何让 Emacs 守护进程在远程持久化

  • 1

我目前的工作流程包括使用 PuTTY 将 SSH 连接到具有许多用户的 Linux 开发盒中。我使用 Emacs 守护进程来避免关闭 Emacs 会话时的长时间启动。然而,Emacs 守护进程在我的 SSH 会话结束时死掉了。我想知道是否有一种方法可以生成守护进程,使其在关闭 SSH 会话之后仍然存在?到目前为止,我看到的唯一解决方案是在 Tmux 中使用 Emacs,但我更喜欢 GUI Emacs。

ssh emacs
  • 1 个回答
  • 368 Views
Martin Hope
Adam G
Asked: 2019-01-24 09:38:48 +0800 CST

Ubuntu Emacs '无效的读取语法:)' 错误

  • 0

我正在尝试重新绑定退格键以实际执行向后删除而不是 Ch ?在 ubuntu 上的 emacs 中。

在我的.emacs.el初始化文件中,我有(global-set-key [(control ?h)] 'delete-backward-char')

在emacs启动时我得到Invalid read syntax: )

emacs
  • 1 个回答
  • 73 Views
Martin Hope
Blcknx
Asked: 2018-11-30 11:02:04 +0800 CST

如何设置和确定 Bash 的命令行编辑模式?

  • 12

如何设置Bashvi或emacs命令行编辑模式以及如何确定当前设置的模式?

bash emacs
  • 3 个回答
  • 4449 Views
Martin Hope
micholeodon
Asked: 2018-11-08 07:19:32 +0800 CST

将 .org 转换为 .xml 的脚本

  • 1

我想将.org文件中编写的树转换为一些 XML 代码,以便稍后从中生成图形树(例如将其加载到www.draw.io网页)。

树的例子

为此,我需要一个bash 脚本来转换包含以下内容.org的文件:

* tree_root
** root_node_1
*** subnode
** root_node_2

文件.xml包含:

<mxCell id="b1" value="tree_root" > </mxCell>
<mxCell id="b2" value="root_node_1" ></mxCell>
    <mxCell id="a1" source="b2" target="b1">
<mxCell id="b3" value="subnode" ></mxCell>
    <mxCell id="a2" source="b3" target="b2">
<mxCell id="b4" value="root_node_2" ></mxCell>
    <mxCell id="a3" source="b4" target="b1">

在 org 模式中,标题用星号表示(*- 一级标题,**- 二级标题等)

说明:

  • 调用的字段id是显示在框中的名称。
  • b1、b2、b3代表“box”,.org文件中按行号枚举的名称,
  • a1,a2,a3代表“箭头”是后面的自然数枚举的名字,
  • source是id箭头开始的地方,target是id箭头指向的地方。

我需要一些简单的案例,例如 6 级深度最大值。我会自己扩展它,但我需要一些东西作为开始。

这个怎么做?

bash emacs
  • 1 个回答
  • 99 Views
Martin Hope
codeblazer
Asked: 2018-07-23 11:29:31 +0800 CST

使用 emacs 的 query-replace-regexp 从 C 中的全局声明中生成 extern 声明

  • 2

我在 .c 文件中有大量以下全局声明:

fi_status_t ACLINFRA_CORE_OK = { { e_FI_STAT_MODULE_ACLINFRA, e_FI_STAT_ACLINFRA_SUBMOD_CORE, e_FI_STATUS_OK }, NULL };
fi_status_t ACLINFRA_CORE_ERR_GDFW_REG_FAILED = { { e_FI_STAT_MODULE_ACLINFRA, e_FI_STAT_ACLINFRA_SUBMOD_CORE, e_CORE_ERR_GDFW_REG_FAILED }, NULL };
fi_status_t ACLINFRA_CORE_ERR_DHAS_REG_FAILED = { { e_FI_STAT_MODULE_ACLINFRA, e_FI_STAT_ACLINFRA_SUBMOD_CORE, e_CORE_ERR_DHAS_REG_FAILED }, NULL };
fi_status_t ACLINFRA_CORE_ERR_GDFW_REQ_FAILED = { { e_FI_STAT_MODULE_ACLINFRA, e_FI_STAT_ACLINFRA_SUBMOD_CORE, e_CORE_ERR_GDFW_REQ_FAILED }, NULL };

现在,我已将它们拉出并粘贴到一个.h文件中。但是我如何使用 emacs 轻松地将它们转换为extern使用的等效声明query-replace-regexp?

extern 声明如下所示:

extern fi_status_t ACLINFRA_CORE_OK;
regular-expression emacs
  • 1 个回答
  • 22 Views
Martin Hope
holmrekR
Asked: 2017-12-27 06:35:17 +0800 CST

如何使'emacs'缩进与标签完全一样'nano'如何......?

  • 2

如何配置~/.emacs以便我缩进nano默认情况下的功能?

  • 使用制表符而不是 5 个空格
  • 我可以在一行中添加任意数量的标签
configuration emacs
  • 1 个回答
  • 129 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve