替代notepad++,notepad--介绍及插件cmake编译

Notepad++ 是一个文本编辑器小软件,用来替代windows自带的记事本。然而Notepad++软件的作者太霸道,如果你不赞同他的观点,Notepad++将会在你的源码里面插入随机字符。推荐一款国产的开源跨平台软件NDD(notepad--),功能一点儿不弱,体积小巧打开速度快,且带有文件夹比对功能,连收费的beyondCompare都省了。且可以为它贡献插件啦,添加一些有意思的功能,比如我想给它添加个ChatGPT聊天机器人插件。期待更多优秀的国产软件,为国产化崛起贡献力量。

NDD(notepad--)介绍

Notepad–是一个使用C++编写的文本编辑器,目前支持Win/Linux/Mac平台。在gitee上的项目名称为NDD。gitee仓库地址:

https://gitee.com/cxasm/notepad--

目标是要进行文本编辑类软件的国产可替代,重点在国产Uos/Linux系统、Mac 系统上发展。

一个支持windows/linux/mac的文本编辑器,目标是要国产替换同类软件,来自中国。对比其它竞品Notepad类软件而言,优势是可以跨平台,支持linux mac操作系统。

 可直接下载使用,发布版的软件下载地址:

https://gitee.com/cxasm/notepad--/releases/tag/v1.21

msvc工具链下载安装

Microsoft C++ Build Tools,通过可编写脚本的独立安装程序提供 MSVC 工具集,无需使用 Visual Studio。 如果从命令行界面(例如,持续集成工作流中)生成面向 Windows 的 C++ 库和应用程序, 推荐使用此工具。

为什么使用msvc工具?因为Visual Studio太大啦,好几个G,且我已安装过一个版本了,不想再安装一个新版本了。编译NDD源码的需注意,QT框架需要5.11以上。c++编译器至少需要支持c++17以上才行。直接下载msvc工具链1G左右大小,且下载速度超快。

msvc工具链下载地址:

Microsoft C++ Build Tools - Visual Studio

 安装这个需要注意的是,一定要勾选用于Windows的c++ Cmake工具这一项。

NDD源码编译

虽然NDD发布版提供了现成的软件可以用,但是对于开发来说,开发的插件必须使用同一套的MSVC和QT版本才行(VS2019和QT5.15.2),否则容易出现兼容性问题,对于开发测试插件来说,直接连ndd源码也一块儿编译,最简单直接。且最终想要贡献插件时也不用担心,作者鼓励大家定做插件,热门插件会给你合并进发布版中。

源码编译比较简单,作者提供的有编译文档介绍,windows下推荐编译环境:vs2017及以上,qt tool 插件。这里介绍下使用cmake编译,也很简单,在源码的how_build目录里有CMakeLists.txt文件,拷贝到项目根目录中,设置好cmake环境,就可以直接编译了。

