我正在从事大型项目,在那里有大约100名工程师在处理许多文件.我想看看我是否可以在emacs中添加自定义以删除尾随的空格并取消我正在编辑的行.在大文件中解除并删除与我的更改无关的空格并不是一个好主意.(我同意,团队中的每个人都应该遵循一些基本规则.做什么,有时它不会以这种方式工作.:().
目前我启用了:
(show-ws-toggle-show-trailing-whitespace)
(show-ws-toggle-show-tabs)
Run Code Online (Sandbox Code Playgroud)
这些选项出现问题,如果文件的所有者没有修复其标签和尾随空格,它会使所有文件都为黄色或白色.
如果你能指出我的emacs选项会让我"删除我正在编辑的行上的空白和标签"(不是整个文件),那就太棒了.
phe*_*ver 15
这不是你问题的答案.但我怀疑你有兴趣了解它:
http://github.com/glasserc/ethan-wspace
它会在您打开文件时跟踪文件是否"干净"(没有尾随空格和标签),并且在您保存时会自动删除它们,当且仅当您启动时它是干净的.这意味着如果文件开始干净,它将保持文件清洁,并且将保留任何脏的文件(即其他人不遵守规则).
从我狡猾的旧.emacs文件:
(defun clean-whitespace-region (start end)
"Untabifies, removes trailing whitespace, and re-indents the region"
(interactive "r")
(save-excursion
(untabify start end)
(c-indent-region start end)
(replace-regexp "[ ]+$" "" nil start end))) ;// uses literal space and tab chars
Run Code Online (Sandbox Code Playgroud)
M-x clean-whitespace-region选择或标记区域后调用.
untabify根据您当前的tab-width设置替换带有空格的制表符.然后c-indent-region,当我给出具有奇怪tab-with值的文件时,我会使用它(8,4,3和2看起来很常见).
要删除 整个缓冲区中emacs 21+ 中的尾部空格,delete-trailing-whitespace否则使用regexp-replace上述方法.
自从我开始使用Emacs以来,我一直使用ws-trim.el包.它就像一个魅力; 配置并忘记它.
;;;; ************************************************************************
;;;; *** strip trailing whitespace on write
;;;; ************************************************************************
;;;; ------------------------------------------------------------------------
;;;; --- ws-trim.el - [1.3] ftp://ftp.lysator.liu.se/pub/emacs/ws-trim.el
;;;; ------------------------------------------------------------------------
(require 'ws-trim)
(global-ws-trim-mode t)
(set-default 'ws-trim-level 2)
(setq ws-trim-global-modes '(guess (not message-mode eshell-mode)))
(add-hook 'ws-trim-method-hook 'joc-no-tabs-in-java-hook)
(defun joc-no-tabs-in-java-hook ()
"WS-TRIM Hook to strip all tabs in Java mode only"
(interactive)
(if (string= major-mode "jde-mode")
(ws-trim-tabs)))
Run Code Online (Sandbox Code Playgroud)