如题:
1----- if ( condition ) {
2----------if ( condition ){
3--------------end;
4----------}
5------}
从 1 到 2 时 c-j 即可, 2 到 3 时也是 c-j 即可,但是从 3 到 4 要怎么办呢?我是先打上 } 然后在移回到 } 在 c-j 感觉方法拙大了.......哪位emacsor能帮个忙,给一下解决方法!谢谢!!!
怎样在emacs中方便的实现这个小功能
-
- 帖子: 20
- 注册时间: 2006-11-21 17:23
-
- 帖子: 768
- 注册时间: 2006-09-20 19:56
C-j,根本不需要。
代码: 全选
(defun c-ret-hook ()
(define-key c-mode-base-map (kbd "RET") 'c-context-line-break))
(add-hook 'c-mode-hook 'c-ret-hook)
-
- 帖子: 768
- 注册时间: 2006-09-20 19:56
-
- 帖子: 20
- 注册时间: 2006-11-21 17:23
-
- 帖子: 768
- 注册时间: 2006-09-20 19:56
-
- 帖子: 14
- 注册时间: 2006-10-15 13:04
贴一下我以前自己设置的c-mode吧,可以实现楼主所想要的功能。
代码: 全选
(add-hook 'c-mode-hook 'linux-c-mode)
(add-hook 'c++-mode-hook 'linux-cpp-mode)
;; 设置imenu的排序方式为按名称排序
(setq imenu-sort-function 'imenu--sort-by-name)
(defun linux-c-mode()
;; 将回车代替C-j的功能,换行的同时对齐
(define-key c-mode-map [return] 'newline-and-indent)
(interactive)
;; 设置C程序的对齐风格
(c-set-style "K&R")
;; 自动模式,在此种模式下当你键入{时,会自动根据你设置的对齐风格对齐
(c-toggle-auto-state)
;; 此模式下,当按Backspace时会删除最多的空格
(c-toggle-hungry-state)
;; TAB键的宽度设置为8
(setq c-basic-offset 8)
;; 在菜单中加入当前Buffer的函数索引
(imenu-add-menubar-index)
;; 在状态条上显示当前光标在哪个函数体内部
(which-function-mode)
)
(defun linux-cpp-mode()
(define-key c++-mode-map [return] 'newline-and-indent)
(define-key c++-mode-map [(control c) (c)] 'compile)
(interactive)
(c-set-style "K&R")
(c-toggle-auto-state)
(c-toggle-hungry-state)
(setq c-basic-offset 8)
(imenu-add-menubar-index)
(which-function-mode)
)