【已解决】括号补全后希望光标位于括号内

我的配置

(electric-pair-mode 1)
(setq electric-pair-text-pairs '(
                                   (34 . 34)
                                   (8216 . 8217)
                                   (8220 . 8221)
                                   (?\“ . ?\”)
                                   (?\{ . ?\})
                                   (?\《. ?\》)
                                   (?\「. ?\」)
                                   (?\< . ?\>)
                                   (?\【. ?\】)
                                   ) )

输入《》【】「」等括号时,光标出现在右边括号的外面,而我希望光标出现在括号中间。不知道是否有办法可以实现呢?

最好是用emacs自带的功能就能实现;如果需要安装其他包,请写明。谢谢。

你用 emacs -Q 试过了吗?

fingertip加点快捷键应该就实现了。

他这是没排除干扰因素就来提问,我先前的回帖是委婉提醒。

$ emacs -nw -Q --eval "\
  (progn
    (electric-pair-mode 1)
    (setq electric-pair-text-pairs '(
                                     (34 . 34)
                                     (8216 . 8217)
                                     (8220 . 8221)
                                     (?\“ . ?\”)
                                     (?\{ . ?\})
                                     (?\《. ?\》)
                                     (?\「. ?\」)
                                     (?\< . ?\>)
                                     (?\【. ?\】)
                                     ))
    (execute-kbd-macro \"「a\") ;; <- 模拟按键输入 「a
    (print (buffer-string)))" --batch

"「a」"

首先,感谢大佬的提醒和回复。 我是在macOS12.6上使用emacs28.2。在终端复制黏贴你的代码输出结果跟你的一样。

但是, 在终端用$ emacs -Q 打开emacs,然后在*scratch*里面尝试输入:

  1. 输入{ [ " ' 都不会自动补全。因为emacs默认没有打开electric-pair-mode

  2. 但是此时,再按Shift ,输入书名号《》,就会自动补全,并且光标在右边书名号之后。不知道是什么在起作用 :thinking:

  3. 然后粘贴以下代码之后,C-x C-e。再输入{ [ 会自动补全,光标在括号中间。但是,输入 是出现了《》|》 【竖线为光标位置】。

(progn
    (electric-pair-mode 1)
    (setq electric-pair-text-pairs '(
                                     (34 . 34)
                                     (8216 . 8217)
                                     (8220 . 8221)
                                     (?\“ . ?\”)
                                     (?\{ . ?\})
                                     (?\《. ?\》)
                                     (?\「. ?\」)
                                     (?\< . ?\>)
                                     (?\【. ?\】)
                                     )))

我只能大概举两个例子,无法猜测你电脑上所有的可能:

  1. 你定义了系统 text shortcuts
  2. 你的输入法有补全功能。

你应该一开始就主动提供详细的步骤和环境信息。

谢谢你!确实是我使用的搜狗输入法导致这个问题。 开启搜狗输入法的“自动补全成对标点”功能就行了。不需要对emacs做额外设置。

另外,谢谢你指点我提问的姿势,这方面我还有待学习。我不太懂技术类的东西。你一开始提起 emacs -Q的时候,我终端里连emacs都召唤不出来,终端找不到我安装的emacs。 :sweat_smile:

再次感谢你百忙中的热心指点 :smiling_face:, 我也从中学习到很多新知识, Thanks♪(・ω・)ノ。

1 个赞
# Start Emacs Without Loading Init File
emacs -q

# Start Emacs with Different Init File
emacs -q -l <InitFilePath>

Quote from Xah’s guide.