我如何用 ob 做考研笔记

为什么要写笔记

我时常觉得,人和依托计算机的人工智能相比,最大的劣势就是人类没有可靠的记忆能力。人类通过脑子记住的东西无时不刻不在遗忘、畸变,但是比起完完全全忘记一件事情, 更多情况下我们是丢失了记忆的索引。这就像一个巨大的库房,丢失了账本,你要的东西确实在里面,可是基本上没有可能再找到了。写一本笔记就像是把库房的账本保存到了大脑外面,当我们再次丢失账本的时候就能通过看笔记把丢失的记忆找回来了。

尤其是当学习的内容相当多、时间跨度相当长的时候,一本笔记就像是给人脑这个破筐打了个补丁,阻止了知识流失,掰棒子的狗熊看了都说好

如何做笔记

关于做笔记的方法,我很推荐费曼笔记法。这个词是我生造出来的,灵感来源于费曼学习法。费曼推崇的学习方式是把自己学过的知识再解释给不懂的人听,如果连自己的奶奶都能听明白,那就说明自己已经打通了这部分知识的所有关节,达到了完全的掌握。费曼笔记法就是要求写笔记要像写一本书一样,能让别的读者也看明白,最少也该让自己过了很多天之后再回来看的时候不会疑惑。因此在这里做笔记不应该只是简简单单地划重点,而应该是自己学会了一块知识之后对所学知识的总结与提炼。如此经历了一次吞吐之后,对知识的掌握就能上升一个层次。

这种方法的坏处是原本只包含划重点内容的笔记变成了自己写的一本书,篇幅大大增加,耗时大大提升,几乎是到了课后做这样的笔记都太费时间的程度。因此要提高效率,那就必须舍弃任何手写笔记。至少在汉语上面,熟手打起字来是远远要比手写要快的。

此外,打字的电子笔记天然就适合保存、分享、搜索,必要的时候可以直接打印出来装订成册,并且可以在不同设备之间同步。对于我这样的计算机系的学生而言,在纸质或者电子笔记本上面手写代码无疑是人间酷刑,在这种情况下一个好的笔记软件就尤其必要了。

不过,相对于手写笔记,这样的电子笔记的痛点就在于数学公式作图上面。所以本文分享我如何用 OB 做笔记的同时,一大部分内容就是在写如何解决这些痛点。

总体风格

如无必要,勿增实体。

左侧打开一个 PDF 文件,或者浏览器页面,可以看书、看视频、看文章;右侧打开要写的笔记。不过我个人还是建议视频用手机或者平板之类的其他屏幕来看,左边摆好教材就行了。

文件列表、tag、日历之类的都收折到两边,需要的时候再打开。

和大多数被拿来分享的工作区不同,我始终拒绝加入太多功能,呈现出来就是这样一副朴素的模样。我不希望一个笔记软件的启动时间都要高达十几秒,我同样也对所谓的 All in one 概念不感冒。我认为下面的功能一般做笔记都是不需要的

  1. dataview,我不认为我的笔记已经多到了需要数据库来管理的程度
  2. 任务管理,任务列表还是放在手机桌面上最方便
  3. 天气、看板等小组件
  4. 发布

而下面的功能是做笔记尤其需要重视的

  1. 编辑增强
  2. 快捷键
  3. 搜索以及大纲
  4. 标签
  5. 同步

最重要的是要分辨好自己在做的哪些事情是生产力范畴,哪些事情是娱乐范畴。否则就容易在配置上走火入魔,失去要写笔记的本心。

写一篇笔记

普通编辑

新建一个文件,然后对着它发呆。

我推荐第一组要安装的插件是

  • Easy Typing
  • Word Splitting for Simplified Chinese in Edit Mode and Vim Mode

markdown 毕竟是英文世界的产物,默认的各种格式都是英文符号,中文符号连括号补全都没有。切换输入法虽然只需要按一个键,给英文中文交界处加一个空格也只需要一个键,但即使是这样也还是太慢了。写的内容一多就会影响效率。这时候 Easy Typing 就有了它的用武之处了。尤其是在打双括号链接、双 dollar 符号包围的公式的时候,这个插件能给你想象不到的丝滑体验。

此外要把光标挪到一个不太远的地方的时候,双手离开键盘去拿鼠标不是好的选择,有了中文分词之后只需要按住ctrl就可以用左右键让光标在词汇之间跳跃了。

