如何快速跳出括号或引号

可以用awesome-pair

和 yasnippet 使用场景有些类似,但不完全一样。楼主最好能提供一些其他编辑器的动图或者视频,这样更能说明问题。有价值的话自然会有人用 Emacs 来实现。

在 auto-pair 中的hook里 对回车键做修改 让她跳出右括号

以词或者句为单位,在编码中尤为常见,我推荐 smartparens

我尝试用 awesome-pair

启动spacemacs 时报错了

Error loading .spacemacs: (void-variable awesome-pair-mode-map)

配置如下:

(defun dotspacemacs/user-init ()

(add-to-list 'load-path "/home/xx/git/awesome-pair/") 

(require 'awesome-pair)

(defun dotspacemacs/user-config ()

(define-key awesome-pair-mode-map (kbd "M-p") 'awesome-pair-jump-right)

你直接绑定命令啊,没有awesome-pair-mode定义,为啥要这么写?

楼主要的特性应该和语言相关,比如用Intellij IDEA写java,输入new Str自动补全成new String()之后,光标处于括号中间。

此时如果输入双引号,光标会继续在括号内编辑,而如果补全后输入分号,IDEA知道分号不可能在括号内,光标首先会自动跳出括号,然后输入分号。

我觉得,还是 Enter 方便, 比若说在 敲 Enter 的时候,确认当前光标 是否在 刚创建的 surround 内部, 如果是,就跳出这个surround ,如果不是 就直接换行。

这应该没有语言相关性吧,就比如你写文档的时候,用了双引号,然后输入完了想跳出继续写,只要Enter 一下就好

如果是这样

func("xxx")

需要两个括号(一个括号 一个引号) 要怎么处理呢?

这个是个好问题 我觉得autopair能解决

比如写到第三个xEnter光标走到又引号后面,再按Enter光标走到右括号后面,再按Enter换行

几年前刚转emacs时,我也有这样的需求,因为vim里的auto-pair插件有跳出最近surround功能。经过不断的探寻,我最后用了这个,语义上成对的都能跳,而且实现非常简单

最后一项做不到,因为常常在函数里,再按就跳出函数了

如果用回车跳出括号后 再次进入括号里 回车的行为是什么?

没人给弄 那就我来吧

跳出之后就不管了吧,那就是正常的 回车换行了

我不会写 lisp,只是用 :grinning:

这样行不行

(defun myh-tab ()
  (when (looking-at "[])\">`'}]")
    (forward-char)))
(advice-add #'indent-for-tab-command :after #'myh-tab)
(advice-add #'c-indent-line-or-region :after #'myh-tab)



我也有一样的需求,目前是用C-f,感觉还行,因为Ctrl改到了空格旁边,拇指按起来方便。

楼上的方法,看起来可行。明天试试!

可能是语言问题,OP没有“真的在括号里换行”这种场景吗

...(

)
...{

}

这种。

关于自动补全括号造成的问题,我发现的是,留在括号里面会使补上末尾的; ,很麻烦。于是有了这个帖子: