【投票】列表表示目录结构的写法习惯,以及关于AnyBlock插件语法的开发意见征集

这里是 AnyBlock(后面简称AB) 作者,虽然这个话题会和该插件有点相关,但是:

效果预想

废话结束。我将为插件新增一个将列表转化为文件夹结构的功能,效果是这样的:

效果很简单:用/来表示目录,没有/就根据后缀名来判断文件类型并上图标,然后支持点击折叠(折叠必须有,有折叠才能够写上百个文件的目录结构时还能保持较好的阅读性),以及强制不允许换行!

这里的图标也可以不要,你可以在CSS将before伪类去除,然后仿照Linux的路径方式也是可以的:深色模式下蓝色表示文件夹、白色表示文件

其实AnyBlock插件本来就已经能够做到这一点,渲染后也支持文件夹的折叠,还支持目录或文件的备注,其实也能用于表示目录。但我个人还是认为非常不足,没达到我的期望。AB的 list2lt 原来的效果:

不足点在于样式不对不紧凑、还不能禁止换行(前两个还可以用anyblock的addClass处理器来解决这个问题)、还有不能很好地区分文件夹和文件、文件类型又缺少图标

语法的规定(目前想要征集的意见)

要用什么来表示一个目录呢?有三种方案:

  1. src/: 后面加/。简称后/方案
  2. /src: 前面加/。简称前/方案
  3. /src/: 前后加/。简称双/方案

分别的效果大概是这样的:

- src/
    - componment/
        - utils/
            - SuperButton.vue

- /src
    - /componment
        - /utils
            - SuperButton.vue

- /src/
    - /componment/
        - /utils/
            - SuperButton.vue

各自的优缺点

先给结论,我下面会解释这张图

图片

(1) 后/ 方案

这也是一开始的方案

  • 优点
    • 最科学,最规范,路径拼接起来是绝对正确的!
    • 可以表示linux的根路径,其他两个方案则无法做到这一点
  • 缺点
    • 无ab渲染的话,纯文本不好看。特别是在AB语法里,是可以写文件备注的(如果你要记录文件夹结构,大概率是会写各个文件夹或文件的一些备注的,AB还支持多层备注)。
      (关于纯文本可读性这点是否需要保持得非常NICE,经常会在群里看到争议,这里就不要吵,都对!)
    前置:
    
    - /xxx, 文件夹备注1
        - /xxx, 文件夹备注2, 备注2.2
           - xxx, 文件备注
    
    后置:
    
    - xxx/, 文件夹备注1
       - xxx/, 文件夹备注2, 备注2.2
           - xxx, 文件备注
    

(2) 前/ 方案

后/ 的基础上,将/前置。但其实这是比 后/ 更开始的方案。因为我一开始设计时就没想到用/这个符号,而是选择了另一个符号表示文件夹的图标,类似于这样:

- = 文件夹1
- = 文件夹2
    - = 文件夹3
        - 文件1
    - 文件2

其实就是类似于前面有个折叠符号这种效果:
(但不能真的用这两个符号,> 在其他md软件会混淆成引用的,而不会打,V也怪怪的)

- > xxx1
    - xxx2

- ∨ xxx1
    - xxx2

这里主要是从图形来看,会更美观一点,还是举回刚刚的例子。前/在辨别一个项是目录还是文件,会更快更舒服!

其实主要是大量同级路径时区分度较低(如下,其实这里举了一个比较极端的例子,例子不极端效果不明显。一般来说先文件夹再文件是合适的。不过在Linux ls是可以选择先目录再文件,以及是纯按字母排序的,并且默认方案好像是按字母而非是否文件夹排序,这点与Windows的规则有所不同)

前置:

- /xxx, 文件夹备注1
    - /xxx, 文件夹备注2, 备注2.2
        - /xxx, 001
        - xxxx, 001
        - /xxxxxx, 001
        - /xxxx, 001
        - xxxxxxx, 001
        - xx, 001
        - /xxxxxxxxx, 001
        - /xxxx, 001
        - xxxx, 001
        - xx, 001
        - /xxxxxxxxx, 001
        - /xxxx, 001
        - xxxx, 001

后置:

- xxx/, 文件夹备注1
    - xxx/, 文件夹备注2, 备注2.2
        - xxx/, 001
        - xxxx, 001
        - xxxxxx/, 001
        - xxxx/, 001
        - xxxxxxx, 001
        - xx, 001
        - xxxxxxxxx/, 001
        - xxxx/, 001
        - xxxx, 001
        - xx, 001
        - xxxxxxxxx/, 001
        - xxxx/, 001
        - xxxx, 001

