假设我有一个文件夹,下面还有一堆子文件夹,每一个文件夹中含若干.js 文件,我想批量把它们全部修改成 .jsx 文件,Emacs 里面有什么高效的做法吗?
我知道可以用 dired,但是貌似不是很高效。
假设我有一个文件夹,下面还有一堆子文件夹,每一个文件夹中含若干.js 文件,我想批量把它们全部修改成 .jsx 文件,Emacs 里面有什么高效的做法吗?
我知道可以用 dired,但是貌似不是很高效。
ls(1)
似乎没法像 ls *.js
这样过滤文件,至少我不知道,但是用 M-x find-dired some-folder -name ‘*.js’ 可以,之后打开(C-x C-q) Wdired mode 编辑。这个目前算是比较好的方法
既然有了wdired mode,也就无需过滤什么文件了,用iedit-mode或者全局替换应该都行的
对,这种方法更好。C-M-% \.js$ RET .jsx RET
贴个图更直观:
是,一目了然。但应该需要第三方插件吧,印象中 visual-regexp 和 anzu 都有这个功能,我原来用过,后来不记得什么原因禁用掉了。
对,这两个插件提供预览.
第一次知道还有rename这个命令~一般rename都用mv了.
哈哈是的,不过感觉rename更像是把文件名作为文本进行文本处理,包括一些正则替换之类的功能
(反正我一般就用来各种改后缀名2333333
如果这之前文件已经打开,那么 emacs 是不知道文件名已经变更了吧,然后自动保存会不会产生一堆新文件?
对于没修改的文件,Auto Save 不会执行任何动作,而一般要重命名前需要保存文件。
对于我的这个需求,可能命令行算是最高效,也是最灵活的了。我这个命令行狂魔,舍近求远了
如果文件夹底下的若干文件已经在 emacs 里打开,还要继续编辑,这个时候 dired 就比 shell 命令好用了。dired 改过之后,所有 buffer 都指向新的文件名,“最近打开”里也不会看到无效路径。
也可以 find-name-dired
然后 wdired。