这两个插件看起来没做什么,但是我觉得它们才是改善 ob 编辑体验的主力。所以把它们放在第一个。

如果你会用 vim 的话,效率还能提升。不过我不会我就不多说了。

表格

md 的表格让人诟病不是一天两天了,Advanced table 和 table enhancer 可以稍微改善一下体验,但是也不多。我提供一个新的思路:下载 surfing 插件,其功能是把 ob 从隐藏的浏览器变成明目张胆的浏览器。然后打开

就像现在这样:

直接在网站上编辑表格,然后复制为 md 表格就好了。

surfing 插件还能提供更多想象不到的增强,它的能力是无限的。

公式

我觉得公式是理工科笔记最值得打磨的地方。没有一个好的公式编辑器,你拿什么跟上张宇的脚步?

不论如何在 md 里面写公式都绕不开 latex 语法,还不会的先去学会,这对于以后用 latex 写论文也是极为重要的。之后就去找一张 latex 语法对照表,放在常用的地方,比如当个鼠标垫。

我推荐两个插件

  • Latex Suite
  • Completr

前者提供的是简单的文本替换功能,打几个简单的字母就给你拓展为完整的 latex 语法,原理很简单,但是很好用;后者提供类似编程 ide 的提示,写过代码的都知道。

Pasted image 20230805184720

