从it may be a good idea to have lines that are not wider than 80 characters in code files开始,使用Emacs在现有项目中递归识别这些行的最有效方法是什么?
更新
使用Trey的建议,我目前正在使用以下代码:
(defun find-long-lines (base-dir)
"Recursively look for lines longer than 80 characters files"
(interactive "DPath:")
(grep-compute-defaults)
(rgrep "^................................................................................." "*" base-dir))
与空白模式结合使用效果很好。
答案 0 :(得分:4)
我无法满足EMACS特定的解决方案,但您可以稍微更改命令以包含文件名(并输入更少)。
rgrep "^.\{81\}" . -n (include line numbers)
rgrep "^.\{81\}" . -c (summary view per file)
交互式rgrep提示不需要引号。
rgrep RET
^。{81} RET
文件类型RET
路径
答案 1 :(得分:3)
您可以使用igrep-find
并使用匹配81(+)字符的正则表达式,如下所示:
M-x igrep-find ^.................................................................................. RET /path/to/area/to/search/* RET
然后你在编译模式下得到一个缓冲区,让你轻松跳转到每个违规行(通过鼠标点击,或 Cx` 或 Mx next-error )。
或者,您可以使用内置的M-x grep-find并使用相同的正则表达式。
要输入81 .
,请输入 C-u 81。。
而且,如果你想让这一切都包含在一个命令中(提示你输入文件的路径),你可以使用它:
(defun find-lines-longer-than-80 (files)
"Recursively look for lines longer than 80 characters files"
(interactive (list (igrep-read-files)))
(igrep igrep-program "^................................................................................." files igrep-options))
Emacs Wiki上提供了Find Long Lines的其他一些提示,包括在您访问文件时突出显示长度超过80个字符的行的几个选项。