Emacs,在 React 尖括号中向前和向后
Emacs, forward & backward in React angle brackets
假设你有
<Foo>
<Bar>
hello
</Bar>
</Foo>
当我在 <Foo>
附近时,我想去 </Foo>
,反之亦然。
简单的要求,但我很难实现。
forward-sexp
(不确定它来自哪里)转发正常,但向后不能很好地与 backward-sexp
一起使用
C-c C-f
(绑定到 sgml-skip-tag-forward
)和 C-c C-b
(绑定到 sgml-skip-tag-backward
)似乎在 mhtml-mode
中工作正常。当您编辑 React.js 代码时,您可能处于 js3-mode
中,因此您可以切换到 mhtml-mode
(这可能是不可取的)或将上面的命令绑定到 js3-mode
键盘映射:
(define-key js3-mode-map (kbd "C-c C-c C-f") 'sgml-skip-tag-forward)
(define-key js3-mode-map (kbd "C-c C-c C-b") 'sgml-skip-tag-backward)
因为 C-c C-c
是 js3-mode-map
中的前缀。
编辑:OP 表示他使用的是 rjsx-mode
,而不是 js3-mode
,这需要对上述内容进行小的改动。主要区别在于需要修改 rjsx-mode-map
而不是 js3-mode-map
。另一个区别是 rjsx-mode-map
没有将 C-c C-c
定义为前缀键,因此必须将键绑定更改为其他内容,或者我们也将 C-C C-c
设为此映射中的前缀键- 这是完成后者的一种方法:
(let ((foo (make-sparse-keymap)))
(define-key rjsx-mode-map (kbd "C-c C-c") foo))
(define-key rjsx-mode-map (kbd "C-c C-c C-f") 'sgml-skip-tag-forward)
(define-key rjsx-mode-map (kbd "C-c C-c C-b") 'sgml-skip-tag-backward)
如果您想将其永久更改,请创建一个执行这三件事的函数并将其添加到您的初始化文件中的 rjsx-mode-hook
。
假设你有
<Foo>
<Bar>
hello
</Bar>
</Foo>
当我在 <Foo>
附近时,我想去 </Foo>
,反之亦然。
简单的要求,但我很难实现。
forward-sexp
(不确定它来自哪里)转发正常,但向后不能很好地与 backward-sexp
C-c C-f
(绑定到 sgml-skip-tag-forward
)和 C-c C-b
(绑定到 sgml-skip-tag-backward
)似乎在 mhtml-mode
中工作正常。当您编辑 React.js 代码时,您可能处于 js3-mode
中,因此您可以切换到 mhtml-mode
(这可能是不可取的)或将上面的命令绑定到 js3-mode
键盘映射:
(define-key js3-mode-map (kbd "C-c C-c C-f") 'sgml-skip-tag-forward)
(define-key js3-mode-map (kbd "C-c C-c C-b") 'sgml-skip-tag-backward)
因为 C-c C-c
是 js3-mode-map
中的前缀。
编辑:OP 表示他使用的是 rjsx-mode
,而不是 js3-mode
,这需要对上述内容进行小的改动。主要区别在于需要修改 rjsx-mode-map
而不是 js3-mode-map
。另一个区别是 rjsx-mode-map
没有将 C-c C-c
定义为前缀键,因此必须将键绑定更改为其他内容,或者我们也将 C-C C-c
设为此映射中的前缀键- 这是完成后者的一种方法:
(let ((foo (make-sparse-keymap)))
(define-key rjsx-mode-map (kbd "C-c C-c") foo))
(define-key rjsx-mode-map (kbd "C-c C-c C-f") 'sgml-skip-tag-forward)
(define-key rjsx-mode-map (kbd "C-c C-c C-b") 'sgml-skip-tag-backward)
如果您想将其永久更改,请创建一个执行这三件事的函数并将其添加到您的初始化文件中的 rjsx-mode-hook
。