在实践中,我经常遇到以下情况:
statement_line /*..some comments..*/
有时我需要跳转到只是将statement_line的结尾传递给:添加一些代码,或删除整个注释区域。
是否有键盘快捷键可以执行此操作? (我知道 C-s; Ret 适用于以&#34 ;;&#34结尾的statement_line;但并非所有情况都是如此。例如if(...) /*...comments...*/
)
提前致谢。
答案 0 :(得分:1)
试试这段代码:
(defun end-of-statement ()
(interactive)
(beginning-of-line)
(if (comment-search-forward (line-end-position) t)
(re-search-backward "//\\|/\\*")
(end-of-line))
(skip-chars-backward " \t"))
我刚刚写了它,所以它可能需要一些调整,但它看起来 此刻很好。
答案 1 :(得分:1)
不是对您的问题的完整答案,但对于您要删除评论的情况,您可以使用C-u M-;
(又名comment-kill
)。
答案 2 :(得分:1)
我有一个命令在行尾和代码结束之间跳转。它适用于大多数编程模式。
(defun end-of-line-code ()
(interactive "^")
(require 'newcomment)
(if comment-start-skip
(save-match-data
(let* ((bolpos (line-beginning-position)))
(end-of-line)
(if (comment-search-backward bolpos 'noerror)
(search-backward-regexp comment-start-skip bolpos 'noerror))
(skip-syntax-backward " " bolpos)))
(end-of-line)))
(defun end-of-line-or-code ()
"Move to EOL, or if already there, to EOL sans comments."
(interactive "^")
(if (eolp) ;; test me here
(end-of-line-code)
(end-of-line)))
(put 'end-of-line-or-code 'CUA 'move)
(defun jpk/prog-mode-hook ()
...
(local-set-key (kbd "C-e") 'end-of-line-or-code)
...
)
(add-hook 'prog-mode-hook 'jpk/prog-mode-hook)
我有一个类似的命令,它在行的开头和文本的开头之间反弹,如果你有兴趣我可以发帖。