缺点:

  1. 正确性欠佳。路径拼起来是错的,为了美观而前置/是否值得?这是一个需要深思的问题
  2. 如果我想表示这是个linux的根路径,则无法表示
    (也能想其他方法表示,不算大问题,但其他方案肯定没后/方案直接在前面加个/直观和方便)

(3) 双/ 方案

特点和优缺点和 前/ 差不多,美观性可能还会更好,但写起来会很麻烦。

最后的唠叨

三者各有优缺点,不过说是缺点,但如果不是太强迫症,其实大家的缺点都是可以接受的,三套其实都可用。只是这个东西可能会有主观性,我不想太草率。如果草率定下来了,第一批用插件这样写了,后续发现不合适就很难再做修改了,不然这段时间写的笔记都要全部重新修改。

另外,前面说了不用该插件的也能参与讨论。而不说插件的特殊渲染,我觉得仅仅是作为一种风格,也是可以平时这样去写的。如果以这个角度来看,可能会更多地站在文本美观性的考虑来想。
相反,如果是重度插件依赖症,文本美观性的权重会较低,反正都是看的渲染后的结果。

至于……而大家喜欢怎么写就怎么写?给一个切换的选项?……再说吧,我不想发展成这样。希望大家的选票结果能尽量一致……emmm最好是和我心里青睐的答案一致

投票就三个选择:后/前/双/。或有其他方案也可下面评论交流

定选,以及新增可选方案(编辑新增于08.03)

编辑这里的时候,其实投票已经结束了,结合在另外两个Ob群的意见,后置/ 方案以碾压式的选择获胜。

而我后来也想到了一种可选的方案:

一开始两种方式不能并存,是因为两套方案的解析规则是冲突的。前/后/ 语法里表示的是根路径。但是我可以用 ./ 来做一个前置标识。如下:

原后置:

- xxx/, 文件夹备注1
    - xxx/, 文件夹备注2, 备注2.2
        - xxx/, 001
        - xxxx, 001
        - xxxxxx/, 001
        - xxxx/, 001
        - xxxxxxx, 001
        - xx, 001
        - xxxxxxxxx/, 001
        - xxxx/, 001
        - xxxx, 001
        - xx, 001
        - xxxxxxxxx/, 001
        - xxxx/, 001
        - xxxx, 001

可选的前置标识:

- xxx/, 文件夹备注1
    - ./xxx/, 文件夹备注2, 备注2.2
        - ./xxx/, 001
        - xxxx, 001
        - ./xxxxxx/, 001
        - ./xxxx/, 001
        - xxxxxxx, 001
        - xx, 001
        - ./xxxxxxxxx/, 001
        - ./xxxx/, 001
        - ./xxxx, 001
        - xx, 001
        - ./xxxxxxxxx/, 001
        - ./xxxx/, 001
        - xxxx, 001

两种方式的解析不冲突,所以可以共存。前面有个 ./ ,这是可选的。

如果需要像linux默认ls那样按字母排序,文件夹和文件混杂在一起且文件较多,实在希望在文件名的最前面将目录与文件能更好地分割开,且文件比较多,可以临时选用这种方案。其他目录比较简单的情况,可以不用(按需使用)

  • 优点
    • 在上面说到的这种情况下可以临时选用,作为“可选项”来说很灵活。
    • 确实能有效增加辨识度
    • 拼接起来也是对的:/usr/./local/ === /usr/local/。语法解析时,我会将这种 ./ 原地cd的符号给省略掉。
  • 缺点
    • 写起来麻烦,一个目录要用三个符号表示。所以一般不建议这样去做,只是作为特殊场景的可选项。
    • 这个才是最致命的缺陷./ 其实是无含义的,并不是说这个表示的是目录,目录的表示还是以后置的/来表示。也就是说,如果你文件项这样写:./xxx.md (这种写法我就不去禁止说是语法错误了),我会将这一项看作是一个文件而不是目录。前面增加./来表示目录这一行为 —— 是约定而不是必须这样做。如果用户乱用,反而会带来书写混乱的缺点

我觉得后置更好,毕竟有时候路径可以直接复制拼接就用挺爽的

1 个赞
- src/
    - componment/
        - utils/
            - SuperButton.vue

我觉得这种好一点吧,更符合平时文件路径的直觉

1 个赞

投票截止了,加上ob群的结果:后/ 方案以大比票通过(3+3+2=8票)

不过我后来在 后/ 的基础上又增添了一个可选的语法(见原文最后一个标题),那个新增的东西倒是暂时没什么反馈