WDTP, 一款笔记,写作,博客三位一体的软件,同时也是个静态网站生成器

本贴最后更新于 2964 天前,其中的信息可能已经沧海桑田

** 首先声明作者不是我,是一位朋友 SwingCoder,文章首发与凯迪,然后发布到 v2ex,我帮他转过来的**

WDTP 是一款“三合一”的另类写作工具与桌面 GUI 单机性质的静态网站(博客)生成器,这个项目的主页是:

http://underwaysoft.com/works/wdtp/index.html

WDTP :源于凯迪论坛的又一款写作利器

2016 年年初,我在凯迪论坛看帖的时候,意外地发现了一座高楼,所讨论的话题是我前几年很感兴趣的。于是开始关注,时不时也掺和几句,然后就和几位骨干帖友混了个脸熟——其中一位是陈坪先生。有天我去拜访他的博客,浏览文章的时候突然冒出一个 idea ,可能更像是一些自我觉察,大致如下:

多年以来,在写稍微正规一点的东西时, Pages 或 Word 之类的巨无霸实在让人心累,可能也不是太必要。即便这些巨无霸,对多个文档的集中组织与结构化管理也不好使,更别说那些纯文本的编辑器和网页端基于各类脚本写就的编辑器;
平时读书、学习或做笔记时,除了我个人开发的一款同类软件, Evernote 等臃肿不堪的云笔记已经很难让我有愉悦的使用体验;
写博客时,我可能并不需要 WordPress 等服务器端运行的脚本 + 数据库,更别说现成的各类博客平台……

诸如此类。相信其他一大批小众也会有这些想法。说实话,以上这些真心不好用,尤其是学习与使用成本,还有使用时的心情,数据的随时检视、备份、管理与迁移,远程修改、调试与刷新等等。很折磨人。它们或许非常适合更广泛的一大批用户,某些情况下肯定也是非用不可,但很多时候确实不再适合我,也没必要时时动用这些怪兽级的庞然大物。

更进一步,笔记、写书、博客、网站这几件看似互相割裂的事,其实完全可以也早就应该简简单单、清清爽爽地合而为一了。而写作时,“内容与样式分离、样式与模板分离”等程序员最熟悉的理念与常规做法,这么多年以来,我为什么没有在自己的文字写作过程中更深入地理解和贯彻呢?有点不应该。

想法中还包括了其他。比如:“静态网站生成器( Static Site Generator )”,这东西近两年在喜欢尝鲜的技术类博主中很受推崇。有媒体放言:“下一批互联网大事件中,新型的静态网页及其生成将位列其中”……据我所知,这类程序目前至少上百,采用了各种各样的编程语言,它们中比较知名的有: Jeklly 、 Hugo 、 Hexo 、 Octopress 、 Pelican 、 Hyde 等等。尤其是 Jekyll ,背靠 Github 这棵大树,几乎一夜之间风靡全球。我对此做了一些肤浅的调查,一个匪夷所思的事实是:就我所接触到的“对口者”,竟无一例外——清一色的命令行程序!没有 GUI ,没有文本编辑器与可视化的 TreeView ,有的居然还要安装整个语言环境或依赖库。动辄百兆以上,太让人愤慨了。大不说,还麻烦。无论获取、安装,还是设置、使用,都不直观,也不方便,对一般人来说门槛有点高。这就势必将更广泛的用户群(比如普通的写作者)排斥在外,使他们很难享受到文本标记语法、内容 /样式分离、高自由度和灵活随意的静态博客等另类而好玩的写作 /分享模式。

既然尚无,那迟早就会有人下手,不妨等等,于是我就把这个事搁置了。此期间,我曾加入一个推广某静态生成器的国内群,也在 Stack Overflow 上转了转,四下打探一番,无果。有人曾抱怨过,但最终也是不了了之。

浏览陈坪先生的文章时,以上想法突然变得强烈起来。我琢磨了一下,这个事技术含量虽不高,但并不轻巧。脏活总是让同行包揽始终让人过意不去,干脆我自己趟一次浑水,再造个轮子吧:写一款跨平台且简洁清爽的桌面版静态网页生成器,顺便糅合上面提到的那几个功能,尽量将它们捏到一起,争取做的轻巧点、优雅点,先把基础和架子搭起来,后续事务和细化处理慢慢再捯饬。