有这两个插件帮助应该能提高很多写公式的速度,但是我觉得这还需要打磨。

  1. 把 Completr 选择选项的快捷键从 enter 改为 tab,去 .obsidian 下的 hotkeys.json 修改,这样才符合编程的习惯
  2. 修改一部分 Latex Suite 文本替换规则
  3. 希腊字母,比如 ,默认的 key 是 @a,改成双击一个英文字母 a。因为@键在键盘上位置偏僻,希腊字母又需要经常用,所以不能容忍。但是像是 ,这样的只需要打出 xi 就可以的就不需要了
  4. 矩阵 array 的拓展文本 \begin{array} 后加上 {l},否则每次都要回去加一个对齐标识。因为 ob 的 bug 不能像 typora 那样直接双斜杠换行,所以这个就很重要
  5. 增加一个 dsp=>\displaystyle 的规则,可以把巨算符也完全显示,比较美观
  6. mk 快捷键会变成行内公式$$,把它改成变成 $\displaystyle $,这样默认行内公式就会比较美观
  7. 增加一个规则 larr=>\left\{ \begin{array}{l} \end{array}\right.,这样分段函数就不需要大费周章写出来格式了

其他更多的规则可以按照自己的习惯修改。据说这套规则的作者用这个方法加上 vim 可以比收写公式更快。具体内容参照插件主页的介绍。

有了这些就可以以几乎和手写公式一样快的速度写出 latex 公式了。

图例

图例是最为难打字笔记的部分,不论在 PC 上怎么作图,几乎都不可能和手画一样快。除非……

直接截屏书上、课件上、视频里的图例!

先别笑,这确实是实际上我最常用的方法。简单粗暴,但是非常实用。事实上还有大批复杂的公式我也是这样做的。

如果一定需要作图,那我推荐:

  1. excalidraw
  2. drawio
  3. mermaid

如果是统计图或者其他复杂的图例,我还是推荐用 surfing 开个作图网站。

到这里我相信一般笔记都够用了(包括刁钻的数学笔记)。

管理

论坛上有很多知识管理方案,但是我觉得绝大多数人是不需要知识管理的。并不是谁都有那么多内容能把 OB 变成一座图书馆那样,需要去修个图书馆学的学位才能管理好。对于我们来说,只需要做好两件事:

  1. 文件夹归类好
  2. 使用 tag

具体怎么做看个人风格,做好这些对于大多数人来说就差不多了。

同步

ob 有个特点,就是配置在内的所有东西都存在 vault 内,我想问还有什么比 git 更适合这种结构的项目呢?

不过我只需要在我的电脑和 win 平板之间同步就好了,这几乎没什么技术含量。我也在手机上做了同步配置(Mgit),但是事实证明我根本不会用手机看笔记

37 个赞

Latex Suite 和 Completr 的配置文件可以分享一下吗:heart_eyes:

1 个赞

我没有改completr的配置文件,只是修改了快捷键;像是Latex Suite也就是在原来的基础上增加了文中说的那几行,最好还是自己配置。我的配置列在下面

[    
    // Math mode
    {trigger: "mk", replacement: "$\\displaystyle $0$", options: "tA"},
    {trigger: "dm", replacement: "$$\n$0\n$$", options: "tAw"},
    {trigger: "beg", replacement: "\\begin{$0}\n$1\n\\end{$0}", options: "mA"},


    // Dashes
    // {trigger: "--", replacement: "–", options: "tA"},
    // {trigger: "–-", replacement: "—", options: "tA"},
    // {trigger: "—-", replacement: "---", options: "tA"},
    {trigger: "dsp", replacement: "\\displaystyle ", options: "mA"},

    // Greek letters
    {trigger: "aa", replacement: "\\alpha", options: "mA"},
    {trigger: "AA", replacement: "\\alpha", options: "mA"},
    {trigger: "bb", replacement: "\\beta", options: "mA"},
    {trigger: "BB", replacement: "\\beta", options: "mA"},
    {trigger: "cc", replacement: "\\chi", options: "mA"},
    {trigger: "CC", replacement: "\\chi", options: "mA"},
    {trigger: "gg", replacement: "\\gamma", options: "mA"},
    {trigger: "GG", replacement: "\\Gamma", options: "mA"},
    {trigger: "dd", replacement: "\\delta", options: "mA"},
    {trigger: "DD", replacement: "\\Delta", options: "mA"},
    {trigger: "@e", replacement: "\\epsilon", options: "mA"},
    {trigger: "@E", replacement: "\\epsilon", options: "mA"},
    {trigger: ":e", replacement: "\\varepsilon", options: "mA"},
    {trigger: ":E", replacement: "\\varepsilon", options: "mA"},
    {trigger: "@z", replacement: "\\zeta", options: "mA"},
    {trigger: "@Z", replacement: "\\zeta", options: "mA"},
    {trigger: "@t", replacement: "\\theta", options: "mA"},
    {trigger: "@T", replacement: "\\Theta", options: "mA"},
    {trigger: "@k", replacement: "\\kappa", options: "mA"},
    {trigger: "@K", replacement: "\\kappa", options: "mA"},
    {trigger: "@l", replacement: "\\lambda", options: "mA"},
    {trigger: "@L", replacement: "\\Lambda", options: "mA"},
    {trigger: "@m", replacement: "\\mu", options: "mA"},
    {trigger: "@M", replacement: "\\mu", options: "mA"},
    {trigger: "@r", replacement: "\\rho", options: "mA"},
    {trigger: "@R", replacement: "\\rho", options: "mA"},
    {trigger: "@s", replacement: "\\sigma", options: "mA"},
    {trigger: "@S", replacement: "\\Sigma", options: "mA"},
    {trigger: "ome", replacement: "\\omega", options: "mA"},
    {trigger: "@o", replacement: "\\omega", options: "mA"},
    {trigger: "@O", replacement: "\\Omega", options: "mA"},
    {trigger: "([^\\\\])(${GREEK}|${SYMBOL})", replacement: "[[0]]\\[[1]]", options: "rmA", description: "Add backslash before greek letters and symbols"},


    // Insert space after greek letters and symbols, etc
    {trigger: "\\\\(${GREEK}|${SYMBOL}|${SHORT_SYMBOL})([A-Za-z])", replacement: "\\[[0]] [[1]]", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) sr", replacement: "\\[[0]]^{2}", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) cb", replacement: "\\[[0]]^{3}", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) rd", replacement: "\\[[0]]^{$0}$1", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) hat", replacement: "\\hat{\\[[0]]}", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) dot", replacement: "\\dot{\\[[0]]}", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) bar", replacement: "\\bar{\\[[0]]}", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) vec", replacement: "\\vec{\\[[0]]}", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) tilde", replacement: "\\tilde{\\[[0]]}", options: "rmA"},
    {trigger: "\\\\(${GREEK}|${SYMBOL}) und", replacement: "\\underline{\\[[0]]}", options: "rmA"},
    {trigger: "\\\\(${GREEK}),\\.", replacement: "\\boldsymbol{\\[[0]]}", options: "rmA"},
    {trigger: "\\\\(${GREEK})\\.,", replacement: "\\boldsymbol{\\[[0]]}", options: "rmA"},


    // Operations
    {trigger: "te", replacement: "\\text{$0}", options: "m"},
    {trigger: "text", replacement: "\\text{$0}", options: "mA"},
    {trigger: "bf", replacement: "\\mathbf{$0}", options: "mA"},
    {trigger: "sr", replacement: "^{2}", options: "mA"},
    {trigger: "cb", replacement: "^{3}", options: "mA"},
    {trigger: "rd", replacement: "^{$0}$1", options: "mA"},
    {trigger: "_", replacement: "_{$0}$1", options: "mA"},
    {trigger: "sts", replacement: "_\\text{$0}", options: "rmA"},
    {trigger: "sq", replacement: "\\sqrt{ $0 }$1", options: "mA"},
    {trigger: "//", replacement: "\\frac{$0}{$1}$2", options: "mA"},
    {trigger: "ee", replacement: "e^{ $0 }$1", options: "mA"},
    {trigger: "rm", replacement: "\\mathrm{$0}$1", options: "mA"},
    {trigger: "conj", replacement: "^{*}", options: "mA"},
    {trigger: "trace", replacement: "\\mathrm{Tr}", options: "mA"},
    {trigger: "det", replacement: "\\det", options: "mA"},
    {trigger: "re", replacement: "\\mathrm{Re}", options: "mA"},
    {trigger: "im", replacement: "\\mathrm{Im}", options: "mA"},

    {trigger: "([a-zA-Z]),\\.", replacement: "\\mathbf{[[0]]}", options: "rmA"},
    {trigger: "([a-zA-Z])\\.,", replacement: "\\mathbf{[[0]]}", options: "rmA"},
    {trigger: "([A-Za-z])(\\d)", replacement: "[[0]]_{[[1]]}", options: "rmA", description: "Auto letter subscript", priority: -1},
    {trigger: "([A-Za-z])_(\\d\\d)", replacement: "[[0]]_{[[1]]}", options: "rmA"},
    {trigger: "\\hat{([A-Za-z])}(\\d)", replacement: "hat{[[0]]}_{[[1]]}", options: "rmA"},
    {trigger: "\\\\mathbf{([A-Za-z])}(\\d)", replacement: "\\mathbf{[[0]]}_{[[1]]}", options: "rmA"},
    {trigger: "\\\\vec{([A-Za-z])}(\\d)", replacement: "\\vec{[[0]]}_{[[1]]}", options: "rmA"},
    {trigger: "([a-zA-Z])bar", replacement: "\\bar{[[0]]}", options: "rmA"},
    {trigger: "([a-zA-Z])hat", replacement: "\\hat{[[0]]}", options: "rmA"},
    {trigger: "([a-zA-Z])ddot", replacement: "\\ddot{[[0]]}", options: "rmA", priority: 3},
    {trigger: "([a-zA-Z])dot", replacement: "\\dot{[[0]]}", options: "rmA", priority: 1},
    {trigger: "([a-zA-Z])vec", replacement: "\\vec{[[0]]}", options: "rmA"},
    {trigger: "([a-zA-Z])tilde", replacement: "\\tilde{[[0]]}", options: "rmA"},
    {trigger: "([a-zA-Z])und", replacement: "\\underline{[[0]]}", options: "rmA"},
    {trigger: "bar", replacement: "\\bar{$0}$1", options: "mA"},
    {trigger: "hat", replacement: "\\hat{$0}$1", options: "mA"},
    {trigger: "dot", replacement: "\\dot{$0}$1", options: "mA"},
    {trigger: "ddot", replacement: "\\ddot{$0}$1", options: "mA", priority: 2},
    {trigger: "vec", replacement: "\\vec{$0}$1", options: "mA"},
    {trigger: "tilde", replacement: "\\tilde{$0}$1", options: "mA"},
    {trigger: "und", replacement: "\\underline{$0}$1", options: "mA"},

    {trigger: "([^\\\\])(arcsin|arccos|arctan|arccot|arccsc|arcsec|sin|cos|tan|cot|csc)", replacement: "[[0]]\\[[1]]", options: "rmA"},
    {trigger: "\\\\(arcsin|arccos|arctan|arccot|arccsc|arcsec|sin|cos|tan|cot|csc)([A-Za-gi-z])", replacement: "\\[[0]] [[1]]", options: "rmA"}, // Insert space after trig funcs. Skips letter "h" to allow sinh, cosh, etc.
    {trigger: "\\\\(arcsinh|arccosh|arctanh|arccoth|arcsch|arcsech|sinh|cosh|tanh|coth|csch)([A-Za-z])", replacement: "\\[[0]] [[1]]", options: "rmA"}, // Insert space after trig funcs
    {trigger: "\\\\(neq|geq|leq|gg|ll|sim)([0-9]+)", replacement: "\\[[0]] [[1]]", options: "rmA"}, // Insert space after inequality symbols


    // Visual operations
    {trigger: "U", replacement: "\\underbrace{ ${VISUAL} }_{ $0 }", options: "mA"},
    {trigger: "B", replacement: "\\underset{ $0 }{ ${VISUAL} }", options: "mA"},
    {trigger: "C", replacement: "\\cancel{ ${VISUAL} }", options: "mA"},
    {trigger: "K", replacement: "\\cancelto{ $0 }{ ${VISUAL} }", options: "mA"},
    {trigger: "S", replacement: "\\sqrt{ ${VISUAL} }", options: "mA"},



    // Symbols
    {trigger: "ooo", replacement: "\\infty", options: "mA"},
    {trigger: "sum", replacement: "\\sum", options: "mA"},
    {trigger: "prod", replacement: "\\prod", options: "mA"},
    {trigger: "lim", replacement: "\\lim_{ ${0:n} \\to ${1:\\infty} } $2", options: "mA"},
    {trigger: "([^\\\\])pm", replacement: "[[0]]\\pm", options: "rm"},
    {trigger: "([^\\\\])mp", replacement: "[[0]]\\mp", options: "rm"},
    {trigger: "+-", replacement: "\\pm", options: "mA"},
    {trigger: "-+", replacement: "\\mp", options: "mA"},
    {trigger: "...", replacement: "\\dots", options: "mA"},
    {trigger: "<->", replacement: "\\leftrightarrow ", options: "mA"},
    {trigger: "->", replacement: "\\to", options: "mA"},
    {trigger: "!>", replacement: "\\mapsto", options: "mA"},
    {trigger: "invs", replacement: "^{-1}", options: "mA"},
    {trigger: "\\\\\\", replacement: "\\setminus", options: "mA"},
    {trigger: "||", replacement: "\\mid", options: "mA"},
    {trigger: "and", replacement: "\\cap", options: "mA"},
    {trigger: "orr", replacement: "\\cup", options: "mA"},
    {trigger: "inn", replacement: "\\in", options: "mA"},
    {trigger: "\\subset eq", replacement: "\\subseteq", options: "mA"},
    {trigger: "set", replacement: "\\{ $0 \\}$1", options: "mA"},
    {trigger: "=>", replacement: "\\implies", options: "mA"},
    {trigger: "=<", replacement: "\\impliedby", options: "mA"},
    {trigger: "iff", replacement: "\\iff", options: "mA"},
    {trigger: "e\\xi sts", replacement: "\\exists", options: "mA", priority: 1},
    {trigger: "===", replacement: "\\equiv", options: "mA"},
    {trigger: "Sq", replacement: "\\square", options: "mA"},
    {trigger: "!=", replacement: "\\neq", options: "mA"},
    {trigger: ">=", replacement: "\\geq", options: "mA"},
    {trigger: "<=", replacement: "\\leq", options: "mA"},
    {trigger: ">>", replacement: "\\gg", options: "mA"},
    {trigger: "<<", replacement: "\\ll", options: "mA"},
    {trigger: "~~", replacement: "\\sim", options: "mA"},
    {trigger: "\\sim ~", replacement: "\\approx", options: "mA"},
    {trigger: "prop", replacement: "\\propto", options: "mA"},
    {trigger: "nabl", replacement: "\\nabla", options: "mA"},
    {trigger: "del", replacement: "\\nabla", options: "mA"},
    {trigger: "xx", replacement: "\\times", options: "mA"},
    {trigger: "**", replacement: "\\cdot", options: "mA"},
    {trigger: "para", replacement: "\\parallel", options: "mA"},


    // {trigger: "xnn", replacement: "x_{n}", options: "mA"},
    // {trigger: "ann", replacement: "a_{n}", options: "mA"},
    // {trigger: "\\xi i", replacement: "x_{i}", options: "mA"},
    // {trigger: "aii", replacement: "a_{i}", options: "mA"},
    // {trigger: "xjj", replacement: "x_{j}", options: "mA"},
    // {trigger: "ajj", replacement: "a_{j}", options: "mA"},
    // {trigger: "xp1", replacement: "x_{n+1}", options: "mA"},
    // {trigger: "ap1", replacement: "a_{n+1}", options: "mA"},
    // {trigger: "ynn", replacement: "y_{n}", options: "mA"},
    // {trigger: "yii", replacement: "y_{i}", options: "mA"},
    // {trigger: "yjj", replacement: "y_{j}", options: "mA"},
    {trigger: "jj", replacement: "_{j}", options: "mA"},
    {trigger: "ii", replacement: "_{i}", options: "mA"},
    {trigger: "nn", replacement: "_{n}", options: "mA"},
    {trigger: "npp", replacement: "_{n+1}", options: "mA"},
    {trigger: "ipp", replacement: "_{i+1}", options: "mA"},
    {trigger: "jpp", replacement: "_{j+1}", options: "mA"},
    


    {trigger: "mcal", replacement: "\\mathcal{$0}$1", options: "mA"},
    {trigger: "mbb", replacement: "\\mathbb{$0}$1", options: "mA"},
    {trigger: "ell", replacement: "\\ell", options: "mA"},
    {trigger: "lll", replacement: "\\ell", options: "mA"},
    {trigger: "LL", replacement: "\\mathcal{L}", options: "mA"},
    {trigger: "HH", replacement: "\\mathcal{H}", options: "mA"},
    {trigger: "CC", replacement: "\\mathbb{C}", options: "mA"},
    {trigger: "RR", replacement: "\\mathbb{R}", options: "mA"},
    {trigger: "ZZ", replacement: "\\mathbb{Z}", options: "mA"},
    {trigger: "NN", replacement: "\\mathbb{N}", options: "mA"},
    {trigger: "II", replacement: "\\mathbb{1}", options: "mA"},
    {trigger: "\\mathbb{1}I", replacement: "\\hat{\\mathbb{1}}", options: "mA"},
    {trigger: "AA", replacement: "\\mathcal{A}", options: "mA"},
    {trigger: "BB", replacement: "\\mathbf{B}", options: "mA"},
    {trigger: "EE", replacement: "\\mathbf{E}", options: "mA"},



    // Unit vectors
    {trigger: ":i", replacement: "\\mathbf{i}", options: "mA"},
    {trigger: ":j", replacement: "\\mathbf{j}", options: "mA"},
    {trigger: ":k", replacement: "\\mathbf{k}", options: "mA"},
    {trigger: ":x", replacement: "\\hat{\\mathbf{x}}", options: "mA"},
    {trigger: ":y", replacement: "\\hat{\\mathbf{y}}", options: "mA"},
    {trigger: ":z", replacement: "\\hat{\\mathbf{z}}", options: "mA"},



    // Derivatives
    {trigger: "par", replacement: "\\frac{ \\partial ${0:y} }{ \\partial ${1:x} } $2", options: "m"},
    {trigger: "pa2", replacement: "\\frac{ \\partial^{2} ${0:y} }{ \\partial ${1:x}^{2} } $2", options: "mA"},
    {trigger: "pa3", replacement: "\\frac{ \\partial^{3} ${0:y} }{ \\partial ${1:x}^{3} } $2", options: "mA"},
    {trigger: "pa([A-Za-z])([A-Za-z])", replacement: "\\frac{ \\partial [[0]] }{ \\partial [[1]] } ", options: "rm"},
    {trigger: "pa([A-Za-z])([A-Za-z])([A-Za-z])", replacement: "\\frac{ \\partial^{2} [[0]] }{ \\partial [[1]] \\partial [[2]] } ", options: "rm"},
    {trigger: "pa([A-Za-z])([A-Za-z])2", replacement: "\\frac{ \\partial^{2} [[0]] }{ \\partial [[1]]^{2} } ", options: "rmA"},
    {trigger: "de([A-Za-z])([A-Za-z])", replacement: "\\frac{ d[[0]] }{ d[[1]] } ", options: "rm"},
    {trigger: "de([A-Za-z])([A-Za-z])2", replacement: "\\frac{ d^{2}[[0]] }{ d[[1]]^{2} } ", options: "rmA"},
    {trigger: "ddt", replacement: "\\frac{d}{dt} ", options: "mA"},



    // Integrals
    {trigger: "oinf", replacement: "\\int_{0}^{\\infty} $0 \\, d${1:x} $2", options: "mA"},
    {trigger: "infi", replacement: "\\int_{-\\infty}^{\\infty} $0 \\, d${1:x} $2", options: "mA"},
    {trigger: "dint", replacement: "\\int_{${0:0}}^{${1:\\infty}} $2 \\, d${3:x} $4", options: "mA"},
    {trigger: "oint", replacement: "\\oint", options: "mA"},
    {trigger: "iiint", replacement: "\\iiint", options: "mA"},
    {trigger: "iint", replacement: "\\iint", options: "mA"},
    {trigger: "int", replacement: "\\int $0 \\, d${1:x} $2", options: "mA"},



    // Physics
    {trigger: "kbt", replacement: "k_{B}T", options: "mA"},


    // Quantum mechanics
    {trigger: "hba", replacement: "\\hbar", options: "mA"},
    {trigger: "dag", replacement: "^{\\dagger}", options: "mA"},
    {trigger: "o+", replacement: "\\oplus ", options: "mA"},
    {trigger: "ox", replacement: "\\otimes ", options: "mA"},
    {trigger: "ot\\mathrm{Im}es", replacement: "\\otimes ", options: "mA"}, // Handle conflict with "im" snippet
    {trigger: "bra", replacement: "\\bra{$0} $1", options: "mA"},
    {trigger: "ket", replacement: "\\ket{$0} $1", options: "mA"},
    {trigger: "brk", replacement: "\\braket{ $0 | $1 } $2", options: "mA"},
    {trigger: "\\\\bra{([^|]+)\\|", replacement: "\\braket{ [[0]] | $0 ", options: "rmA", description: "Convert bra into braket"},
    {trigger: "\\\\bra{(.+)}([^ ]+)>", replacement: "\\braket{ [[0]] | $0 ", options: "rmA", description: "Convert bra into braket (alternate)"},
    {trigger: "outp", replacement: "\\ket{${0:\\psi}} \\bra{${0:\\psi}} $1", options: "mA"},



    // Chemistry
    {trigger: "pu", replacement: "\\pu{ $0 }", options: "mA"},
    {trigger: "msun", replacement: "M_{\\odot}", options: "mA"},
    {trigger: "solm", replacement: "M_{\\odot}", options: "mA"},
    {trigger: "ce", replacement: "\\ce{ $0 }", options: "mA"},
    {trigger: "iso", replacement: "{}^{${0:4}}_{${1:2}}${2:He}", options: "mA"},
    {trigger: "hel4", replacement: "{}^{4}_{2}He ", options: "mA"},
    {trigger: "hel3", replacement: "{}^{3}_{2}He ", options: "mA"},



    // Environments
    {trigger: "pmat", replacement: "\\begin{pmatrix}\n$0\n\\end{pmatrix}", options: "mA"},
    {trigger: "bmat", replacement: "\\begin{bmatrix}\n$0\n\\end{bmatrix}", options: "mA"},
    {trigger: "Bmat", replacement: "\\begin{Bmatrix}\n$0\n\\end{Bmatrix}", options: "mA"},
    {trigger: "vmat", replacement: "\\begin{vmatrix}\n$0\n\\end{vmatrix}", options: "mA"},
    {trigger: "Vmat", replacement: "\\begin{Vmatrix}\n$0\n\\end{Vmatrix}", options: "mA"},
    {trigger: "case", replacement: "\\begin{cases}\n$0\n\\end{cases}", options: "mA"},
    {trigger: "align", replacement: "\\begin{align}\n$0\n\\end{align}", options: "mA"},
    {trigger: "array", replacement: "\\begin{array}{l}\n$0\n\\end{array}", options: "mA"},
    {trigger: "larr", replacement: "\\left\\{\\begin{array}{l}\n$0\n\\end{array}\\right.", options: "mA"},
    {trigger: "rarr", replacement: "\\left.\\begin{array}{l}\n$0\n\\end{array}\\right\{", options: "mA"},
    {trigger: "matrix", replacement: "\\begin{matrix}\n$0\n\\end{matrix}", options: "mA"},



    // Brackets
    {trigger: "avg", replacement: "\\langle $0 \\rangle $1", options: "mA"},
    {trigger: "norm", replacement: "\\lvert $0 \\rvert $1", options: "mA", priority: 1},
    {trigger: "mod", replacement: "|$0|$1", options: "mA"},
    {trigger: "(", replacement: "(${VISUAL})", options: "mA"},
    {trigger: "[", replacement: "[${VISUAL}]", options: "mA"},
    {trigger: "{", replacement: "{${VISUAL}}", options: "mA"},
    {trigger: "(", replacement: "($0)$1", options: "mA"},
    {trigger: "{", replacement: "{$0}$1", options: "mA"},
    {trigger: "[", replacement: "[$0]$1", options: "mA"},
    {trigger: "lr(", replacement: "\\left( $0 \\right) $1", options: "mA"},
    {trigger: "lr|", replacement: "\\left| $0 \\right| $1", options: "mA"},
    {trigger: "lr{", replacement: "\\left\\{ $0 \\right\\} $1", options: "mA"},
    {trigger: "lr[", replacement: "\\left[ $0 \\right] $1", options: "mA"},
    {trigger: "lra", replacement: "\\left< $0 \\right> $1", options: "mA"},



    // Misc
    {trigger: "tayl", replacement: "${0:f}(${1:x} + ${2:h}) = ${0:f}(${1:x}) + ${0:f}'(${1:x})${2:h} + ${0:f}''(${1:x}) \\frac{${2:h}^{2}}{2!} + \\dots$3", options: "mA"},
]
5 个赞

