<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Emacs on 海市如幻，雕虫求真</title><link>https://victorhge.github.io/zh/tags/emacs/</link><description>Recent content in Emacs on 海市如幻，雕虫求真</description><generator>Hugo -- 0.156.0</generator><language>zh</language><copyright>Source code here, licensed under GPLv3 ·</copyright><lastBuildDate>Mon, 02 Mar 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://victorhge.github.io/zh/tags/emacs/index.xml" rel="self" type="application/rss+xml"/><item><title>劈开 Ctrl+Space</title><link>https://victorhge.github.io/zh/posts/ctrl_space/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0800</pubDate><guid>https://victorhge.github.io/zh/posts/ctrl_space/</guid><description>&lt;p&gt;Emacs 拥有大量默认快捷键绑定，不可避免地会与系统快捷键发生冲突，对于 Emacs 新手来说，如何解决这些冲突是一项重大挑战。&lt;/p&gt;
&lt;p&gt;其中最常见的一个是命令 &lt;code&gt;set-mark-command&lt;/code&gt; ，默认键绑定是&lt;code&gt;C-SPC(Ctrl+Space)&lt;/code&gt; &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。在 Windows 系统中， &lt;code&gt;Ctrl+Space&lt;/code&gt; 默认用于切换中英文输入法，这个冲突会导致在 Windows 下的 Emacs 无法使用 &lt;code&gt;Ctrl+Space&lt;/code&gt; 进行标记设置。&lt;/p&gt;</description><content:encoded><![CDATA[<p>Emacs 拥有大量默认快捷键绑定，不可避免地会与系统快捷键发生冲突，对于 Emacs 新手来说，如何解决这些冲突是一项重大挑战。</p>
<p>其中最常见的一个是命令 <code>set-mark-command</code> ，默认键绑定是<code>C-SPC(Ctrl+Space)</code> <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。在 Windows 系统中， <code>Ctrl+Space</code> 默认用于切换中英文输入法，这个冲突会导致在 Windows 下的 Emacs 无法使用 <code>Ctrl+Space</code> 进行标记设置。</p>
<p>要解决这个问题，可以选择使用 <code>set-mark-command</code> 的备用快捷键 <code>C-@</code> ，或者禁用
Windows 的 <code>Ctrl+Space</code> 功能。此外，由于空格键左右手操作同样方便，还有“第三选择: 把 <code>Ctrl+Space</code> 一分为二，一侧的 <code>Ctrl+Space</code> 留给 Windows，另一侧释放出来供
Emacs 或其他应用程序使用。这正是我采用的方案，因为这样我就可以保留用两个大拇指操作的习惯。</p>
<p>在最新的 Windows 11 下可以这么做：</p>
<ol>
<li>
<p>找到 <code>Settings &gt; Time &amp; Language &gt; Language &amp; region &gt; Options &gt; Microsoft Pinyin &gt; Keys</code> , 取消勾选 <code>Ctrl + Space</code> ，保留勾选 <code>Shift</code> 。<img loading="lazy" src="/ox-hugo/disable_Ctrl+Space.png"></p>
</li>
<li>
<p>打开 PowerToys (没有的话先安装）， 在 Keyboard Manager 功能中，添加一个快捷键重映射：将 <code>Ctrl(Left) + Space</code> 映射为 <code>Shift</code> 或者 <code>Win(Left) + Space</code> 。<img loading="lazy" src="/ox-hugo/remap_shortcuts.png"></p>
</li>
</ol>
<p>此前的 Windows 版本存在一个 UI 无法更改相关设置的缺陷<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>，可以通过修改注册表解决：</p>
<ol>
<li>找到 <code>HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000010</code> 条目，
将其中的 <code>Key Modifiers</code> 修改为 <code>02 80 00 00</code> , 或者 <code>02 40 00 00</code> <sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>。</li>
<li>如果希望将更改应用于所有新用户，还需要在 <code>HKEY_USERS\.DEFAULT\Control Panel\Input Method\Hot Keys\00000010</code> 中进行同样的修改。</li>
</ol>
<p>修改完成后，重启电脑即可生效。</p>
<p>似乎只有 <code>Ctrl+Space</code> 才能“劈开”， 其他的键天然的只对一只手来说顺手，比如<code>Ctrl+a</code> 就已经隐含着 <code>Right Ctrl+a</code> 。</p>
<h2 id="脚注">脚注</h2>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Emacs 有独特的键位的缩写习惯，用 <code>C-SPC</code> 代表 <code>Ctrl+Space</code> 。本文暂且保留常用习惯。&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p><a href="https://superuser.com/questions/327479/ctrl-space-always-toggles-chinese-ime-windows-7">https://superuser.com/questions/327479/ctrl-space-always-toggles-chinese-ime-windows-7</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>02 指Ctrl, 80 指左侧，40指右侧<a href="https://learn.microsoft.com/en-us/windows/win32/tsf/tf-mod--constants">https://learn.microsoft.com/en-us/windows/win32/tsf/tf-mod--constants</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>交换 Ctrl 和 Alt 键</title><link>https://victorhge.github.io/zh/posts/swap_ctrl_alt/</link><pubDate>Wed, 25 Feb 2026 20:59:00 +0800</pubDate><guid>https://victorhge.github.io/zh/posts/swap_ctrl_alt/</guid><description>&lt;figure&gt;
&lt;img loading="lazy" src="https://victorhge.github.io/ox-hugo/lisp-machine-keyboard-2.jpg"/&gt;
&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;这篇修改过&lt;strong&gt;翻译腔&lt;/strong&gt;的问题。原文放在后面，留作纪念。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="修订版"&gt;修订版&lt;/h2&gt;
&lt;p&gt;这是我所有计算机上的必备配置，全是因为 Emacs。&lt;/p&gt;
&lt;p&gt;Emacs 最早是 TECO 编辑器的宏程序(&lt;a href="https://blog.djmnet.org/2008/08/05/origin-of-emacs/"&gt;Editing MACroS&lt;/a&gt;)。当年开发者用的键盘，Ctrl 键在空格键两侧&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;，大拇指就能按，所以 Emacs 最常用的命令都是用 Ctrl 修饰。不知为何，后来的个人电脑标准键盘把 Ctrl 移到了最边上，在这些键盘上使用 Emacs 就显得不太顺手。&lt;/p&gt;</description><content:encoded><![CDATA[<figure>
    <img loading="lazy" src="/ox-hugo/lisp-machine-keyboard-2.jpg"/> 
</figure>

<blockquote>
<p>这篇修改过<strong>翻译腔</strong>的问题。原文放在后面，留作纪念。</p>
</blockquote>
<h2 id="修订版">修订版</h2>
<p>这是我所有计算机上的必备配置，全是因为 Emacs。</p>
<p>Emacs 最早是 TECO 编辑器的宏程序(<a href="https://blog.djmnet.org/2008/08/05/origin-of-emacs/">Editing MACroS</a>)。当年开发者用的键盘，Ctrl 键在空格键两侧<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>，大拇指就能按，所以 Emacs 最常用的命令都是用 Ctrl 修饰。不知为何，后来的个人电脑标准键盘把 Ctrl 移到了最边上，在这些键盘上使用 Emacs 就显得不太顺手。</p>
<p>我的解决办法是把 Ctrl 和 Alt 互换，让 Ctrl 回到大拇指能按到的位置。这样就可以用大拇指来操作 Emacs 最常用的命令，既轻松又高效。</p>
<p>具体方法：</p>
<ul>
<li>Windows 用<a href="https://github.com/randyrants/sharpkeys"> SharpKeys </a> 改键位；</li>
<li>Linux (GNOME 桌面)用 GNOME Tweak Tool直接设置<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</li>
</ul>
<p>这是一个“一旦用上就再也回不去”的设置。它还有一个“隐藏功能”——让试图操作我键盘的人抓狂。</p>
<h2 id="原版">原版</h2>
<p>这是我所有所用计算机上的必备配置，全是因为 Emacs。</p>
<p>Emacs 最初是为 TECO 编辑器开发的宏程序(<a href="https://blog.djmnet.org/2008/08/05/origin-of-emacs/">Editing MACroS</a>)。当时的开发者所用键盘布局将 Ctrl 键放在空格键两侧<sup id="fnref1:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>，便于大拇指操作。不知什么原因，微型机普及后的标准键盘却将 Ctrl 键移至最外侧，只能靠小拇指操作。这种设计容易导致小拇指疲劳。</p>
<p>因此，我选择交换 Ctrl 和 Alt 键，让 Ctrl 键重回大拇指位置，既缓解小拇指负担，又显著提升效率。</p>
<p>我的具体方法是：</p>
<ul>
<li>Windows：通过<a href="https://github.com/randyrants/sharpkeys"> SharpKeys </a>实现键位重映射。</li>
<li>Linux (GNOME 桌面)：GNOME Tweak Tool可轻松完成设置<sup id="fnref1:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</li>
</ul>
<p>这是一个“一旦用上就回不去”的配置。它还有一个“隐藏功能”——让其他尝试操作我键盘的人抓狂。</p>
<h2 id="脚注">脚注：</h2>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Knight Keyboard <a href="http://xahlee.info/kbd/knight_keyboard.html">http://xahlee.info/kbd/knight_keyboard.html</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>GNOME Treak Tool <a href="https://askubuntu.com/questions/885045/how-to-swap-ctrl-and-alt-keys-in-ubuntu-16-04/885047">https://askubuntu.com/questions/885045/how-to-swap-ctrl-and-alt-keys-in-ubuntu-16-04/885047</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item></channel></rss>