cmake_minimum_required(VERSION 3.16)
project(NotePad-- VERSION 1.22.0)set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)add_definitions(-DCMAKE_CXX_STANDARD=17
)set(CMAKE_PREFIX_PATH "D:/Qt5.12.11/Qt5.12.11/5.12.11/msvc2015_64/lib/cmake")find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns)# qscint 关键依赖库
add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint)# 插件库包含
# helloworld 动态插件库
add_subdirectory(${PROJECT_SOURCE_DIR}/src/plugin/helloworld)# win下需要开启UNICODE进行支持TCHAR
if(CMAKE_HOST_WIN32)add_definitions(-D_UNICODE -DUNICODE)
endif()if(${PLUGIN_EN})if(${PLUGIN_EN}  STREQUAL on)add_definitions(-DNO_PLUGIN=1)endif(${PLUGIN_EN})    
endif()file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/src/*.ui)
set(UI_SRC ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/cceditor/ccnotepad.ui)
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/src/cceditor SRC)if(CMAKE_HOST_WIN32)
# 添加 WIN32 保证主程序启动没有命令行list(APPEND WIN_RCS ${PROJECT_SOURCE_DIR}/src/RealCompareToMinGw.rc)add_executable(${PROJECT_NAME} WIN32 ${WIN_RCS} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc)
else()add_executable(${PROJECT_NAME} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc)
endif()target_include_directories(${PROJECT_NAME} PRIVATE
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/src/cceditor${PROJECT_SOURCE_DIR}/src/qscint/src
${PROJECT_SOURCE_DIR}/src/qscint/src/Qsci
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/src
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/include
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/lexlib
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex
)target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network  Qt5::PrintSupport Qt5::XmlPatterns)# set(PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/bin")
# set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)if(CMAKE_HOST_UNIX)install(TARGETS ${PROJECT_NAME}DESTINATION "bin")install(DIRECTORY  ${PROJECT_SOURCE_DIR}/src/linux/usrDESTINATION "/")include(${PROJECT_SOURCE_DIR}/cmake/deb_package_config.cmake) include(CPack)
elseif(CMAKE_HOST_WIN32)install(TARGETS ${PROJECT_NAME}DESTINATION "/")install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build/bin/DESTINATION "/")# 设置软件版本set(CPACK_PACKAGE_NAME "NotePad--")set(CPACK_PACKAGE_DESCRIPTION "NotePad--")set(CPACK_PACKAGE_COPYRIGHT "Copyright (c) 2023")set(CPACK_PACKAGE_VERSION "1.22.0")set(CPACK_PACKAGE_VERSION_MAJOR "1")set(CPACK_PACKAGE_VERSION_MINOR "22")set(CPACK_PACKAGE_VERSION_PATCH "0")#include(${PROJECT_SOURCE_DIR}/cmake/nsis_package_config.cmake)include(CPack)
endif()

源码编译注意事项:

# qscint 关键依赖库
add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint)......
target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network  Qt5::PrintSupport Qt5::XmlPatterns)

从以上可看出,源码里附带的那个how_build文件夹,拷贝出的默认的CmakeLists.txt文件,是包含了 qscint 关键依赖库,且默认里面是把qscint生成的静态的。感觉这样有点别扭。因为最终是想把qscint库动态使用的。

因此这里编译NDD源码,注释掉了这个,先单独编译qscint为动态库。有个注意事项,编译qscint动态库,需增加宏定义add_definitions(-DQSCINTILLA_MAKE_DLL),既让Q_DECL_EXPORT生效。这个会让动态库同时生成dll和lib文件。

然后修改NDD主程序的CmakeLists.txt文件,引入和使用上一步生成的qscint库。

本以为很顺利,结果编译报错啦。

 解决办法:

再编译NDD源码时,改下库的使用方式。在 windows 中构建此库时应该采用 O DECL EXPORT, 并且在 windows 中使用此库时应该采用 Q DECL IMPORT。

 NDD插件demo及编译

插件的制作和编译,作者提供的有插件编程开发说明文档。这里介绍下cmake的编译方法,相对更简单些。插件需要依赖qscintila库,先编译出qscintila库。源码notepad--\src\qscint文件夹,CmakeLists.txt文件几乎不用咋改动,即可成功编译。需要注意的是:

set(CMAKE_PREFIX_PATH "D:/Qt5.12.11/Qt5.12.11/5.12.11/msvc2015_64/lib/cmake")
add_definitions(-DBOOST_REGEX_STANDALONE)

增加-DBOOST_REGEX_STANDALONE这个宏定义,否则还需要依赖Boost库。加上这个可独立编译成功啦。 需要注意的是,cmakeLists.txt 中增加以下配置,支持debug和其他模式下找到对应的库。

link_directories(${CMAKE_CURRENT_SOURCE_DIR}/
)target_link_libraries(${PROJECT_NAME} PRIVATEdebug qmyedit_qt5doptimized qmyedit_qt5)

另外还需注意的是,如果是要把 qscintila库动态的使用,则需要定义宏:

add_definitions(-DQSCINTILLA_MAKE_DLL)

这个是#define QSCINTILLA_EXPORT Q_DECL_EXPORT,Q_DECL_EXPORT宏主要为了导出这个类,生成.dll的同时生成.lib文件(注意这里的lib文件不是静态库,而是供外部链接使用的)提供给外部接口供其他类使用。 

cmake_minimum_required(VERSION 3.16)
project(qscint CXX)set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)set(CMAKE_PREFIX_PATH "D:/Qt5.12.11/Qt5.12.11/5.12.11/msvc2015_64/lib/cmake")
add_definitions(-DBOOST_REGEX_STANDALONE)
find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport)aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/lexers SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/lexlib SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/src SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/boostregex SRC)file(GLOB MOC_HEADER ${PROJECT_SOURCE_DIR}/src/Qsci/*.h)#message(${MOC_HEADER})add_library(${PROJECT_NAME} STATIC ${SRC} ${MOC_HEADER})# add_definitions(-DQSCINTILLA_MAKE_DLL)
# add_library(${PROJECT_NAME} SHARED ${SRC} ${MOC_HEADER})target_compile_definitions(${PROJECT_NAME} PRIVATE SCINTILLA_QT SCI_LEXER INCLUDE_DEPRECATED_FEATURES)target_include_directories(${PROJECT_NAME} PRIVATE
${PROJECT_SOURCE_DIR}/scintilla/lexlib
${PROJECT_SOURCE_DIR}/scintilla/boostregex
)target_include_directories(${PROJECT_NAME} PUBLIC
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/src/Qsci
${PROJECT_SOURCE_DIR}/scintilla/src
${PROJECT_SOURCE_DIR}/scintilla/include)target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport)if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qmyedit_qt5")
else()set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qmyedit_qt5d")
endif()

插件demo 

#include <qobject.h>
#include <qstring.h>
#include <pluginGl.h>
#include <functional>
#include <qsciscintilla.h>
#include "qttestclass.h"
#include "NDDMyPlugin.h"#define NDD_EXPORTDLL#if defined(Q_OS_WIN)#if defined(NDD_EXPORTDLL)#define NDD_EXPORT __declspec(dllexport)#else#define NDD_EXPORT __declspec(dllimport)#endif
#else#define NDD_EXPORT __attribute__((visibility("default")))
#endif#ifdef __cplusplusextern "C" {
#endifNDD_EXPORT bool NDD_PROC_IDENTIFY(NDD_PROC_DATA* pProcData);NDD_EXPORT int NDD_PROC_MAIN(QWidget* pNotepad, const QString& strFileName, std::function<QsciScintilla* ()>getCurEdit, NDD_PROC_DATA* procData);#ifdef __cplusplus}
#endif
NDDMyPlugin *nddMyPlugin = nullptr;
static NDD_PROC_DATA s_procData;
static QWidget* s_pMainNotepad = nullptr;
std::function<QsciScintilla* ()> s_getCurEdit;bool NDD_PROC_IDENTIFY(NDD_PROC_DATA* pProcData)
{if(pProcData == NULL){return false;}pProcData->m_strPlugName = QObject::tr("Hello World Plug");pProcData->m_strComment = QObject::tr("char to Upper.");pProcData->m_version = QString("v1.0");pProcData->m_auther = QString("yangqq.xyz");pProcData->m_menuType = 1;return true;
}//则点击菜单栏按钮时,会自动调用到该插件的入口点函数。
//pNotepad:就是CCNotepad的主界面指针
//strFileName:当前插件DLL的全路径,如果不关心,则可以不使用
//getCurEdit:从NDD主程序传递过来的仿函数,通过该函数获取当前编辑框操作对象QsciScintilla
//pProcData:如果pProcData->m_menuType = 0 ,则该指针为空;如果pProcData->m_menuType = 1,则该指针有值。目前需要关心s_procData.m_rootMenu
//开发者可以在该菜单下面,自行创建二级菜单
int NDD_PROC_MAIN(QWidget* pNotepad, const QString &strFileName, std::function<QsciScintilla*()>getCurEdit, NDD_PROC_DATA* pProcData)
{QsciScintilla* pEdit = getCurEdit();if (pEdit == nullptr){return -1;}//务必拷贝一份pProcData,在外面会释放。if (pProcData != nullptr){s_procData = *pProcData;}s_pMainNotepad = pNotepad;s_getCurEdit = getCurEdit;//如果pProcData->m_menuType = 1;是自己要创建二级菜单的场景。则通过s_procData.m_rootMenu 获取该插件的菜单根节点。//插件开发者自行在s_procData.m_rootMenu下添加新的二级菜单项目//QMenu* menu = s_procData.m_rootMenu;if (!nddMyPlugin){nddMyPlugin = new NDDMyPlugin(s_pMainNotepad, strFileName, nullptr, s_pMainNotepad);nddMyPlugin->getViewMenu(s_procData.m_rootMenu);nddMyPlugin->setScintilla(s_getCurEdit);}return 0;
}

附cmake

cmake_minimum_required(VERSION 3.16)
project(helloworld)set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)set(CMAKE_PREFIX_PATH "D:/Qt5.12.11/Qt5.12.11/5.12.11/msvc2015_64/lib/cmake")find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns)add_definitions(-D_UNICODE -DUNICODE)file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/*.ui)
file(GLOB SRC ${PROJECT_SOURCE_DIR}/*.cpp)
file(GLOB MOC_HEADER ${PROJECT_SOURCE_DIR}/*.h)
# add_executable(${PROJECT_NAME} ${IS_WIN} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc)
#link_directories(
#        ${CMAKE_CURRENT_SOURCE_DIR}/
#)
find_library(QSCINT_LIB qmyedit_qt5 PATH ${CMAKE_CURRENT_SOURCE_DIR}/)add_library(${PROJECT_NAME} SHARED ${SRC} ${UI_SRC} ${MOC_HEADER})target_include_directories(${PROJECT_NAME} PRIVATE
${PROJECT_SOURCE_DIR}${PROJECT_SOURCE_DIR}/../../include
${PROJECT_SOURCE_DIR}/../../qscint/src
${PROJECT_SOURCE_DIR}/../../qscint/src/Qsci
${PROJECT_SOURCE_DIR}/../../qscint/scintilla/src
${PROJECT_SOURCE_DIR}/../../qscint/scintilla/include
${PROJECT_SOURCE_DIR}/../../qscint/scintilla/lexlib
${PROJECT_SOURCE_DIR}/../../qscint/scintilla/boostregex
)#set(QS_CINT_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qmyedit_qt5.lib)#target_link_libraries(${PROJECT_NAME} PRIVATE
#        debug qmyedit_qt5_d
#        optimized qmyedit_qt5)target_link_libraries(${PROJECT_NAME} PRIVATE ${QSCINT_LIB} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network  Qt5::PrintSupport Qt5::XmlPatterns)

其他资源

cmake核心知识点整理_cmake file(glob_今耕明收的博客-CSDN博客

Cmake 链接外部库_cmake 链接动态库_泡沫o0的博客-CSDN博客

QT知识点总结(三)_q_decl_import_Chiang木的博客-CSDN博客

【Qt】 error: LNK1107: 文件无效或损坏: 无法在 0x310 处读取_qt lnk1107_郭老二的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5333.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LLM大模型】模型和指令微调方法

note Hugging Face 的 PEFT是一个库&#xff08;LoRA 是其支持的技术之一&#xff0c;除此之外还有Prefix Tuning、P-Tuning、Prompt Tuning&#xff09;&#xff0c;可以让你使用各种基于 Transformer 结构的语言模型进行高效微调。AIpaca羊驼&#xff1a;让 OpenAI 的 text-…

开源ChatGPT要来了;软件2.0智能革命;GLM、Diffusion模型大加速

1. 2023年AI十大展望&#xff1a;GPT-4领衔大模型变革&#xff0c;谷歌拉响警报&#xff0c;训练数据告急 新年伊始&#xff0c;大模型的话题热度不减。ChatGPT展现的惊人能力将大模型研究和应用热度推向高潮&#xff0c;人们激烈讨论着这个高级“物种”的推出意味着什么。 本文…

被ChatGPT带热的最新技术岗:无需编码,年薪超200万

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年1月份热门报告合集 ChatGPT调研报告 ChatGPT团队背景研究报告 ChatGPT的发展历程、原理、技术架构及未来方向 ChatGPT使用总结&#xff1a;150个ChatGPT提示此模板 Ch…

AI提效工具|借助chatgpt快速读论文,快速总结、归纳、索引相似文章

目前新论文层出不穷&#xff0c;“快速阅读论文”成为研究者们一个必备能力。本文简单记录了近期出现的两个借助chatgpt来帮助我们快速读论文的“神器”&#xff0c;帮助大家快速上手应用&#xff0c;迅速提升论文阅读速度。 此外&#xff0c;本人也会定期更新记录一些类似的“…

获取全球各大证券交易所的全部股票交易信息

幻想过这样的两种能力&#xff0c;一是回到过去&#xff0c;二是预见未来。时间逆转回到过去&#xff0c;这更多的是在文艺作品中能够出现的情节。而预见未来&#xff0c;我们正在努力&#xff0c;希望可以更准确地预见更长时间内更多的细节。例如在瞬息万变的股票交易市场中&a…

如何使用chatGPT辅助开发复杂D3图表

如何使用chatGPT辅助开发一个复杂的D3图表 首先简单介绍一下实现的表单。 在线地址&#xff1a;https://2guliang.top/temperature/timeChat 引言 什么是 D3 D3 (Data-Driven Documents) 是一个基于数据驱动的 JavaScript 库&#xff0c;用于创建可交互的数据可视化图表。…

如何在代码开发中便捷使用 ChatGPT 协助开发

在五一节前后&#xff0c;抽空测试了下网上推荐的开发环境和开发插件&#xff0c;在这里推荐给前后端代码开发的同胞们。 方法一&#xff1a;IDEA 安装 插件 bito 习惯使用 IDEA 开发代码的同胞&#xff0c;可以尝试直接在 IDEA 中安装插件 bito&#xff0c;注意操作过程中需要…

ChatGPT 嵌入开发

为了提高问答「准确率」,有两个优化方向 1、增加训练集数据 2、增加提问上下文语料,答案就在其中 OpenAI 是不允许用户来训练数据的,他的 model 是固定且通用的。所以增加训练集数据并不可行。 使用chatgpt 嵌入,让chatgpt根据语料内容回答。 实际应用,产品客服、产品…

ChatGPT Plugin 开发流程图

有关如何设置、开发和部署 ChatGPT 检索插件的详细信息请参照 https://github.com/openai/chatgpt-retrieval-plugin

如何用ChatGPT使开发效率提高50%以上?

简介 ChatGPT是一个大型语言模型&#xff0c;由OpenAI开发。它被训练用于进行对话式交互&#xff0c;能够理解和生成自然语言文本。ChatGPT可以用于多种任务和场景&#xff0c;包括但不限于&#xff1a;智能助手、创意生成、语言学习、编程辅助等。ChatGPT的优势在于它的广泛知…

ChatGPT 插件系统,正式上线!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; 自 ChatGPT 诞生以来&#xff0c;技术圈内有不少开发者基于它的功能实现了不少优秀的产品&#xff0c;现如今在 GitHub 上新增的 ChatGPT 项目更是多不胜数。 为了能够更加灵活的扩展 Chat…

【最新整理】一起看看86 个 ChatGPT 插件

今天我们来看看这86个插件都是做什么的&#xff1f; Shimmer&#xff1a;跟踪膳食并获得更健康生活方式的见解 World News&#xff1a;总结新闻头条 Bohita&#xff1a;用您能描述的任何图像制作服装 Portfolio Pilot&#xff1a;您的 AI 投资指南&#xff1a;投资组合评估…

ChatGPT写的C++学习路线是怎样的

ChatGPT写的C学习路线是怎样的 图片版 文字版 请为我写一条C全栈学习路线&#xff0c;有以下要求&#xff1a; 1、搜索了以下所有要求的相关资料后再做回答&#xff0c;注意逻辑 2、20000字以上&#xff0c;如果没有说完&#xff0c;自己继续 3、求职路线适用于刚进入职场一年…

如何利用ChatGPT-4完成一篇爆款引流文章

ChatGPT4已经来了&#xff0c;今天小编就带大家学习学习&#xff0c;如何利用ChatGPT4完成一篇爆款引流的文章&#xff1b;本文将详细介绍如何使用先进的人工智能语言模型ChatGPT-4来撰写一篇爆款流量文章。我们将探讨选择合适的主题、关键词和结构&#xff0c;以及如何运用Cha…

ChatGPT专业应用:基于关键词撰写原创文章

正文共 485 字&#xff0c;阅读大约需要 2 分钟 内容运营/SEO投放必备技巧&#xff0c;您将在2分钟后获得以下超能力&#xff1a; 基于关键词撰写原创文章 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 …

ChatGPT专业应用:自动撰写SEO文章

正文共 388 字&#xff0c;阅读大约需要 2 分钟 市场运营/SEO投放必备技巧&#xff0c;您将在2分钟后获得以下超能力&#xff1a; 快速生成SEO文章 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | 菜菜子 编辑者 | 奈奈…

ChatGPT批量生成文章软件:创意无限,助力高效创作

随着人工智能技术的不断发展&#xff0c;ChatGPT批量生成文章软件成为了一种强大的创作工具。这款软件以其无限创意和高效助力&#xff0c;极大地提升了文章创作的效率。在本文中&#xff0c;我们将从多个方面详细阐述ChatGPT软件的特点和优势。 一、智能创作能力 ChatGPT软件…

chatgpt赋能python:Python中如何对文本进行修改

Python中如何对文本进行修改 在Python编程中&#xff0c;涉及到文本操作的场合并不少见。我们可能需要读取文件、解析HTML网页、处理字符串等等。而在对文本进行操作的过程中&#xff0c;修改文本是非常常见的需求。本文将介绍Python中对文本进行修改的几种基本方法。 1. 字符…

ChatGPT 大规模封号,并停止注册!

责编 | 王子彧 出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09; 4 月 2 日&#xff0c;大量用会反馈 ChatGPT 账号被封&#xff0c;其中亚洲地区成为重灾区。据相关统计&#xff0c;已有数百万用户的账号受到了影响。 一时间&#xff0c;各种关于 ChatGPT 的…

ChatGPT告诉你:想在领英开发国外客户,可以使用哪些工具?

提问&#xff1a;想在领英开发国外客户&#xff0c;可以使用哪些工具&#xff1f; ChatGPT&#xff1a;如果你想在领英上开发国外客户&#xff0c;可以使用以下几种工具&#xff1a; 1.领英助理&#xff1a;领英助理是一款基于人工智能技术的工具&#xff0c;可以帮助用户自动…