琢磨的七七八八后,就立项动工了。关于编程语言的选择,脚本不考虑,平台相关的谢绝,数据库滚蛋。这么一来,似乎只有 Java 或 C++ 了。 Java 一贯不是我篮子里的菜,就 C++ 吧。

然后……然后就是今天 WDTP 内测版的首发,地点就在凯迪论坛的猫眼看人版块。可能有点唐突违和,请允许我解释一下:一方面这个程序的诞生确实与凯迪有直接的关系;另一方面此处风云际会、藏龙卧虎,能写、会写、喜欢写的人非常多,给这批笔友提供另一件顺手的写作工具应该是一件有意思的事。此外,似乎还没有哪位同行在这样的大杂烩论坛里做过这种类型的“主播”。这事有挑战性,风险并不小。但我想试试。

产品的首发式上,一般都会真真假假、虚虚实实地谈谈愿景、希望什么的。我这会儿有点忐忑,不敢满口火车。现在最大的希望是:值班编辑此刻心情不错,不删改这个贴,也不打算将它转移到凯迪的其他版块里。

关于程序的授权方式和性质, GPL v3 ,开源免费。不光凯迪的网友,全世界任何个人和组织都可以随意使用、传播、解剖源码或 PR 贡献,也接受来自任何方面的捐助。这些没什么需要多解释的。该有的,《授权协议》里都提到了,不够我再加几条:)

项目开工后,中间曾停工 3 个多月。 2016 年我周围发生了几件悲伤的事,让人心碎,这几乎导致了项目的夭折。费了很大劲我才将自己振作起来,硬挺着把 WDTP 的第一个版本敲了出来。活干得如何,横竖不论,交给诸位评说。目前 Bugs 肯定一堆,代码急需规整,很多细节也亟待完善。我实在不好意思说自己是一个敲了整整 30 年代码的老一代苦逼程序员——面老色衰,人狗远之。大江东去,属于我们的时代过去了……滚出这个行业之前,尽力散发点余温吧。希望热情还在,理想还在,更希望能听到真实而有价值的反馈与意见,以及各位同行的 PR 提交、无私贡献。

可能有人对大部分开源软件的维护更新感到不放心。我在此表个态吧:未来很长一段时间内,我可能每天都要用它,而且是重度使用。无论作为设计人、开发者、项目的第一责任人,还是作为用户之一,我肯定不愿意为了它而过分难堪或郁闷,更不会让它在七歪八扭、一团乱麻的失控状态下无果而终。

关于 WDTP ,还有几个必须要感谢的人——期待未来会更多,以后有机会一定专门提及。

That's it. 谢谢所有看了此贴的人,谢谢即将成为 WDTP 用户的每一个人,谢谢陈坪先生和那个高楼长贴,以及该贴中所有让我感到温馨的人。

今日立春,使用愉快!

SwingCoder 2017.02.03 于凯迪论坛

本文已发布在凯迪论坛的猫眼看人版块: http://club.kdnet.net/dispbbs.asp?id=12102372&boardid=1

WDTP 简介: http://underwaysoft.com/works/wdtp/introduce.html

授权协议(免责声明与使用许可): http://underwaysoft.com/works/wdtp/license.html
下载、安装及运行: http://underwaysoft.com/works/wdtp/download.html
WDTP 原生支持的 Markdown 语法及默认的渲染效果: http://underwaysoft.com/works/wdtp/mdDemo.html
快速上手: http://underwaysoft.com/works/wdtp/gettingStarted.html
常见问题及解决方案: http://underwaysoft.com/works/wdtp/QA.html
主要更新记录: http://underwaysoft.com/works/wdtp/updateList.html
Memo list: http://underwaysoft.com/works/wdtp/memoList.html

欢迎大家下载试用并提出宝贵意见!

谢谢!