昨天刚下的ob,听很多人都说ob用来做笔记非常牛,但这两天用下来,感觉学习使用的门槛有点高,也不知道从何开始,老哥有什么建议吗?针对我这种ob小白。

所以是卡在哪?
从打字开始?

这里是官方的帮助文档,有markdown格式和软件使用的帮助。论坛里也有很多人分享了如何开始,整理好的库,进阶的使用,或者是笔记的组织这些。论坛内容很多,值得一看。或者是B站也有教程。
很多内容其实是属于锦上添花的内容,基础上手内容也不多不难。

我主要想使用的场景有:写日记、记课程笔记、读书笔记、任务清单、以及整理网上冲浪遇到的感觉对我有用的一些好文章啥的。

嗯~现在主要的一个问题就是不知道自己的这些需求应该分别对应怎样的解决方案。



然后针对老哥上面说的那个ob库(文件夹),万一电脑死机重装系统的话,该怎么保存这个ob库呢?

另外、
我还想知道不同的使用设备间能不能共用这个ob库啊。
换句话说就是怎么实现在手机、平板、笔记本上的同步使用obsidian???
另外平板是苹果的,电脑是华为的会有影响同步使用吗?

嗯~不瞒你说,我现在打字确实有些费劲,本身键盘打字就不是很快,因为平时基本上都还是用手机为主,笔记本买来很久但基本上就没怎么用,前几天下载了obsidian以来,才打了很多字。想问下有什么快速提高打字速度的方法吗??我知道如果后面想更方便地使用ob,打字速度还是需要提高提高的,要不然也会感到很鸡肋。


