关于 abbrev-mode 展开后多一个空格

相信大家对这个mode都不陌生

但是我用起来有个小问题

补全后 后面会莫名的多一个空格 (强迫症 莫怪 )

需求是这样的 我把平常ssh 比较多的地址 都写在abbrev里面了

密码也是

然后就补全了密码 每次多个空格 需要手动去掉 回车 。。。。。

有没有人知道怎么搞

abbrev-mode 会根据每个mode设置不同的abbrev

你在哪个mode里面用?

你可以把相应mode中的abbrev贴出了看看

M-x edit-abbrevs 找到相应的mode

我是设置在global的 文本肯定是没有问题的。。。。。补全后自动会加一个空格的

abbrev-mode 「自动」展开的依据就是你输入的这个空格(或者别的标点符号),这个标点本身就有意义,自然应该保留。

你可以用 C-x a e (expand-abbrev) 「手动」展开,这样就不需要输入一个额外的标点符号。 也可以试试用 pre-abbrev-expand-hook 进一步定制,这有个相关问题可以参考(不过跟你的问题不同):

可能你需要的是这个

(defun cm/magic-space ()
         "If there is abbrev expand it, otherwise insert a space"
         (interactive)
         (cond ((expand-abbrev))
               (t
                (cl-letf (expand-abbrev) (self-insert-command 1)))))

绑定到SPC下

代码借鉴于auto-yasnippet的aya-open-line

注意我没有试过expand-abbrev我只尝试了yas-expand 但是根据abo-abo的代码来看, 应该是可行的

1 个赞

好的谢谢 !!!!

好的 我试一下 感谢

也可以结合着company-mode的post-completion