WDTP-主要更新记录

  • 2017.02.04

  • 编辑器右键菜单,插入,新增“插入图注 /表注”

  • 插入图片或表格时一并插入图注和表注行

  • Markdown 解析新增语法:图注和表注,语法格式“^^ 注解文字”

  • 2017.02.03

  • 发布 macOS 和 Windows 两个平台下的内测版( 0.9.170201 )

  • 系统菜单新增:重置 /修复系统默认的模板及样式表

  • 实现:项目数据的打包与解包

  • 文档内搜索所选内容添加快捷键。 F3 :下一个, Shift + F3 :上一个

这个项目目前的 github 地址是:
https://github.com/LegendRhine/WDTP

我现在还没想好,可能过一段时间将它单独拉出来,或者放在另一个账户下,或者拉到国内,这样方便大家访问和 PR 。
我最近会尽快规整代码,完善注释和开发文档,便于各位同行、老师审阅代码并无私贡献。

  • WDTP
    2 引用 • 96 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    311 引用 • 796 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • ivmm 2 via macOS

    其实我觉得呢,博客这种东西,决定使用率的往往不是功能,而是主题

    1 回复
  • SwingCoder 1

    非常感谢 Akkuman 兄的转帖和介绍。

    大家好,我是 WDTP 的作者 SWingCoder,欢迎大家下载试用 WDTP,提出宝贵意见和建议,也非常欢迎各位同行与老师对 WDTP 源码的审阅、指正与无私贡献。
    如果这个软件能给您的工作、学习和生活带来一点点方便,将是我最大的心愿和荣幸。

    谢谢!

  • SwingCoder

    谢谢您的宝贵意见!您说的非常对,静态生成网页这一块,主题风格和样式确实非常重要。
    我对网页设计与前端技术不是非常了解,Akkuman 兄建议我有时间深入学习一下,他说的对。等忙完这段时间,我想仔细看看这方面的东西。

    同时也非常期待和欢迎各位从事前端设计的朋友能无私协助和贡献。
    谢谢!

  • SwingCoder

    WDTP 2 月 6 日更新:

    • 改进:将所选目录(含其下所有文档及所有子目录的文档)导出为一个独立的 HTML 文件,以供格式转换、生成各种类型的电子文档、外部浏览器中打印、打印预览或在其他外部编辑器中进行更精细的处理(比如进行出版印刷前的专业排版)。此功能非常适合作家、剧作家写作完成后的“章节集成”、“全书集成”,也非常适合使用 WDTP 做笔记的用户(可定期将全部笔记或某个分类下的所有笔记“装订成册”),也适合于将个人博客或网站的内容(全部或某个分类)集中“装订成册”。
      • 文档内容在该 HTML 中出现的顺序依照当前文件树的排序。
      • 所导出的 HTML,默认使用本项目当前所用的样式表。
  • SwingCoder
    • 实现:网站数据打包。不仅可将整站数据打包,还可将任意目录的网站数据进行打包。打包结果为 zip 压缩文档。此功能既可用于网站备份(注意,不是项目文档数据的备份),也可用来传播或分享网站数据,还可大大提高发布效率(比如:某些 FTP 服务器允许用户远程解压上传后的 zip,或者提供网页版的在线文件管理界面,可在此界面中上传并解压 zip 文档。这样比在 FTP 软件中上传大量的零星文件要快得多)。高级用户,还可利用此功能实现:同一套数据、应用不同的模板后,多站点同时发布。
      • 数据打包之前,无需重新生成网页。程序会自动生成所选目录(或整站)所有需要重新生成的网站数据。没有改动或未受影响者保持不变,从而最大限度提高程序的运行效率并节约用户的等待时间。
  • SwingCoder
    • 改进:预览模式下的滚屏行为(同一文档切换编辑/预览模式后,不再每次都滚到最顶部,而是记忆并保持切换前的位置)。
  • SwingCoder

    实现:左侧的文件树面板中双击某个条目后,如果该条目是项目的根条目,则创建新文件夹;如果该条目是文件夹,则在该文件夹下创建新文档;如果该条目是文档,则可重命名之。

  • SwingCoder
    • 实现:内链功能。即:插入本项目内部某个文章/目录的链接。操作流程:要插入哪个文章/目录的链接,文件树面板中鼠标右键点击该条目,弹出的菜单中点击“Get Path(获取路径)”。而后返回要插入该链接的文档,编辑模式下,鼠标右键单击,弹出的菜单中点击“Insert - Internal Link(插入 - 内部链接)”。程序内部自动将该链接转换为正确的相对路径,并以 Markdown 格式的语法将链接文本插入光标所在位置。可在多个文档中重复插入该链接,每次均正确转换其相对路径。
  • SwingCoder
    • 改进:加大文本编辑器的行间距。
    • 修复:中英文混杂时,文本编辑器断行不正常的 Bug。
  • SwingCoder
  • SwingCoder
    • 编辑模式下新增三个快捷键。这三个快捷键在写作和编辑时非常有用,能大大提高效率。
      • Ctrl + 回车键:在当前段落之前插入一个新段落。
      • Ctrl + C:未选择任何文本时,复制光标所位于的整个段落。
      • Ctrl + X:未选择任何文本时,剪切光标所位于的整个段落。

    注:Windows 下的 Ctrl 相当于 macOS 下的 cmd 花键。

  • SwingCoder

    更新了《WDTP 快速上手》。请点此浏览:
    http://underwaysoft.com/works/wdtp/gettingStarted.html

  • SwingCoder

    为方便各位朋友和老师及时反馈宝贵意见,我弄了个简单的留言板(使用了“友言”评论系统)。敬请访问、留言。
    http://underwaysoft.com/guestBook.html

  • jy02201949

    网站的色调让我以为有什么浮动弹出窗口没关,背景一片灰蒙蒙。。。

    1 回复
  • SwingCoder

    众口难调,改一下 css 文本的事:)

  • SwingCoder
    • 实现:网站菜单的排序。WDTP 中,2 级以内的任意子目录和文档均可设置为网站菜单。位于根目录下的一级子目录或文档为“主菜单”,2 级则为鼠标指向主菜单时自动弹出的下拉列表(菜单项,对应磁盘目录与文档的包含结构)。主菜单和菜单项均可点击。排序规则为:同级目录的 index.html 与文档对应的 html 相比,目录在前;同级目录之间和同级文档之间相比,创建时间早的在前。
    1 回复
  • Vanessa via macOS

    你是作者么?

    1 回复
  • SwingCoder

    是的,我是 WDTP 的作者。

  • SwingCoder

    如假包换,呵呵:)

  • SwingCoder

    WDTP 已被小众软件网收纳和推荐,谢谢他们:)
    https://faxian.appinn.com/4208

  • SwingCoder
    • 改进:整个项目或某个目录进行网站数据压缩打包时,可指定要打包的数据类型。比如:仅打包所有网页文件,或者仅打包媒体数据,或者打包所有数据。该功能可进一步提高工作效率(很多时候,编辑修改网页,或者新增了不含媒体数据的网页后,无需重复打包并发布已有的媒体数据)。
    1 回复
  • 88250 1

    作者好勤奋啊,一大早做更新😻

    1 回复
  • R

    看起来很不错的软件,数据怎么保存?

    1 回复
  • R 1

    下来测试了一下,不错不错,不过网站生成是静态的,无法搜索了

  • SwingCoder

    谢谢:)

  • SwingCoder

    谢谢试用:)WDTP 管理的目录和 md 文档都位于本机磁盘。

    静态网页也可以实现针对网站访客的搜索,但是会有点麻烦和限制。一个可参考的例子是 Doxygen 那样的“关键条目搜索”。
    过一段时间,等程序功能七七八八后,我看看是否加上这个功能:)我个人对这个功能不是非常需要和重视,在设计 WDTP 之前,我做了一些调查和思考,个人博客性质的网站,访客很少使用本站搜索这个功能,除了忠诚度较高的老访客,一般都是搜索引擎或其他渠道带过来的。网站内容的搜索,更多是作者自己的经常性行为。本机搜索,也就是作者自己的搜索,我觉得本地操作更方便。WDTP 工具栏两端的搜索框就行(一个是搜索整个项目,一个是搜索当前文档)。

    我的想法可能有误区,或者太“传统”和保守,欢迎批评指正:)谢谢!

    1 回复
  • SwingCoder
    • 改进:使用操作系统默认的文件打开/保存对话框。一是使不同平台下的用户有更熟悉的使用体验,二是解决某些 Windows 版本下新建项目时【保存】按钮可能暗显的问题。
  • SwingCoder
    • 增加:博客模板 index 页的文档列表项中增加最后修改日期。此修改将影响所有用户。解决方案:升级本程序后,执行系统菜单下的“重置/修复系统模板”,而后重新生成整站。
  • SwingCoder
    • Markdown 编辑器中增加了一批快捷键,可提高 MD 标记输入的效率:

      • Ctrl + B:加粗。当前是否选择文本都可以输入该格式化标记。有些用户可能习惯于先输入标记,而后再输入文本。比如我:)如果当前选择了文本,则直接对所选文本应用加粗标记;如果当前未选择任何文本,则软件给出加粗标记后,自动将插字符光标定位到两个星号之间,以便于用户直接输入要加粗的文本内容(省掉按两下键盘或点击鼠标了)。
      • Ctrl + I:斜体。解释同上
      • Ctrl + L:行内代码。解释同上
      • Ctrl + K:代码块
      • Ctrl + M:插入图片(:WDTP 支持一次性插入多幅所选的图片)
      • Ctrl + H:插入超链接
      • Ctrl + T:插入表格(插入表格时一并自动插入“表注“)
      • Ctrl + N:本行居中
      • Ctrl + R:本行靠右
      • Ctrl + P:插入图注或表注
      • Ctrl + O:插入作者和当前日期
      • 以上快捷键,可在编辑器右键菜单对应的菜单项中看到。我们不建议用户专门记忆这些快捷键,用多了自然就记住了:)
    • 截至目前,WDTP 共有三种输入 Markdown 标记的方式:

      • 直接输入 MD 标记的文本
      • 使用编辑器的右键菜单
      • 使用快捷键(:这些快捷键并未涵盖 WDTP 所支持的所有 MD 标记)
  • SwingCoder
    • 新增:模板标签{{contentDesc}}。模板制作者可利用此提取文档或目录的描述,默认为 html 的引用格式。
    • 更新:默认的 blog 模板。此更新将影响所有使用 blog 默认模板的用户。解决方案:升级本程序后,执行系统菜单下的“重置/修复系统模板”,而后重新生成整站。
  • SwingCoder
    • 改进:项目数据打包备份时,zip 文件名中给出备份的时间戳信息。
  • SwingCoder
    • 新增:文本高亮的 Markdown 语法(WDTP 所自定义)。格式“需要高亮突出的文本,显示效果:需要高亮突出的文本。快捷键:Ctrl + U。编辑器右键菜单中也有对应的菜单项。

      注:传统 Markdown 语法中的“~~”为文字删除线标记——就我个人的体验来说,阅读网络文章时遇到一段文本被划上删除线总是感觉很诡异,不清楚这段文字到底还有没有阅读价值,或者揣摩作者来这么一手究竟何意(好在这种情况极少)。如果作者将该文作为多次修改、甚至数易其稿的写作艰辛之痛苦展示,可能目的达到了,但是这对读者来说肯定不是良好的阅读体验,也不公平。

      删除线有时也有用,比如:原价 xxxx 元,现价 xxx 元……或者还有其他一些必须使用的场景,此时可使用 html 标签中的 < s />

  • SwingCoder

    勘个误:“~~”删除线格式并非 Markdown 的“正统”语法,属于 MD“方言”的一种。

  • R

    使用中,编辑器可不可以和 Hacpai 社区的这样:
    1、从网页上复制的内容自动转化成 markdown 格式
    2、可以自动下载内容中的图片到本地或者图床存储
    3、可以使用常见的腾讯云、阿里云、七牛等第三方免费存储

    1 回复
  • SwingCoder

    您好,R 朋友。感谢您的宝贵建议。这些功能都可以实现,也都有替代的解决方案(或许不是最佳)。我尝试解释和说明一下,也作为和更多朋友在技术方面的交流和探讨吧。如有不妥或不清楚处,敬请谅解。

    第一个的关键点是 html 到 Markdown 的反向解析,这个比 MD->html 要麻烦一些,也无法做到很理想,毕竟一大批 HTML 格式不是 Markdown 现有的标准能逐一对应的。二者的目标和应用场景也不一致。此外,HTML 5 尚未完全普及,而且今后这个标准肯定还会拓展或更改。这样就给 WDTP 的后期维护与更新带来了很多不确定的问题,维护成本也大了很多。我不敢贸然下手。可能其他做开源的资深同行或老师也很少有人愿意涉入这个泥潭中。

    不包含 HTML 格式的网页内容,可以直接复制粘贴到 WDTP 的 Markdown 编辑器中(它的实质就是一个字体渲染优化过的、跨平台的纯文本编辑器)。等 WDTP 稳定版出来之后,我再抽时间想一下这个问题,看看有没有更好的思路。

    第二个问题比较简单,WDTP 恢复网络数据传输这个模块后,给出具体的网址就可以拉回来。比如判断编辑器中有非项目内部的资源,无论是否远程,都可以自动将该资源拉到项目内部(media 文件夹下,就类似目前的插入本地图片)。内测版发布之前,WDTP 有网络传输这个模块,用的 cUrl 开源库。该模块后来砍了,这样,WDTP 就没有任何与外部通讯的能力。我再三考虑,还是想让它保持一款桌面单机程序应有的单纯性和简洁性,一些不必要的功能都砍掉,把精力集中在其他方面。这么做牺牲最大的就是用户不能时刻收到版本更新的提示,但也最大限度保证了用户使用软件时的清净、不被干扰。此外,这些功能,都可以通过其他第三方软件或技术来方便地实现,无需再造轮子。毕竟,开源软件的开发原则与商用软件有质的不同。

    砍掉数据传输这个模块还有一个原因,我的另一款开源软件,有多客户端数据实时同步(电脑、平板、手机等等)、上传下载等功能,我不想两者在功能上重叠或“撞车”:)

    第三个问题没有考虑过,我对国内这些第三方存储技术和服务不了解,从来没用过,也不敢将 WDTP 的某些功能托付给他们。虽然,他们肯定都是一些极优秀的公司和团队开发的产品:)

  • SwingCoder
    • 改进:确保 Windows 平台下本程序启动后显示在桌面上并位于最前(强占焦点)。
  • SwingCoder
    • 实现:Markdown 标记输入时的自动包裹功能。详解:
      • 如果当前选择了文本,则输入*,`,~等 Markdown 标记之后,该标记成对出现并自动包裹所选文本。
      • 输入一个~即可实现双~包裹
      • 输入`和~之后,插字符光标自动位于结束标记之后,便于用户继续输入
      • 第一次输入*之后,自动选择原有文本,等待用户输入第二个*。第二个*输入之后,插字符光标自动位于结束标记之后,便于用户继续输入
  • SwingCoder
    • 实现:编辑模式,按下 tab 键后缩进所有已选择的文本(四个空格,以段落为单位集体缩进)。如果此时未选择任何文本,并且上一行是一级列表,则按下 tab 键之后,自动给出同类型二级列表的 Markdown 标记(注意,以上一行为判断依据,而非上一段)。
    • 实现:编辑模式,按下 Shift+tab 后,如果未选择任何文本并且当前行有缩进(无论是否 4 个空格),均取消当前行的缩进(注意:此时以插字符所在行为判断依据,而非本段)。按下 Shift + tab 后,如果当前有所选文本,则取消所有已选择文本的缩进(无论是否 4 个空格)。此时,以段落为单位集体“反缩进”。以上情况,如缩进大于 4 个空格,则最多反缩进 4 个空格(正常写作而非展示代码的情况下,5 个空格以上的缩进应该极罕见,在 Markdown 中也没什么意义)。
    • :当前有所选内容并且按下 tab 或 Shift +tab 后,完成上述功能的同时,取消选择任何文本。
  • SwingCoder
    • 改进:上一段是一级列表时,下一段按 TAB 键之后,是否自动给出同类型二级列表的判断标准由行改为段
  • SwingCoder
    • 实现:编辑模式下回车键的多功能。如果当前段落是一级或二级列表,按下回车键之后,插字符开启下一段,该段落自动成为与上一段平级的列表。此时如果不输入任何内容,再次按下回车键,则该段落自动成为二级列表(如果上一段是一级列表的话)。如还是不输入任何内容,第三次按下回车键,则清除本段的列表标记,插字符自动开启并进入下一段。更详细的解释:
      • 某一段是一级列表,如果下一段也是一级列表,直接回车。
      • 某一段是一级列表,如果要在它下面增加二级列表,本段输入完成后,连续两次回车。
      • 某一段是二级列表,如果下一段也是二级列表,直接回车。
      • 某一段是二级列表,如果取消列表输入,开启正常段落,不输入任何内容,直接回车。
  • SwingCoder

    补充:回车键的行为,不仅作用于段尾,也适用于断行操作。回车断行后,插字符后面的内容成为下一段,该段自动继承上一段的列表级别。不仅如此,再次回车,可将该段降级(如果是一级列表的话)。再次回车(或先前已是二级列表,此时就无需第三次回车了),则使其成为正常段落。

  • SwingCoder
    • 实现:智能粘贴(使用快捷键 Ctrl + V 时)。详情:
      • 如果系统剪贴板中的数据是项目内部链接(文件树-右键菜单-Get Path 所获取的),则插入该文档或目录 Markdown 格式的内部链接
      • 如果系统剪贴板中的数据是一个合法的 http/https 网址,则插入此网址 Markdown 格式的链接。此时,如果未选择任何文本,则给出“Click here(点此访问)”的链接文字,并自动选择之,以便用户输入改写。如果插入网址前选择了文本,则所选文本成为链接文字。
      • 如果系统剪贴板中的数据是网络图片的地址,则插入显示此图片的 Markdown 格式(此图片不拉回本地)。
      • 以上粘贴,仅适用于快捷键 Ctrl + V。如使用右键菜单中的“Paste”菜单命令,则不做任何处理(某些时候需要“原始粘贴”)。
  • SwingCoder
    • 改进:Ctrl + 回车在当前段落之前插入新段落,不再自动添加隔行,而是紧邻当前段落。即:Ctrl + 回车相当于正常回车键的反功能。正常回车是在下面插入新行,而 Ctrl + 回车则在上面插入新行。所不同的:Ctrl + 回车是以当前段落为单位,在段落之前插入新行,而不是在当前行之前插入新行。
  • SwingCoder
    • 新增:非标准 Markdown 语法标记:加粗同时斜体。语法格式:*要加粗并倾斜的文字*,效果:要加粗并倾斜的文字。因该格式不常用,故编辑器中没有定义其快捷键,也没有定义其智能化输入模式(比如选定文本后按三下*号完成自动包裹这个功能)。使用方法:可手工输入,也可利用编辑器右键菜单中的“Format(格式)”菜单项来完成(当前有选择的文本时,该文本自动被三星包裹;如没有选择任何文本,则给出六个星,插字符光标自动定位到需要输入文本的六个星的最中间)。
  • SwingCoder
    • 实现:缩略语功能。详解如下:
      • 编辑文档时,部分内容可能太“碍眼”,不想时时看到;或者无需经常改动(防止误编辑);或者由于非阅读性字符太多、太难看而破坏编辑时版面的美感(比如包含非标字符的 UTF-8 转义或复杂参数的较长网址、代码等等),此时可用一个自定义的短语来代替这部分内容。
      • 文档属性面板,“Abbrev(缩略语)”专司其职。格式为:“缩略语(空格)所代表的原始内容”。一行一个,行与行之间可使用空行隔开,以便区别。
      • 设置好缩略语之后,编辑模式下,可将要缩略显示的内容删掉,代之以刚刚自定义的缩略语。
      • 原始内容虽然在编辑模式下看不到了(看到的是缩略语),但预览时会出现。即:原始的文档中虽然已经找不到这些内容,但预览并生成网页时,这些内容还是会出现(此时网页中不出现这些内容的缩略语)。
      • 也可以用这个思路理解:编辑模式下,缩略语用来替代它所代表的原始内容;而预览并生成的网页中,原始内容反过来再替代它所对应的缩略语。
      • 可在文档属性面板的“Abbrev(缩略语)”中增删改已有的缩略语,即改即生效(预览模式下按 F5 刷新当前页面即可)。
      • 注 1:如果某个文档定义的缩略语太多,可能会出现缩略语重复的情况(此时它们所代表的原始内容有可能一致,也可能不一致)。此时,软件不进行校验、提醒或干扰,以第一个为准。
      • 注 2:一个文档中,同一个缩略语可多次出现。所有出现的地方,在预览或生成网页时全部替换为该缩略语所代表的原始内容。
      • 注 3:所定义的缩略语,请不要和文档中已有的语句或短语相同,否则,这些内容也将成为缩略语(原因见注 2)。此外,为了便于阅读、编辑和理解,可使用自己习惯的前缀和后缀来包裹缩略语。比如:“长链 01”、“@ 该处不宜改动 @”、“AbbrevOfSomeFunnyThings”……等等。
      • 注 4:缩略语所代表的原始内容中可包含 Markdown 或任意 html、css、js 等标记/代码。这些标记和代码在预览或生成网页时和普通内容一样,将被正确识别和处理。这一点在编辑高级功能的文档时非常实用(比如动态网页或格式与样式非常丰富的个性化/专业性文档/网页,编辑时不破坏版面的可读性与美观度)。还可以用该功能实现 Code snippets 展示……玩法很多,敬请摸索:)
      • 注 5:采用缩略语后,无论整个项目的搜索替换,还是当前文档的搜索替换,都无法再针对缩略前的原始内容进行。这一点我稍后将予以改进。
  • SwingCoder

    发布:WDTP 0.9.170211(内测版)

    主要更新记录:http://underwaysoft.com/works/wdtp/updateList.html
    下载页:http://underwaysoft.com/works/wdtp/download.html

  • SwingCoder

    好像漏了一个更新记录(该更新已包含在刚刚发布的 0.9.170211 版本中):

    • 实现:每个项目都可以记忆用户调好的窗口大小及屏幕位置并自动使用之。 WDTP 允许操作系统同时运行多个程序实例,这样可以同时打开并处理多个项目,每个项目都可以有自己的大小和位置。

  • SwingCoder

    发布:0.9.170211 Windows 32 位版本

    使用 32 位 Windows 操作系统的用户请确保本机已安装了 IE 11 浏览器和微软雅黑字体。

  • SwingCoder

    修复:Markdown 行内代码解析与`转义方面的一个 bug

  • SwingCoder
    • 修复:Markdown 行内代码解析与`转义方面的一个 bug
    • 智能包裹标记添加两个快捷键:Ctrl + 8(等同于 Shift + 8),Ctrl + `(等同于 Shift + `)。这个快捷键用于解决编辑器处于非“自然状态”下的键盘快捷键输入不被识别与认可的问题(比如处于中文输入状态时)
      • :cmd + `在 macOS 安装了某些特定中文输入法的前提下不可用
请输入回帖内容 ...
Akkuman
python与二次元爱好者,开车司机 荆州

推荐标签 标签

  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 203 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    172 引用 • 414 回帖 • 375 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 397 关注
  • AWS
    11 引用 • 28 回帖 • 10 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    171 引用 • 513 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 611 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 16 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    549 引用 • 674 回帖
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖 • 1 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 394 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 1 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 76 回帖
  • OneDrive
    2 引用 • 2 关注
  • gRpc
    11 引用 • 9 回帖 • 88 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖 • 1 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖 • 1 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    12 引用 • 54 回帖 • 167 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 1 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 499 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    99 引用 • 367 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    28 引用 • 226 回帖 • 137 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 637 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    93 引用 • 901 回帖
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 10 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 74 关注