但缺点是这个控制了所有的链接跳转,所以点击外部链接不会跳转到浏览器打开,只会显示下一个章节。
我去英文论坛上搜索了一下,没发现解决方案。
但缺点是这个控制了所有的链接跳转,所以点击外部链接不会跳转到浏览器打开,只会显示下一个章节。
我去英文论坛上搜索了一下,没发现解决方案。
以前怎么不记得有这么个东西。在写wikitext时,特别是经常要用到各种微件和宏,变量什么的,经常就不知道怎么搞了。用这个一查,方便多了。
\define actions()
<$action-log/>
<$action-setfield $tiddler="$:/state/x/test" text=<<event-navigateTo>> />
\end
<$button class="card">
<$action-setfield $tiddler="$:/state/x/test" text={{{ [!is[system]sort[title]]-[tag[X]] +[after{$:/state/x/test}] }}} />
<$messagecatcher $tm-navigate=<<actions>> >
<%if [{$:/state/x/test}compare:number:gteq[1]] %>
<$transclude tiddler={{{ [[$:/state/x/test]get[text]] }}} mode="block"/>
<%else%>
恭喜你,你已经读完了所有内容了!!!
<$button>
<$action-setfield $tiddler="$:/state/x/test" text="1.1.1" />
回到第一章
</$button>
<%endif%>
</$messagecatcher>
</$button>
我这个示例要处理的是,让文本中跳转的链接内容直接显示在这个文本当中。所以用到了$messagecatcher
微件,但和绝大多数文档内容一样,几乎没有什么新手友好的解释。
因为<$action-setfield $tiddler="$:/state/x/test" text=<<event-navigateTo>> />
这一段中,我把<<event-navigateTo>>
改成任意一个条目都能实现。所以我估计肯定是有一个变量名的,但我并不知道这个变量名是什么,怎么写。
然后在开头的define中加入了action-log
微件,直接把所有内容都显示出来了。
直接对应查找就可以了。
透过这个控制台输出,我发现了之前插件里写的宏。那这样看的话,是不是每一个宏在处理TiddlyWiki的交互逻辑时都会运行一遍呢?那一些不常用的宏或许可以避免来提高性能了。
改成这样了,勉强能用吧。感觉这种事情真不好做。
@oeyoews 好,我再试试。
@oeyoews 类似上面图片思源笔记那种形式的。只要足够宽高就可以。大概宽高占比80%就行。
@oeyoews 对的,只要修改宽高就好。当然有更好的样式就更好了。
上面图片的网址。
顺带吐槽一下,这就是我认为TiddlyWiki的不便之处。TiddlyWiki既不像Obsidian那样社区发达,虽然Obsidian是闭源的,但为什么Obsidian插件反而更丰富呢?TiddlyWiki拥有wikitext的编程方式,为什么插件写起来还这么难受呢?现在我都不敢想象如果没有TiddlyWiki舞这个文档,我要如何使用TiddlyWiki。但Obsidian用户不需要什么特殊的文档,因为markdown的文档多如牛毛。而思源笔记呢,自带了一大堆文档,还有一个中文友好的社区,有太多人愿意为之贡献和付出了。
而且TiddlyWiki国际论坛,几乎从来没有保存解决方案,有也只是一些用户自己保存了一些自己常用的方案。这就导致,如果有新用户进来,他也遇到了这个问题,那么他的解决办法除了直接在社区里提问,就是像我一样去翻整个TiddlyWiki社区论坛讨论,这让我感觉像是翻垃圾堆。因为要看一大堆与我想解决问题无关的内容。
他们一边抱怨没有足够多的贡献者,一边又不愿意自己去做一些发展社区的事情,甚至都让我感觉他们不希望新用户加入,他们可能觉得只要等待,新用户就会自动吸引过来了。
所以有很多时候,我也觉得自己是在浪费时间。
我想改一下这个模块的样式,不然宽高实在是不方便。
我最近在做一个弹出设置式的插件,类似于思源笔记或Obsidian的那种形式。
但 现在遇到了一个问题,就是tm-modal不好自定义样式。文档上说可以增加class字段,然后设置值来添加。
我看到论坛讨论这里确实有一个方法,但这个样式做出来之后会有问题。
目前我推了一个之前没有修改的版本在我的插件仓库里,可以帮忙看看。
我感觉也像是css的问题,但问了一天AI了,也没找到原因。这个问题是上面论坛那个解决方案中就有的,我也不知道为什么。
但令我很奇怪的是,我又在别人的wiki中发现了可以设置宽度。
但又没找到他是怎么设置的,也没有任何形式的说明。
而且他写的代码也没有别的特殊之处,我不知道这个是如何实现的。
论坛上也没有别的解决方案了。
@linonetwo 感觉可以加上。省得他们说只推荐太记的配置模板。我记得刚开始发布太记的时候,知乎下面有就有个评论说他们真正用上了TiddlyWiki,好像一对外国夫妇来着。其实这是个普遍的问题。
我也不知道为什么他们对空白版本那么执着,完全理解不了。从配置好的版本一样可以开始构建用户真正想要的版本,而且更快更方便。
这是一个有争议的话题,但我认为值得单独拿出来讨论。我最开始学习TiddlyWiki时,并没有使用空白版。因为当我发现空白版除了一个语言插件和核心外,什么也没有,我就知道这并不是我想要的东西了。之后过了几个月,我发现林一二开发了一个软件,里面有配置好的TiddlyWiki时,我才真正意义上进入TiddlyWiki的世界。
刚开始的时候,我对很插件都不熟悉,但当时中文社区里有比较友善的氛围,所以我总是提出各种各样的问题。比如为什么筛选器要这样写,为什么不那样写,这个插件为什么会有这样的功能,如何修改插件的内容来实现自己想要的功能。林一二和其他社区成员经常回答我的问题,这让我深入了解了这些插件。
我要指出一点的是,TiddlyWiki是完全可离线的产品的,且拥有非常丰富的功能。所以我不担心插件会破坏我的笔记或者泄露我的数据。至少目前我还没有发现。当然插件之间确实会存在冲突的情况,这个后面再讨论。使用太记配置好的TiddlyWiki并不需要担忧什么,因为林一二也在使用,每次更新太记时,他都会更新这个wiki模板。如果存在插件冲突,那他也会及时修复。当然,你可能不满意林一二对TiddlyWiki的配置,那可真是太好了。因为你可以在他的配置上进一步修改,把他设置好的TiddlyWiki构建成你想要的TiddlyWiki。这正是TiddlyWiki的诱人之处。每个人都可以有自己独特的TiddlyWiki,但如何开始呢,我认为从林一二配置好的TiddlyWiki或者其他任何人配置好的TiddlyWiki开始都会比从空白版本要好很多。
接下来我会说一些插件来进一步证明,为什么新用户更需要从提供好的模板而不是空白版本开始。首先,他需要安装CPL插件或者其他插件源,不然他只能获取官方插件,而无法获得其他插件。这里我推荐CPL,是因为这个插件源收集了且正在收集世界上绝大多数的插件,下载、安装和更新插件都非常方便。我记得在没有CPL之前,我更新插件需要自己去追踪插件有没有更新,然后再把更新好的插件拖入到我的wiki中。当我有好几个插件需要更新时,我就不得不打开好几个网站去更新。这让我觉得很烦。所以我才会推荐任何一个新用户使用CPL管理他的插件。
其次,除了CPL之外,有一些插件我认为是每个TiddlyWiki都需要安装的。比如$:/plugins/flibbles/relink
,如果没有这个插件和配套的系列插件,那么链接更新会非常麻烦。再比如$:/plugins/kookma/commander
,没有这个插件,批量修改会变得非常麻烦。以及$:/plugins/oeyoews/tiddlywiki-codemirror-6
,我认为这是TiddlyWiki目前最好的编辑器插件。想象一下,一个新用户接触到TiddlyWiki时,就遇到了这些优秀的插件,那他是不是更有兴趣了解TiddlyWiki呢?如果提供一个空白版给他,那他什么也发现不了。他并不知道在TiddlyWiki论坛和谷歌之外,还有这些优秀插件存在。(并且更多的时候,新用户在接触到TiddlyWiki之后,不太会主动去搜索TiddlyWiki相关的内容。)因为TiddlyWiki不像Obsidian,Obsidian几乎每个优秀的插件,都有非常详细的文档和介绍视频,即使是在中文社区,都有很多人自发地宣传Obsidian,更不必提那些具有商业性质的宣传了。
没有人会否定TiddlyWiki功能丰富,但在接触到wikitext和widgets之前,他是不是需要先使用TiddlyWiki,写下一些他的笔记,然后才开始TiddlyWiki的旅程。并且我认为TiddlyWiki的插件和TiddlyWiki自身功能并不是冲突的。以我最近实现的一个例子来说,我使用了$:/plugins/oeyoews/neotw-homepage
插件,并修改了里面的默认配置。然后我学习了TiddlyWiki自身的一些功能,最终组合成了我想要的功能,在没有打开任何条目时,展示的是页面按钮。效果如下图,这是目前绝大多数笔记软件都具备的功能,但TiddlyWiki似乎总是少了一点什么。
我并不否认有些插件功能非常简单,简单到有经验的用户只需要写wikitext就能实现。但对新用户来说,他什么都不知道。即使是受过高等教育和计算机专业的用户,他们也未必能迅速接受wikitext。当他们面对空白版本时,就好像面对广阔但无人开发的土地。如果什么东西都要他们从头做起的话,那他们肯定会选择Obsidian或者notion等更容易上手的工具。
有些人可能会觉得我们为什么需要新用户,TiddlyWiki发展二十年了,新用户的加入一直都很少,而且TiddlyWiki本身就具有很高的学习曲线。
我并不赞同这个观点,因为很简单,我们都希望TiddlyWiki能够活跃地存在下去。这就需要持续吸引新用户加入。新用户加入,他们会提出新的需求,新的解决方案和新的宣传方式。最简单的是向身边的朋友和同学推荐TiddlyWiki,进一步扩大TiddlyWiki的知名度。优秀的则可以写一些宣传文章,录制一些宣传视频,甚至写插件介绍和完整的教程文章。这些都是新用户能够给我们带来的好处。而我们最需要做的事情就是把新用户留下来。因为笔记软件的市场并不大,notion和Obsidian已经吸引了很多用户,而在中国,有许多新用户被思源笔记吸引。不管是开源的还是商业软件,新出的软件总是能够吸引到新用户,新出的软件往往有这样或那样花哨的功能,但新用户只要被吸引住了,那他们可能就会留在那里。
我以思源笔记为例来说明。思源笔记是开源加商业的组合。本地可离线的编辑器功能都是开源免费的,商业部分则是云端同步。但也可以选择其他同步方式。思源笔记发展非常迅速,在经过几次大的版本迭代后,现在已经稳定。思源笔记的很多插件都有中英双语介绍。这些插件的开发者大多都是中国人,但我要指出一点的是,很多人并不是专业的开发者,有些人在开发插件之前甚至没有接触过html、css和js。而这些人就是我们需要的新用户。如果我们也有很多并不了解前端知识的新用户,在接触了TiddlyWiki之后了解了,并把这些知识用在改造TiddlyWiki上,然后进一步传播他的解决办法,是不是会让TiddlyWiki更加繁荣呢?在AI盛行的现在,新用户完全可以成为一个插件开发者,因为只需要使用基本的html、css和js。
如果我们需要新用户来发展TiddlyWiki社区,那我们就需要先把新用户留下来。而要把新用户留住,就需要从他们的角度去看待TiddlyWiki。我向很多朋友推荐过TiddlyWiki,但大多数都转向了Obsidian,即使他们已经学会了如何使用TiddlyWiki。他们觉得TiddlyWiki太复杂了,Obsidian更好,因为Obsidian是闭源的,所以他们只需要去组合Obsidian的插件就可以了,只需要保证插件之间没有冲突就可以了。他们不需要自己写代码,而在TiddlyWiki中,他们觉得还需要写wikitext这种代码内容,太麻烦了。新用户在TiddlyWiki初期也可以这样,他们只使用配置好的版本,然后删减一些插件或安装一些其他插件来实现他的目的。等他能够接受TiddlyWiki时,再深入了解TiddlyWiki的wikitext功能也不迟。如果他们一上来就接触空白版本,那么除了顶尖专家外,我相信没有新用户会愿意接受这种困难的挑战。
最后,我仍旧向新用户或我的朋友推荐太记,而不是TiddlyWiki空白版本。太记是开源免费的,里面有配置好的TiddlyWiki模板,太记还具备自动同步到GitHub的功能。如果愿意还可以把GitHub仓库公开然后发布成在线网址,构建属于自己的博客。我的博客就是这样搭建的。你只需要安装太记,然后新建一个TiddlyWiki,选择本地文件夹路径,就可以开始你的TiddlyWiki之旅了。
https://github.com/oeyoews/tiddlywiki-codemirror6/discussions/151
问题己解决,是下面条目的影响,插件不知道为什么被我设置成这样了。默认安装是没有影响的。
title: $:/themes/tiddlywiki/vanilla/metrics/storytop
{{$:/plugins/inmysocks/iconmenus/icon_menu_settings!!top_bar_height}}
排查方法很简单,也很原始。就是顺着git commit去找。
首先找到一个没有这种问题的git commit,然后再找离这最近有问题git commit。我是先找了最近一个月的,然后找了六个月前的,再找了五个月前的,再找了四个月前的。总之忙了一下午,终于是找到了有问题的git commit,然后就去查是什么提交出现了问题。
当然这种办法也有不利因素,那就是有一些文件不会被git追踪,具体可参考 .gitignore
文件夹。当然这需要一些git知识。
GitHub desktop,没有直接显示太多信息,再加上是英文的。所以后面我就用vscode的源代码管理插件进行查看。
是我犯蠢了。之前找codemirror6插件的bug时,我关闭了代码区换行。现在重新打开就可以解决了。但codemirror6的bug我感觉还是没解决。
今天发现了另一个相关的问题,那就是在我既装了codemirror5,又装了codemirror6插件之后,当我使用codemirror5插件时,我发现即使我设置了内容超过屏幕时换行,也仍然会出现无法换行的情况。
我感觉就是这种不换行的情况,影响了插件。
而原因可能源自于我使用了下面的代码来进行一个全局代码可重复的样式。
.copy-code{
font-family: Consolas;
}.copy-code dt{
background: #f5f5f5;
border: solid 1px #cccccc;
border-bottom:unset;
padding: 0.5em;
border-radius: 3px 3px 0 0;
font-size: 1.1em;
}.copy-code dt:empty, .copy-code dd small.hide{
display: none;
}.copy-code dd{
margin: 0;
}.copy-code dd>pre{
border-radius: 3px;
background-color:#f8f8f8;
height: inherit;
overflow-y: auto;
}.copy-code dt:not(:empty)+dd>pre{
border-radius: 0 0 3px 3px;
margin-top: 0em;
}.copy-code dd{
position: relative;
display: block;
}.copy-code dd :is(button, small) {
position: absolute;
opacity: 0.3;
padding: 5px;
}.copy-code dd button:hover{
transition: opacity 150ms ease-in-out;
opacity: 1;
}.copy-code dd button {
font-size: 0;
right:0;
display: flex;
align-items:flex-start;
justify-content:flex-end;
pointer-events:none;
}.copy-code dd button svg {
width: 20px;
height: auto;
pointer-events:all;
}.copy-code dd small {
inset: auto 0 0 auto;
text-transform: uppercase;
font-weight: bold;
font-size: 1em;
}
现在我感觉上面的代码可能有问题。
下次开腾讯会议的时候可以演示一下。我这边还是能够稳定复现的。
现在问题变得复杂了。因为插件官网那边复现不出来。我这边也检查了各个插件,检查了一晚上也没检查出来。
目前问题是,使用codemirror6插件,只有屏幕尺寸在移动端大小的时候可以往下拉,而超过屏幕尺寸的就无法往下拉。但如果转换成默认编辑器,则同样是可以往下拉的。如果使用之前的codemirror5插件,也是可以往下拉的。
我检查了各种问题,但最终似乎还是codemirror6插件的问题。但我卸载了重新安装一遍,仍然会有这个问题。但我在插件官网那边却一直复现不出来。
比较离谱。
太记可以让条目单独一个窗口。感觉可以从这里增加一个打印成PDF的按钮。类似于浏览器的打印方案。
不过这种打印出来的效果估计也不太好。
不过我感觉解决思路应该是写一套css去覆盖掉其他的css,而不是每个都去修改或增加。
@linonetwo 感觉也很快了。未来TiddlyWiki还是能再次发展起来的。
最近我一直在看B站up主原子能的视频,他的一个口号是MAKE PROGRAMMING GREAT AGAIN。我们可以搞个相似的口号,Make TiddlyWiki Great Again。
上次我想把这个口号加到GitHub仓库的组织里。但好像搞不了。
TiddlyWiki真的很不一样。如果TiddlyWiki倒下了,那么未来肯定会有一个SuperTiddlyWiki的。
我仍旧觉得未来TiddlyWiki会比Obsidian更受欢迎。所以我拜托whitefall写了这样一个工具。这样,当很多人从Obsidian或者思源笔记转到TiddlyWiki时,他们可以使用这个小工具,直接把之前的笔记转换成tid格式,再一键导入到TiddlyWiki中。完美切换。
另一个方面则是,我可以更自然保存AI内容。目前AI生成的内容都是markdown结构的。即使让AI再把内容转换成TiddlyWiki形式的,也总是转换不好。而有了这样一个小工具,我就可以一键复制,然后粘贴过去。再一键复制转换好的格式,贴到我的TiddlyWiki当中。这就非常方便了。
就是我经常会复制一些代码进去看看效果。后面又要删除。删除的时候我需要几行几行得删除,并不能直接拉下来删除。我看官网默认的编辑器是可以实现的。
@oeyoews 你有遇到过这个问题吗?codemirror6插件最近也没更新了。