另外使用这个obsidian是不是一定必须要学习那些叫做markdown的语法啊,有时候要打出个什么格式或者符号感觉要输一堆的那个语法【比如,想打一个下划线】想知道有没有更简单一点的方法呢?

嗯嗯,感谢哈。这两天也在各个平台搜索了下小白如何入门obsidian的文章或者视频,但感觉总是听的云里雾里,对我来说有些过于抽象,我一度怀疑使用这个软件需要去学习很多计算机相关的知识才能用好。不过,后面还是会再跟着前辈的一些经验好好学习学习的。

1 个赞

打字就是熟能生巧吧。。如果不是标准指法可以试试标准指法。
markdown有些样式不原生支持就会比较麻烦。不过有一些输入增强插件,可以像word效果那样。
我自身最常用的就是标题、代码块加粗,我也绑定了快捷键。所以可以轻度了解markdown同时也不花时间。

嗯嗯,感谢大佬的分享哈,我后面再去详细的了解学习下相关的操作。 :grimacing:

感谢分享,这几天找做表格的方法费尽心思了,看看楼主的推荐,基本上ob的基础功能我够用了,现在就看看表格插入了

其实画图如果会用TikZ的话可以用TikZJax这个插件,真正意义上能插入专业的矢量图

请问用的是什么主题,很好看

真不错。先有学习和用起来,再有各种功能的补全。

在线表格转换工具: 在线表格转换工具 - 让表格转换变得更容易 (tableconvert.com),试一下去。

老哥,请问主题是什么?

真不错呀,好多我正需要的内容。感谢!

楼主您好,请问如何修改快捷键?

请问楼主是用什么形式将表格网页固定到OB标签栏的呢?