Open gbaoye opened 3 years ago
需要些什么处理?查找和替换?
需要些什么处理?查找和替换?
对的,类似于弹出一个批处理的UI,然后,添加一些简单的编辑选项,对文件夹内所有的文本进行批量处理,这是一个非常伟大的功能,无论以后文本编译类的软件有多么的先进好用,而你的软件会在他们的电脑中,有着无法取代的地位。
只能做个皮,对下面三个工具进行包装:
自己写个工具不能保证性能。
只能做个皮,对下面三个工具进行包装:
- https://github.com/BurntSushi/ripgrep (VS Code 使用这个工具,不支持 .hgignore 文件)
- https://github.com/ggreer/the_silver_searcher (支持 glob 形式的 .hgignore 文件)
- grep (需要自己编译不依赖 cygwin 或 msys 的,比如 http://gnuwin32.sourceforge.net/packages/grep.htm
自己写个工具不能保证性能。
谢谢.....
我也非常喜欢你写的Notepad2工具,很轻量,很好用,但是美中不足的就是不能自带的批量查找和替换指定目录及子目录里面的所有文件。建议作者大牛增加这个功能,那就完美了。类似于sublime的在文件夹中查找替换的功能,非常感谢,盼回复
可以先用 https://tools.stefankueng.com/grepWin.html 打开 https://tortoisesvn.net/ 点右上面的 Other tools 打开 https://tools.stefankueng.com/
可以先用 https://tools.stefankueng.com/grepWin.html 打开 https://tortoisesvn.net/ 点右上面的 Other tools 打开 https://tools.stefankueng.com/
不不不,你误会我们了,我们对你寄予厚望,我们希望你可以代替notepad++,如果可以,你可以改掉你的名字,因为太2了,这是你的软件,以你的方式命名,不是notepad1,notepad2,notepad3,你可以尊重你那些先驱者,但是,别忘记这是你的东西,世间万物尤甚于此,优胜劣汰,有些东西应该被提起,但是不该被铭记,就像notepad++一样
可以先用 https://tools.stefankueng.com/grepWin.html 打开 https://tortoisesvn.net/ 点右上面的 Other tools 打开 https://tools.stefankueng.com/
大牛,我和gbaoye的意思就是希望你的notepad2工具能够强大到代替其他的开发工具。 需求背景是这样的: 我们是做程序开发的,特别是像php和html及js等不需要像java那样编译的开发,之前是用Adobe Dreamweaver,后面又用了phpstorm,vscode等不同的工具,像我们开发经验在10年以上的,已经不需要那些繁重的工具,恰恰相反,我们只需要像记事本这样简单的工具就能满足我们,越简单越好,多年以前我一直用基础的notepad2版本,比系统自带的记事本强大,后来接触了大牛你的notepad2版本,发现除了强大记事本的功能外还发现支持各种语言语法展示及提示,那这样就能满足我们90%开发工具的需求,但是使用过程中发现有一点无法满足我们,就是查找或者替换现在只能基于当前打开的文档,而不能批量搜索整个目录及子目录, 也就是像notepad++或sublime或者dreamweaver那样的在文件夹中查找替换,我们是希望在现在notepad2的查找或者替换的时候,支持指定目录及子目录,而不是借助其他工具,借助其他工具,就又搞麻烦了,还不如用notepad++或sublime。因为这个操作是经常要做的,这样就能满足我把notepad2作为开发工具的需求了。 我应该说明白了吧。感谢
在文件夹中查找的时候列出匹配到的关键词,替换的时候告诉我哪些替换了,可以新开个对话窗口之类的列表就可以。
谢谢,简而言之就是 Find in files,有这个功能,就可以100%满足我作为php,html,JS 甚至C++和java的开发了,希望保持目前快速打开文件的性能,不要加太多臃肿的功能上去,我就是喜欢用notepad2打开文件,瞬间打开的感觉。感谢并支持你zufuliu。
好像SciTE就有这个功能
@zufuliu 除了 Find in files 应该对应的还有Replace in files 。 @PNBRQK 虽然这个有,但是我感觉notepad2 还是更简洁快速,只缺这个在文件夹中查找和替换了。
个人愚见:
首先明确一下概念:单标签 (Single-tab)
和多标签 (Multi-tab)
程序。明显,Notepad2 是单标签
;Notepad++ 是多标签
。
然后,没有Find/Replace in Files
就可以理解了。
多标签
程序一个进程可以打开多个文件,会有Session
和Workspace
的概念;单标签
程序一个进程只可以打开一个文件,没有Session
和Workspace
的概念(多个进程之间难协调)。
没有Workspace
概念的话,加Find/Replace in Files
反倒有些突兀……
Write programs that do one thing and do it well.
Write programs to work together.
专门的事情留给专门的软件做,继续保持Notepad2
的小而美也挺好的~
This feature depends on issue #382.
有人有兴趣试一下 CI Artifacts,给一些反馈吗? 用法在 #758 。 如果再能增加自定义按钮,对于喜欢用鼠标的也方便了。 CC: @Leroy-X
https://github.com/zufuliu/FindInFiles is "Find in Files" prototype (in C#), we can use this as workaround (e.g. ship with v4.24.03) before porting the code to C/C++.
Here is the program (requires .NET Desktop Runtime 8) and screenshot: FindInFiles-20240127.zip
@Sergy2001, @lifenjoiner any of you interested in porting the code to Notepad2, major works:
SciTEWin::ExecuteOne()
from SciTE's SciTEWin.cxx).I think we can use main window as find result window (adding "Find in Files" mode in addition to normal and "Paste Board" modes, launch Notepad2 in this mode after click "Find in Files"), this would have less changes than put Scintilla window on the "Find in Files" dialog, and we can add more controls (to expose more options) on the dialog.
Here is the program
Latest build is available at https://github.com/zufuliu/FindInFiles/actions, just unpack FindInFiles.zip
and ripgrep (rg.exe
, please download from https://github.com/BurntSushi/ripgrep/releases) to the same folder as Notepad2.exe
.
喔~ 您又花这么大力气专门写了一个程序!Respect ~
我的想法是这样的:
通过参数 /content /searchpath:"%cd%"
切换到 grepWin
,并通过其 editorcmd=notepad2 /g %line% %path%
配置切换回来,是一种无需额外维护的简单方法。
这将是一种弱耦合,但足够好,模块化,并实现了“替换所有文件”的需求。
顺便说一下:用户甚至可以配置其他外部工具,这将是灵活的。
Switching into grepWin
by parameters /content /searchpath:"%cd%"
, and switching back by its editorcmd=notepad2 /g %line% %path%
config, is an easier way without extra maintenance.
It will be weak coupling, but good enough, modular, and solves "replace in files".
BTW: Even, users may configure their other external tools, that will be flexible.
The prototype is just 300 lines (C#), and already works for most task, the drawback is it's depends on .NET. I like the highlighted output (very close to VSCode, which also uses ripgrep for Find in Files). the output is better than grepWin's list box, without highlighting we could make a simple wrapper for exiting grep tools.
For grepWin, choose "content" mode (UI: right bottom; CLI: /content) will be a bit better, although still no highlight.
BTW:
- I found dnGrep with highlight
It's also C# (WPF + ICSharpCode.AvalonEdit?). DocFetcher requires Java, AstroGrep requires .NET Framework 4.5 (should not a problem for most user). I can convert my prototype to .NET Framework + Json.NET to remove the dependecy on .NET Desktop Runtime.
Standalone 27 KB FindInFiles.exe
for .NET Framework 4.8 is available at https://github.com/zufuliu/FindInFiles/actions (e.g. download FindInFiles-net4.8
from https://github.com/zufuliu/FindInFiles/actions/runs/7710478194).
喔~ 您又花这么大力气专门写了一个程序!Respect ~
我的想法是这样的:
通过参数
/content /searchpath:"%cd%"
切换到grepWin
,并通过其editorcmd=notepad2 /g %line% %path%
配置切换回来,是一种无需额外维护的简单方法。 这将是一种弱耦合,但足够好,模块化,并实现了“替换所有文件”的需求。顺便说一下:用户甚至可以配置其他外部工具,这将是灵活的。
Switching into
grepWin
by parameters/content /searchpath:"%cd%"
, and switching back by itseditorcmd=notepad2 /g %line% %path%
config, is an easier way without extra maintenance. It will be weak coupling, but good enough, modular, and solves "replace in files".BTW: Even, users may configure their other external tools, that will be flexible.
notepad4 支持传出当前编辑文件的父级目录地址么? %cd% ?还是批处理的元字符?
最关键的是notepad4能否考虑实现调用外部程序并传递当前路径作为一个参数 @zufuliu
Neither is supported, only system environment variables are supported when using "Tools -> Run Command...": https://github.com/zufuliu/notepad4/blob/2309bc4ab7f92b66c862f48f1da65f7476fa666e/src/Dialogs.cpp#L506-L507
Neither is supported, only system environment variables are supported when using "Tools -> Run Command...":
这样还是太不方便,可以和metapath一样加一个按钮和菜单项吗?
简单而快速的批处理任务,在文本编辑软件中,有着无法取代的位置。