首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的书签
我的微博
Search
1
在IC617中进行xa+vcs数模混仿
81 阅读
2
科普:Memory Compiler生成的Register file和SRAM有何区别?
73 阅读
3
virtuoso和empyrean alps模拟仿真和混仿教程
73 阅读
4
后仿中$setup,$hold与$setuphold
44 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
35 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vscode
linux
systemverilog
vcs
STM32
PyQT
EDA
FPGA
gvim
cadence
Alist
xilinx
UVM
uos
macos
package
MCU
risc-v
bennyhe
累计撰写
378
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的书签
我的微博
搜索到
378
篇与
的结果
2025-12-30
一招解决MAC软件残留图标
你是否曾经在卸载MAC软件后,发现图标仍然在桌面或者启动台中残留,无法删除?这可能会让人感到困扰和烦恼。今天,我们将为你提供几种有效的方法,帮助你轻松删除这些残留图标,让你的MAC桌面回归整洁。方法一:重新启动「访达」1、在菜单栏中,点击「前往」选项;2、按住「Option」键,点击「库」;3、进入Library文件夹后,找到并打开「Preferences」文件夹;4、在Preferences文件夹中,找到并删除以下文件(如果存在):com.apple.finder.plistcom.apple.sidebarlists.plist注:这两个与「访达」应用程序相关的属性列表(plist)文件。它们存储了与Finder应用程序的偏好设置和侧边栏列表相关的信息。在删除这些文件之前,建议先备份它们,以防万一你需要恢复之前的设置。5、重新启动「访达」,可以按住快捷键「command- option-esc」强制退出。方法二:使用终端命令打开「终端」,可以按住「command+空格」搜索终端,快速打开。在终端中输入「killall Dock」命令解决残留图标问题。方法三:手动删除残留文件1、在菜单栏中,点击「前往」选项。2、按住「option」键,点击「资源库」。3、进入「资源库」文件夹后,找到并打开「Application Support」(应用支持)文件夹。4、在Application Support文件夹中,查找与残留软件相关的文件夹或文件,并将其删除。Caches(缓存)Preferences(偏好设置)Saved Application State(保存的应用状态)5、重复步骤3和4,查找并删除以下文件夹或文件(如果存在):6、 在「访达」中,按住「Option」键,点击「前往」选项。7.、进入「资源库」文件夹,重复步骤3到5,查找并删除相关残留文件夹或文件。8、 最后,重新启动电脑。需要注意的是,在进行任何更改之前,建议先备份重要文件和设置。
2025年12月30日
3 阅读
0 评论
0 点赞
2025-12-30
解决dpkg/apt-get error : 子进程 post-installation script 返回了错误号 1
1 问题发现前段时间安装screen的时候, 直接Ctrl+C终止了, 导致后来安装软件都报错, 错误信息如下有 1 个软件包没有被完全安装或卸载解压缩后会消耗掉 0B 的额外空间您希望继续执行吗?[Y/n] y......dpkg: error processing screen (--configure): 子进程 已安装 post-installation 脚本 返回了错误号 1在处理时有错误发生: screen一键获取完整项目代码2 问题解析一般来说是由于我们在安装的过程中突然中止, 所以导致的环境变量异常, 软件已经可能安装了, 但是系统的信息却没有更新软件的状态信息有误, 状态信息在/var/lib/dpkg/status查看软件的配置信息不全, 位于/var/lib/dpkg/info/.*3 问题解决在解决问题之前, 请先删除出问题的软件包, 等待问题解决后, 再重新安装3.1 方法1 清除状态信息对于dpkg安装的软件包, 我们可以从/var/lib/dpkg/status查看到其安装状态如果希望查看screen的安装状态, 可以使用如下命令查看其在哪一行sudo cat -n /var/lib/dpkg/status | grep "Package: screen" # 查看在某一行一键获取完整项目代码查看到位于第31103行, 然后查看此处的信息sudo cat /var/lib/dpkg/status | tail -n +31103 | head -n 28一键获取完整项目代码由于我们的往问题已经解决, 可以看到我们的状态时安装成功的, 否则的话, 修改文件的内容将状态的信息删除sudo vim /var/lib/dpkg/status一键获取完整项目代码找到Package: ,比如Package: screen删除这部分的描述, 删到下个Package: XXX前就好. 存档后, 再进行操作就OK了。3.2 方法2 清除info文件如果安装成功的软件, info目录下会存储着其安装和配置的脚本信息, 用于在安装和卸载的过程中触发执行, 我们可以检查主要检查文件是否有缺失, 如果有缺失, 那么就删除他们, 然后重装该软件即可sudo rm /var/lib/dpkg/info/.*一键获取完整项目代码比如sudo rm /var/lib/dpkg/info/scerrn.*, 存档后,再进行重新安装就OK了3.3 方法3 重新生成info列表一般来说, 前面两种方法之一即可解决该问题, 如果还是没觉得, 可以重建info列表首先将info文件夹更名备份sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old一键获取完整项目代码cpp1再新建一个新的info文件夹sudo mkdir /var/lib/dpkg/info一键获取完整项目代码更新缓存信息sudo apt-get update, apt-get -f install一键获取完整项目代码恢复info文件夹的内容, 执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_old文件夹下sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old一键获取完整项目代码把自己新建的info文件夹删掉sudo rm -rf /var/lib/dpkg/info一键获取完整项目代码把以前的info文件夹重新改回名字sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info————————————————版权声明:本文为CSDN博主「CHENG Jian」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/gatieme/article/details/52839814
2025年12月30日
2 阅读
0 评论
0 点赞
2025-12-08
windows 知识汇总
右键菜单添加使用gvim打开方式①打开注册表编辑器,开始-->运行-->regedit②定位到:HKEY_CLASSSES_ROOT---> * --->Shell,在Shell 上右击,新建---> 项,输入: Open With gvim(使用vim打开)③在 Open With gvim 右键--->新建--->字符串值,数值名称设置为:Icon,数值数据设置为:C:\MyProgram\gvim73\gVimPortable\vim\vim73\gvim.exe,0数值名称:Icon数值数据:C:\MyProgram\gvim73\gVimPortable\vim\vim73\gvim.exe,0④在刚才新建的项:Open With gvim 下面添加一个新项:Command修改 Commnad 项右边窗口的数值数据为:C:\MyProgram\gvim73\gVimPortable\vim\vim73\gvim.exe %1C:\MyProgram\gvim73\gVimPortable\vim\vim73\gvim.exe %1上面的设置会带来一个小问题:当文件名的最后一个字符为空格时,使用GVIM打开某个文件时会新建一个空白的文件,而不是直接打开该文件。解决方法:加引号,如下:C:\MyProgram\gvim73\gVimPortable\vim\vim73\gvim.exe "%1"效果如下:本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/,如需转载请自行联系原作者
2025年12月08日
6 阅读
0 评论
0 点赞
2025-10-27
各个系统下效率提升工具
windowsutools 快速启动软件文件夹或者自定义功能uTools 是一个极简、插件化的现代桌面软件,通过自由选配丰富的插件,打造得心应手的工具集合。通过快捷键(默认 alt + space )就可以快速呼出这个搜索框。你可以往输入框内粘贴文本、图片、截图、文件、文件夹等等,能够处理此内容的插件也早已准备就绪,统一的设计风格和操作方式,助你高效的得到结果至于好用的截图工具snipaste、历史剪切板工具ditto,ocr 工具等等,在utools 都包含了其功能,甚至是自动化处理流程,utools 还有很多其他插件,等待你去探索,任何一个操作都可以自定义快捷键。还支持window、linux、macos。quicker 自动化鼠标键盘工具,可以自定义自动化工作流、根据当前窗口进程自动弹出自定义操作你的指尖工具箱,提供快捷面板和组合动作定制的自动化工作流神器。 简介 Quicker 是一款专为Windows操作系统设计的高效率工具,它通过引入快捷面板和组合动作功能,致力于简化用户的操作流程,大幅提升工作效率。 Quicker让用户能够创建个性化的捷径,自动化执行一系列复杂任务,并通过多种触发方式快速执行这些任务。 产品功能 快捷面板:提供一键访问常用操作和软件的功能,快速启动应用或执行命令quicker 这个工具除了可以模拟键盘鼠标的任何操作,一键输入用户名密码,还可以识别当前的活动窗口进程,根据不同的活动窗口弹出的操作界面不一样,特别方便,比如识别到当前窗口是wps,按快捷键启动quicker ,弹出的窗口的操作都是wps 的操作。文件或者文件夹快速搜索:Everything"Everything" 是 Windows 上一款搜索引擎,它能够基于文件名快速定文件和文件夹位置。您在搜索框输入的关键词将会筛选显示的文件和文件夹;如果日常生活工作涉及各种文件,那这个工具你绝对不容错过。个人总结:速度非常快,随点随用,比Windows自带的好用太多;搜索全面,连回收站里未清空的文件都能搜索出来;体积很小、完全免费、绿色无广告;支持关键词+检索式检索文档内容搜索:anytxt searchAnytxt Searcher(中文名:文件内容秒搜软件),是一个功能强大的本地全文搜索工具。它内置了一个强悍的文档分析器,几乎可以在1秒以内,搜索出存储在电脑里面所有文字内容。Anytxt Searcher支持对100多种格式文件的全文搜索,包括:文本文档 (txt、cpp、py、java、css 等)Microsoft Outlook电子邮件 (eml)Word文档 (doc、docx)Excel文档 (xls、xlsx)PPT文档 (ppt、pptx)PDF文档格式(pdf)WPS Office文档格式 (wps、et、dps)开放文档格式 (OpenOffice、LibreOffice、ofd 等)电子书格式 (epub、mobi、chm、fb2、azw 等)思维导图格式 (xmind、mm、mmap、lighten 等)图片格式[OCR版] (jpg、png、bmp 等)二进制文件(exe、dll、so 等)压缩归档文件(zip、7z、rar、iso 等)日历 任务 番茄时间管理 :时光序 时光序是一款帮你规划日程、高效完成事务的时间管理应用。它的一大特色之一便是功能强大却不复杂,简约的同时却不简单。 文件浏览&&预览:double commanderDouble Commander 是一款开源的跨平台文件管理软件,灵感来源于 Total Commander,采用了两栏式界面设计,支持 Windows、Linux 和 MacOS 系统。该软件的开发始于 2007 年,旨在提供一个高效、功能丰富的文件管理解决方案。Double Commander 的特点包括对各种文件和压缩包格式的支持,内置文件查看器和文本编辑器,以及可定制的快捷键和外观。用户可以通过插件扩展其功能,满足不同的文件管理需求。优点方面,Double Commander 提供了强大的文件搜索、比较和同步功能,支持批量重命名,且其用户界面可以高度定制,使得文件管理工作更加高效。linuxutools 快速启动软件文件夹或者自定义功能uTools 是一个极简、插件化的现代桌面软件,通过自由选配丰富的插件,打造得心应手的工具集合。通过快捷键(默认 alt + space )就可以快速呼出这个搜索框。你可以往输入框内粘贴文本、图片、截图、文件、文件夹等等,能够处理此内容的插件也早已准备就绪,统一的设计风格和操作方式,助你高效的得到结果至于好用的截图工具snipaste、历史剪切板工具ditto,ocr 工具等等,在utools 都包含了其功能,utools 还有很多其他插件,等待你去探索,任何一个操作都可以自定义快捷键。autokey 自动化鼠标键盘工具,可以自定义自动化工作流AutoKey 是一款专为Linux和X11桌面环境设计的自动化工具,它允许用户通过脚本和快捷方式自动执行常见的输入任务,极大地提高效率。此项目原托管于Google Code,现已全面更新以支持Python 3文件或者文件夹快速搜索: FsearchFSearch 是 Linux 上的一个免费文件搜索工具。据说它的灵感来自于“Everything”搜索引擎,这是一个流行的搜索工具,用于在 Windows上查找文件和文件夹。FSearch 基于 GTK3,用 C 语言编写。除此之外,这使得它在 Linux 上索引和搜索文件时非常快。此外,增加了对使用正则表达式查询的支持,从而实现更快、更灵活的搜索体验。FSearch 有哪些功能?FSearch 是 Linux 上功能丰富的搜索实用程序之一。因此,它带来了以下特性:快速索引即时结果(在输入查询时开始显示结果)高级搜索(支持各种操作符、通配符、修饰符和函数)正则表达式查询过滤器(用于将搜索范围缩小到文件、文件夹或两者都有)快速排序(具有多个排序选项)可定制的用户界面文档内容搜索:docfectcherDocFetcher 直译的意思是“文档获取者”,是一款“站在文件夹顶端”的桌面全文检索引擎。DocFetcher 能够在你指定的一堆文件里,用关键词秒级定位到含有该文字的具体位置,并把上下文像搜索引擎那样高亮呈现出来。DocFetcher 支持 Word、Excel、PPT、PDF、EPUB、TXT、HTML、代码文件(C/C++、Java、Python、Go 等)、邮件 eml、压缩包 zip/7z/rar(内层文件也能穿透)等 40 余种格式,只要先让它“索引”一次,以后每次搜索都像是把 Google 搬进自己硬盘,回车一按,结果立现。日历 任务 番茄时间管理 :时光序 时光序是一款帮你规划日程、高效完成事务的时间管理应用。它的一大特色之一便是功能强大却不复杂,简约的同时却不简单。 文件浏览&&预览:doublecommanderDouble Commander 是一款开源的跨平台文件管理软件,灵感来源于 Total Commander,采用了两栏式界面设计,支持 Windows、Linux 和 MacOS 系统。该软件的开发始于 2007 年,旨在提供一个高效、功能丰富的文件管理解决方案。Double Commander 的特点包括对各种文件和压缩包格式的支持,内置文件查看器和文本编辑器,以及可定制的快捷键和外观。用户可以通过插件扩展其功能,满足不同的文件管理需求。优点方面,Double Commander 提供了强大的文件搜索、比较和同步功能,支持批量重命名,且其用户界面可以高度定制,使得文件管理工作更加高效。macosutools 快速启动软件文件夹或者自定义功能uTools 是一个极简、插件化的现代桌面软件,通过自由选配丰富的插件,打造得心应手的工具集合。通过快捷键(默认 alt + space )就可以快速呼出这个搜索框。你可以往输入框内粘贴文本、图片、截图、文件、文件夹等等,能够处理此内容的插件也早已准备就绪,统一的设计风格和操作方式,助你高效的得到结果至于好用的截图工具snipaste、历史剪切板工具ditto,ocr 工具等等,在utools 都包含了其功能,utools 还有很多其他插件,等待你去探索,任何一个操作都可以自定义快捷键。KeysmithKeysmith 描述自己为「创建自定义快捷键」,实在是有些谦虚,看似简单的功能其实给了用户很大的想象空间。与 Automator 相反,Keysmith 的设计十分克制,你并不可以凭空添加自动化动作,一切动作都始于你的「录制」。也正因这份克制,Keysmith 拥有十分简洁的界面。文件或者文件夹快速搜索: Pro Everything闪电般的搜索速度:全盘文件秒级定位,比 Spotlight 快 100 倍,输入文件名瞬间出结果!隐藏文件全覆盖:系统文件、隐藏文件一个不漏,连 ~/.ssh 这种隐藏文件都能轻松搜出来,Spotlight 直接被秒成渣!文件预览如丝般顺滑:搜索结果直接预览文件内容,省去打开文件的麻烦,效率党狂喜!批量操作逆天省时:支持批量移动、复制、删除,处理上千个文件很轻松!拖放交互超爽:搜索结果直接拖到其他应用,文件分享、编辑很方便,工作效率直接翻倍!隐私保护滴水不漏:仅收集设备序列号和系统版本号,数据安全到让你放心!多语言搜索无压力:中文、英文、日文随便搜,全球用户都能用得爽!轻量级设计:软件体积小到感人,资源占用低文档内容搜索:recollRecoll,跨平台( Recoll是一款开源的桌面搜索软件,支持Windows、Mac和Linux系统)免费的全文搜索软件,支持索引.Recoll是一款开源全文搜索软件,它通过智能索引技术,能够快速定位您电脑中的文件内容。无论是文档、电子书还是其他各类文件,Recoll都能轻松地帮助您找到所需信息,提高工作效率。项目技术分析核心技术Recoll 版本的核心技术是基于Xapian的全文搜索引擎。Xapian是一个开源的搜索引擎库,以其高效性和灵活性著称。以下是该软件的主要技术亮点:全文检索:通过全文检索技术,Recoll能够深入文件内部,搜索到关键词的确切位置。索引构建:软件会自动对指定文件夹内的文件进行索引,加快搜索速度。多格式支持:Recoll支持多种文件格式,包括txt、doc、pdf等,满足不同用户的需求。技术架构Recoll的技术架构主要包括以下几个部分:用户界面:采用简洁直观的图形界面,方便用户操作。索引引擎:基于Xapian的索引引擎,保证搜索的快速和准确。日历 任务 番茄时间管理 :时光序 时光序是一款帮你规划日程、高效完成事务的时间管理应用。它的一大特色之一便是功能强大却不复杂,简约的同时却不简单。 文件浏览&&预览:double commanderDouble Commander 是一款开源的跨平台文件管理软件,灵感来源于 Total Commander,采用了两栏式界面设计,支持 Windows、Linux 和 MacOS 系统。该软件的开发始于 2007 年,旨在提供一个高效、功能丰富的文件管理解决方案。Double Commander 的特点包括对各种文件和压缩包格式的支持,内置文件查看器和文本编辑器,以及可定制的快捷键和外观。用户可以通过插件扩展其功能,满足不同的文件管理需求。优点方面,Double Commander 提供了强大的文件搜索、比较和同步功能,支持批量重命名,且其用户界面可以高度定制,使得文件管理工作更加高效。iosLock Launcher锁屏启动 (Lock Launcher) 是一款 iOS 16 专用的「锁屏小组件」增强 APP 工具,可帮助用户快速一键启动:任意 APP / 微信或支付宝的健康码 (全国或分省) / 出示行程码 / 微信扫一扫 / 收付款码 (支付宝、云闪付) / 乘车码 / 快捷指令 / 网页 Web Apps / URL Scheme / 调用系统功能等,让新的锁屏界面发挥出应有的高效!快捷指令快捷指令是一种可让你使用 App 完成一个或多个任务的快捷方式。“快捷指令” App 可让你创建包含多个步骤的快捷指令。例如,你可以构建一个“冲浪时间”快捷指令来获取冲浪报道、提供预计到达海滩的时间以及播放冲浪音乐播放列表。文件或者文件夹快速搜索:easy searcheasySearch is a fast and efficient search and research tool for your iPad and iPhone. Search for text in files stored on your device, in iCloud, Dropbox, OneDrive, network and external media. Save your findings and track your progress.Find text in different storage locations文档内容搜索:FindText Find and replace text:1). Enter or Paste your text from the clipboard into the TextView2). You can choose Find or Replace function3). Enter the word or phrase you want to replace in Find what.4). Enter your new text in Replace with.日历 任务 番茄时间管理 :时光序 时光序是一款帮你规划日程、高效完成事务的时间管理应用。它的一大特色之一便是功能强大却不复杂,简约的同时却不简单。 文件浏览&&预览:ES文件浏览ES文件浏览器是一款功能强大的本地和网络文件管理器,支持多种文件管理和传输功能,广受用户欢迎。主要功能文件管理:ES文件浏览器支持多种视图和排序方式,用户可以方便地查看和打开各类文件。它允许在本地SD卡、局域网、OTG设备和互联网计算机之间自由传输文件。 应用管理:用户可以通过该应用安装、卸载和备份程序,并创建快捷方式,方便管理手机应用。 压缩与解压:支持文件的压缩和解压功能,用户可以轻松处理ZIP、RAR等格式的文件。 文本编辑:内置强大的文本编辑器,用户可以查看和编辑文本文件。 FTP和局域网访问:用户可以访问远程FTP服务器和局域网内的所有计算机,方便文件的共享和管理。 视频编辑:支持视频转GIF、视频拼接、添加音乐/字幕等功能,增强了多媒体处理能力。 云存储支持:用户可以同时登录多个云存储账号,方便管理和访问网络存储空间。AndroidFast! 快速启动软件文件夹或者自定义功能无论你是职场人士,需要在众多会议应用间快速切换,还是学生族,寻找快速访问学习工具的方式,FAST都能大显身手。对于那些追求效率的极客来说,这款应用更是如虎添翼,通过自定义设置和快捷操作选项(如长按应用图标进行深度管理),极大地提高了设备使用的便捷度。项目特点超快启动:仅需少量字符就能定位到应用。极致简约:不需要额外权限,保障隐私安全。灵活定制:用户可自由调整应用标签或创建快捷方式。高级功能:包括应用锁定、隐藏、通知访问等。开源精神:基于GPLv3许可,鼓励社群参与与贡献。社区支持:活跃的Google+社区,随时解答疑惑。MacroDroid 一款自动化神器——MacroDroid 这可不是什么普通的应用,它是一款功能强大的任务自动化和配置应用程序,能让你的手机变得更智能,从此告别繁琐的手动操作。是一个强大的Android自动化工具,它可以让你的手机根据特定的触发条件自动执行任务。这些任务可以是简单的,比如发送消息、连接网络,也可以是复杂的,比如根据你的位置自动调整手机设置。MacroDroid的界面直观,操作简单,即使是初学者也能轻松上手。文件或者文件夹快速搜索:anysearch这是一个快速搜索文件的工具。1).支持系统目录搜索(需要Root,无Root也可搜索部分系统文件,如系统Apk)2).支持通配符和正则表达式3).支持路径搜索4).支持媒体文件信息预览5).支持多种查看方式文档内容搜索:Anything安卓app手机版是一款安卓手机版的EverythingAnything安卓app手机版是一款安卓手机版的Everything,相信很多用户都对Everything这款PC上的搜索软件比较了解,这款Anything可以说是同样的强大,快速,简洁,准确,可以帮助搜索到很多文件,包括文件名,甚至文件中的内容都能搜到,非常好用。软件特色1)、按照文件名搜索,软件下方有视频、音乐、图片、文档四个分类可以筛选。2)、输入文件后缀也能快速找到文件,比如输入.mp4就能看到自己收藏的文件。3)、如果你实在想不起文件名,别急,它还支持文档搜索,输入文档中的内容也能搜到该文件。4)、Office 文档中除了Word,PPT和Excel表格正文也是支持的。5)、它支持文件忽略大小写搜索,长按文件的话可以直接在APP中打开文件所在路径,不过这里只能删除文件不支持重命名等其他操作。6)、除了上面提到的文件名搜索和office文档正文外,Anything还支持目录名搜索日历 任务 番茄时间管理 :时光序 时光序是一款帮你规划日程、高效完成事务的时间管理应用。它的一大特色之一便是功能强大却不复杂,简约的同时却不简单。 文件浏览&&预览:ES文件浏览ES文件浏览器是一款功能强大的本地和网络文件管理器,支持多种文件管理和传输功能,广受用户欢迎。主要功能文件管理:ES文件浏览器支持多种视图和排序方式,用户可以方便地查看和打开各类文件。它允许在本地SD卡、局域网、OTG设备和互联网计算机之间自由传输文件。 应用管理:用户可以通过该应用安装、卸载和备份程序,并创建快捷方式,方便管理手机应用。 压缩与解压:支持文件的压缩和解压功能,用户可以轻松处理ZIP、RAR等格式的文件。 文本编辑:内置强大的文本编辑器,用户可以查看和编辑文本文件。 FTP和局域网访问:用户可以访问远程FTP服务器和局域网内的所有计算机,方便文件的共享和管理。 视频编辑:支持视频转GIF、视频拼接、添加音乐/字幕等功能,增强了多媒体处理能力。 云存储支持:用户可以同时登录多个云存储账号,方便管理和访问网络存储空间。关于anytxt search、docfetcher、recoll等文件内容搜索的工具的比较,详见:http://www.bennyhe.cn/index.php/archives/357/
2025年10月27日
7 阅读
2 评论
0 点赞
2025-10-26
跨平台且开源的文本扩展器:Espanso
不论是在手机还是电脑上,我们在与人交流的过程中常常会形成或用到一些重复性的表述,这些表述的内容长度可多可少,但由于它们被用到频率十分之高,所以我们通常会更喜欢用类似于缩写的方式来代替我们一字一句输入的过程,例如说「yyds」(永远滴神)、「dddd」(懂的都懂)、「nbnhhsh」(能不能好好说话)等。这些缩写或缩略语通常也可以被看作是用户自定义词典,我们不仅可以在操作设备上自定义,也可以在输入法上自定义。不过它们也仅限于定义一些纯文字性质的内容且长度有限,同时这些自定义设置可能会和特定的操作系统相绑定又或是无法完全导出,迁移成本存在过高的情况。但有这么一类应用和自定义词典类似,它们为了用户自定义输入的缩写内容而生,不仅能定义纯文字性质的内容,还具备较强的扩展性,也被称为是文本扩展器(Text Expander)。文本扩展器的作用表现和我们在使用自定义词典时的方式别无二致,都是输入一个特定的表达式,然后就会被替换成我们事先定义好的内容,比如:---------------------------------> [input] #42 ---------------------------------- [output] 意大利面拌 42 号混凝土 <---------------------------------当我们在文本扩展器中事先设置完整内容之后,只要输入 #42 后就会转换成「意大利面拌 42 号混凝土」完整的句子。知名的文本扩展器有 TextExpander,不过它属于付费应用也不是我们此次讨论的主角;而本文我们所介绍的则是另外一款免费、开源、跨平台且基于 Rust 语言编写的文本扩展器——Espanso,它不仅简单易用、体积小巧,且可配置性强,用户不但可以基于命令行配置扩展内容,而且还可以安装来自于社区的第三方扩展包。快速上手因为 Espanso 是一个开箱即用的工具,其安装步骤简单到可以一笔带过:打开 Espanso 官网,点击推荐的系统版本,下载并安装。注:安装完成并启动 Espanso 时需要额外的操作授权,否则 Espanso 可能无法正确运行。当然我们主要是看看如何使用 Espanso。毕竟安装完毕后启动 Espanso 是不会直接显示什么华丽的界面,因为它本质可以算是一个名不见经传的后台程序,只不过以应用的方式活跃在系统后台。使用 Espanso 的方式十分简单,我们只需在任意一个可以输入内容的地方,像输入代码一样先按下英文冒号「:」,然后再输入剩下的指令就可以神奇地看到 Espanso 已经为我们补全了内容。其中由 : 开始的一系列内容称为触发器(Trigger),而补全后的内容也被称为是匹配项(Match)。比如我们现在输入 :date 的触发器指令那么 Espanso 直接会就帮我们将内容替换为表示当天日期的匹配项:就是这么简单!不过你可能会好奇,我是怎么知道 :date 匹配项的呢?我们也可以在状态栏中找到 Espanso 的图表并点击「Open Search Bar」选项或是按下 Option+空格(Windows 上是 Alt+空格)就可以弹出相应的列表与搜索界面:除此之外,因为我前面说了 Espanso 本质是一个后台程序,所以我们可以通过命令行来与之交互(可以在终端上通过 espanso --help 命令获取所有命令)。这里我们为了查看有哪些匹配项,可以直接使用 espanso match list 命令:espanso match list:espanso - Hi there!:date - {{ date }}可以看到 Espanso 并没有内置过多的匹配项,所以要想它能为我们更好地自动补全内容,就需要我们像自定义缩略语或短语一样事先进行人为配置。Espanso 的配置主要有两部分,我们可以通过 espanso path 命令来找到配置文件路径:espanso pathConfig: /Users/Bobot/Library/Preferences/espansoPackages: /Users/Bobot/Library/Preferences/espanso/match/packagesRuntime: /Users/Bobot/Library/Application Support/espanso上述结果中的 Config 部分即为 Espanso 在当前操作系统中的配置存放路径。当中主要包含了两部分配置:$CONFIG/ config/default.ymlmatch/base.yml其中:config 部分的配置主要是针对 Espanso 程序本身,包括自定义补全的触发符号(比如将前面的英文冒号 : 更改为其他符号)、是否只在特定应用内 Espanso 才会生效等等;match 部分的配置主要就是我们需要自定义补全的部分,也即 :date 这样的匹配项具体设置。默认情况下 Espanso 是对所有应用都生效,因此当我们在应用中输入时很有可能就会极易触发匹配项弄巧成拙,为了避免冲突我们需要在后续在 config 部分进行配置以进行过滤。不论是 Espanso 本身的配置还是自定义匹配项,Espanso 都采用了目前主流的 YAML 配置文件,我们可以直接通过系统自带的文本编辑器打开。但是由于 YAML 的格式有些特殊,对于语法格式有严格要求,所以建议你使用 VS Code 这类编程专用的编辑器并在当中安装对应的 YAML 插件来进行编辑、配置;除此之外,可能你还需要简单学习一下 YAML 语法 才能更好地自定义相关配置内容。现在就让我们来试着定义一组触发器与匹配项练习一番,这里我就使用 VS Code 来进行操作。首先通过前面的命令我们找到了 Espanso 的配置文件夹后点击并拖拽至 VS Code,然后我们可以在 match/base.yml 默认匹配项的基础上进行设置,也可以像我一样新建一个名为 custom.yml 的匹配项进行设置:接着在当中填入如下内容(注意:如果你是在默认的 base.yml 文件中进行设置,由于已经存在了 matches 键就不需要重复填写): # custom.yml matches: - trigger: ":tomorrow" replace: "{{mytime}}" vars: - name: mytime type: date params: format: "%Y-%m-%d" offset: 86400 - trigger: ":yesterday" replace: "{{mytime}}" vars: - name: mytime type: date params: format: "%Y-%m-%d" offset: -86400 当中的内容是由 YAML 语法构成的配置内容,其中每一组由「-」符号并紧接着 trigger 开始到下一个 trigger 前的一整块内容都表示定义一个匹配项,里面包括了触发器以及对应的替换内容等等,关于这部分配置我们在后续深入展开,现在暂时按下不表。检测到有文件修改或保存后 Espanso 会自动重新加载配置文件,之后当我们输入 :tomorrow 或 :yesterday 时,就会看到 Espanso 帮我们进行了自动补全:以上仅是对 Espanso 管中窥豹一番,虽然它用法简单,但如果我们想要最大程度地发挥它的作用,可能还有更多用法有待我们进一步探索,所以接下来就让我们再深入了解一下 Espanso 的相关细节。深入了解 EspansoEspanso 相关配置Espanso 的设置默认会作用到所有应用,但这通常可能会导致一些意想不到地冲突,所以我们最好需要对其进行调整。只在特定应用中生效Espanso 的默认配置为 config/default.yml 文件,但我们也可以针对不同应用在同一层级下添加不同的配置文件,比如 config/vscode.yml。之后我们可以在 vscode.yml 文件中添加过滤选项,即不让 Espanso 在使用 VS Code 时生效: # vscode.yml filter_class: "com.microsoft.VSCode" enable: false当我写入这短短地两行内容并保存之后,Espanso 就不会在我使用 VS Code 时生效从而避免了冲突。Espanso 提供了三种过滤应用的方式,包括上述示例即 filter_title、filter_exec 以及 filter_class,它们也分别对应了按当前活跃窗口的文本标题过滤、按应用的可执行路径过滤以及按当前活跃窗口的类名(编程概念)过滤。这三种方式默认使用正则表达式,倘若你不清楚具体的内容,那你就可以填写正则表达式:filter_exec: "Chrome$"enable: false当然你也可能会好奇我前面的例子是如何找到 VS Code 对应的类名 com.microsoft.VSCode?因为 Espanso 内置了一个探测指令可以一次性帮我们生成对应三种过滤方式的内容。在未屏蔽 Espanso 的情况下,我们可以像使用匹配项那样输入 #detect# 来进行触发,比如我在 macOS 的微信随便选择一个对话框,然后输入该指令即可弹出如下界面。之后我们只需要点击拷贝到剪切板再自行粘贴选择即可。建议你在配置时侧重选择除 filter_title 之外的另外两种方式,因为当前活跃窗口的标题文本内容变化幅度较大并不是很稳定。但除了像上述示例那样直接使用 enable: false 这样简单粗暴的屏蔽方式之外,Espanso 也提供了另外一种模式,让你可以自主选择在特定应用中只屏蔽(exclude)掉对应的匹配项。比如我现在排除掉我前面自定义的 custom.yml 文件:filter_class: "com.microsoft.VSCode"extra_excludes:"../match/custom.yml"默认情况下的路径为当前的 config 路径,而匹配项则是在与 config 同级的路径中,所以我们需要通过 ../match 的方式返回到同级目录然后再选择 match 目录。保存之后在 VS Code 中即便使用 :tomorrow 或 :yesterday 都不会得到相应的匹配项。如果要屏蔽的内容过多,你既可以使用 glob 模式来设置路径,也可以换一种思路,即只让某些匹配项——比如代码片段(Snippets)——在特定应用中生效,比如我现在有一个 match/pycode.yml 配置,当中准备了一些 Python 相关的代码片段,现在我只想这些片段只在 VS Code 中生效,那么此时就应该这样做:filter_class: "com.microsoft.VSCode"extra_includes:"../match/pycode.yml"修改 Espanso 默认设置尽管说 Espanso 有提供了基本的 UI 界面并驻留在状态栏中,但 Espanso 的设置都是需要通过配置文件来修改,这样的方式缺点很明显,就是对于一般用户而言缺少图形化配置界面还需要额外的学习成本;不过对于喜欢折腾的玩家来说也好处颇多,一方面你可以随时随地同步配置文件在,在不同操作系统之间也能保持配置统一;另一方面,你可以根据自己直接手动快速修改。比如 Espanso 默认的搜索框界面可以用 Option+空格(Windows 为 Alt+空格)打开,那么我们也可以直接修改为 Option+Shift+空格 打开:search_shortcut: OPTION+SHIFT+SPACE当然我们也可以禁用搜索框快捷键的同时,自定义快速弹出 Espanso 匹配项的搜索框界面的触发器: # default.yml search_shortcut: off search_trigger: ">esp" 之后我们只要敲击 >esp 就能令搜索框直接弹出。除此之外,如果你不喜欢每次修改配置文件时 Espanso 就自动重载,那么你也可以关闭该选项并在每次配置之后手动点击状态栏的驻留程序并选择「Reload config」选项:auto_restart: false如果你觉得 Espanso 在扩展文本时的速度有点慢,那么也可以直接选择将 pre_paste_delay 选项尽量调低一些(默认为毫秒 ms),以便快速替换而不是保留肉眼可见的延迟:pre_paste_delay: 100更多的匹配项用法Espanso 相比于其他文本扩展器或用户自定义词典最为突出的地方在于它的匹配项是灵活且可配置的,并且还能搭配终端的命令行工具一起使用得到最后的匹配结果,当然这都需要我们进行配置。静态匹配项最简单的匹配项配置就是 Espanso 默认自带的例子,它们通常是由 trigger 和 replace 一组内容来组成: - trigger: ":espanso" replace: "Hi, there!" 像这样内容既定的部分和我们自定义词典没有什么区别,也被称为静态匹配项(Static Matches)。借助于 YAML 语法我们也可以编写长串的替换文本,即: - trigger: ":espanso" replace: "Hi,\nthere!" - trigger: ":espanso" replace: | Hi, there!默认情况下 Espanso 会直接将 replace 的部分作为匹配项的描述内容,这当我们存在多个同名触发器且内容近似的匹配项时会很容易造成困惑,所以 Espanso 支持我们为匹配项加上对应的描述信息(label 标签),以便能更好地知道当前触发器所得到的内容是什么: # custom.yml - trigger: ":espanso" replace: "Hi, there!" label: "inline content" - trigger: ":espanso" replace: "Hi,\nthere!" label: "content with newline(\\n)" - trigger: ":espanso" replace: | Hi, there! label: "content with newline" 之后我们再次触发 :espanso 时就会能看到不同匹配项所对应的不同描述内容是什么。类似地,我们也可以让一个匹配项拥有多个触发器,这里就需要用到 YAML 的数组语法来设置,例如: - trigger: [":espanso", ":greet"] replace: "Hi, there!" label: "inline content"但如果你要设置的匹配项其触发器虽然比较多但表达类似,那么 Espanso 也支持你使用正则表达式的方式来进行设置,我们只将 trigger 替换成 regex 并使用正则表达式即可。我们可以直接将上述示例稍作修改: - regex: ":(espanso|greet)" replace: "Hi, there!" label: "inline content" 动态匹配项除了静态匹配项之外,Espanso 也支持动态匹配项,这也是让 Espanso 灵活且强大之处,我前面给出的明天和昨天日期的示例就是如此。因为这两个匹配项有些重复,这里我就以明天时间日期为例: - trigger: ":tomorrow" replace: "{{mytime}}" vars: - name: mytime type: date params: format: "%Y-%m-%d" offset: 86400在当前的匹配项之下我们还可以自定义变量,也即对应着 vars 之下的内容。变量一词就是编程中经常用来保存内容的基本单位,而 Espanso 允许我们沿用这样的设定直接为匹配项设置一连串的变量,之后动态地生成内容,而不是像静态匹配项那样一成不变。所以在设置 :tomorrow 所对应的匹配项时,我自定义了一个 mytime 变量,这个变量的类型(type)是日期类型,然后又分别表示有 format 用于表示日期展示样式和 offset 日期偏移两个参数。像日期类型这样的变量设置在 Espanso 中又被称为扩展(Extension)。所以除了日期类型之外,Espanso 还支持多种类型以适应动态匹配项的需要,如多选类型、随机类型、脚本类型、Shell 命令类型等等。其中脚本类型和 Shell 命令类型有些类似,只不过前者主要是针对于逻辑更为复杂的脚本文件,它们通常由某种编程语言来编写,而后者主要就是适用于我们所示的终端命令行工具: # custom.yml - trigger: ":pynow" replace: "{{now}}" vars: - name: now type: script params: args: - python3 - -c - | from datetime import datetime print(datetime.now()) - trigger: ":sspai_title" replace: "{{title}}" vars: - name: title type: shell params: cmd: "curl -s https://sspai.com | htmlq --text 'title'" shell: zsh 上述定义的 :pynow 和 :sspai_title 两个动态匹配项里分别用到了脚本类型和 Shell 命令类型,前者是执行 Python 解释器及其来输出最终结果,而后者则是通过系统内的 curl 和 htmlq 两个命令行工具来访问少数派官方并通过 HTML 获得最终的标题内容。除了脚本类型和 Shell 命令类型之外,Espanso 还有一种类型——Form 表单——适用于多处动态内容生成的情况,通常可以被作为模板来使用,比如邮件回复模板、问题反馈模板等等: - trigger: ":reply" form: | Hey [[name]], Thank you for your email. We have already try to handle the [[number]] issue. 在上述匹配项中我们没有 replace 键,取而代之的是 form,并且当中的动态内容部分则是由之前的花括号变成了方括号。这是 Espanso 对于表单内容的一个简写方式,本质上等价于定义变量的方式: - trigger: ":reply" replace: | Hey {{template.name}}, Thank you for your email. We have already try to handle the {{template.number}} issue. vars: - name: template type: form params: layout: | Hey [[name]], Thank you for your email. We have already try to handle the [[number]] issue. 所以当我们配置完毕并保存后,输入 :reply 时会直接弹出 Espanso 为我们准备好的表单界面,我们只需填好其中的部分即可快速生成模板内容。但 Espanso 也还支持某个匹配项在其他匹配项中被使用或引用,极大地提高了灵活性与复用性。比方说我们现在再为这个模板自动带上一个当前回复日期:代码块复制Hey 100gle,Thank you for your email. We have already try to handle the #314 issue.2022-12-12那么我们就可以使用这种引用方式: - trigger: ":today" replace: "{{today}}" vars: - name: today type: date params: format: "%Y-%m-%d" - trigger: ":reply" replace: | Hey {{template.name}}, Thank you for your email. We have already try to handle the {{template.number}} issue. {{today}} vars: - name: today type: match params: trigger: ":today" - name: template type: form params: layout: | Hey [[name]], Thank you for your email. We have already try to handle the [[number]] issue.在 :reply 匹配项的变量中,我们会定义一个 today 变量,它的参数类型是特殊的 match 匹配项,然后当中的 trigger 参数与我们 :today 匹配项的触发器一致。这样只要我们填写完姓名与问题 ID 之后就会在模板中还自动生成当前的回复日期。安装社区第三方扩展包自定义匹配项会是一个永无止境的过程,因为它会随着个人的需要而与日俱增。但人类知识是相通的,也有一些内容可能不仅个人会用到,在互联网某一隅的一群人也会用到,譬如说 Emoji。可你知道吗?在我们日常网络交流中经常使用的每一个 Emoji 表情,其实也都基本有一个相对应称呼(CLDR Short Name),这里我就直接引用 Unicode 官方给出的示例列表:Browser CLDR Short Name😀 grinning face😃 grinning face with big eyes😄 grinning face with smiling eyes上述三个表情虽然都属于笑脸范畴,但是它们对应的 Unicode 编码不同,其文字称呼也不同;这也就意味着我们不仅能够通过 Unicode 编码来找到它们,同理文字称呼也适用。所以你要是恰好知道某个 Emoji 的名称而又不像自己四处翻找,那么借助 Espanso 就可以直接类似 :grinning-face 以文字称呼得到 Emoji 表情。Espanso 允许我们安装来自于社区其他人共享的第三方扩展包,它会类似于插件地形式来扩充我们的匹配项,可以让我们「站在巨人的肩膀」上去更好地使用 Espanso。我们可以直接到 Espanso 的官方 Hub 页面 去搜索。比如我们直接就以前面提到的「Emoji」一词进行搜索就可以找到与之相关的扩展包:但我们与扩展包相关的操作都需要通过命令行来完成:Shell复制espanso install all-emojis # 安装 all-emojis 扩展包espanso uninstall all-emojis # 卸载 all-emojis 扩展包espanso package list # 查看 Espanso 中的所有扩展包espanso package update all-emojis # 更新 all-emojis 扩展包espanso package update all # 更新 Espanso 中的所有扩展包安装完成之后我们就再次按照前面提到的查看匹配项的方式来检查是否安装成功。除上述方式之外 Espanso 还支持额外的安装方式,甚至你也可以自己去创建并分享一个扩展包,当然这些内容 Espanso 都在文档中找到详细说明,这里就不再额外赘述。结尾虽然 Espanso 在使用上直接了当并且功能强大,它不仅可以帮我们扩展静态的模板内容,也可以具备较强的扩展性,例如调用脚本或使用命令行来得到内容。不过为了让它好用、易用可能还需要多花一点心思在配置上。受限于篇幅,本文仅介绍了 Espanso 中比较重要的一些配置内容;但像全局变量、导入外部配置、变量注入、如何分享自己的扩展包等等细节并没有一一涉及。好在 Espanso 的官方文档已经给出了较为细致的说明,这些未提及的内容就留给你自行探索。
2025年10月26日
4 阅读
0 评论
0 点赞
1
...
7
8
9
...
76