解压缩并删除emacs中的尾随空格

Xpr*_*rog 13 emacs whitespace

我正在从事大型项目,在那里有大约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

它会在您打开文件时跟踪文件是否"干净"(没有尾随空格和标签),并且在您保存时会自动删除它们,当且仅当您启动时它是干净的.这意味着如果文件开始干净,它将保持文件清洁,并且将保留任何脏的文件(即其他人不遵守规则).


Cha*_*ick 8

从我狡猾的旧.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上述方法.


Joe*_*nte 5

自从我开始使用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)