Quantcast
Channel: 簡睿隨筆
Viewing all 904 articles
Browse latest View live

[Obs#53] Text Transporter 文字運輸車:透過書籤在不同筆記之間搬運文字

$
0
0

tp.web.random_picture|420

Obsidian42 Family又推出新的Obsidian外掛:Text Transporter,能讓我們輕鬆的操作文字內容,尤其書籤的功能更是令人驚豔,透過書籤,我們能夠簡單的在不同筆記間搬移筆記內容。

警告
尚未公開到社群,請看最後面的安裝說明。

書籤操作步驟

設定書籤(要插入文字的位置)

  1. 選取一段文字後→右鍵功能表→【Add a New Bookmark from this file】
  2. 選用【Location: of selected text “標示的文字”】以設定一個書籤(Bookmark,定位點)
  3. 按〔Ctrl/Cmd+P〕開啟命令面板後輸入BO,點擊【Obsidian42- Text Transporter: Open a bookmarked file (BO)】

確認步驟2加入的書籤已經加到運輸車裡了。

書籤其他技巧
1. 【Location: of selected text and mark as a context menu location “標示文字”】則會將書籤加入右鍵功能表以方便快速點選。
2. 書籤設定在外掛選項裡可手動修改。

搬移來源文字

  1. 選取要被複製的文字內容(複製段落則不用選取)
  2. 用右鍵功能表選擇複製或搬移
    1. 右鍵功能表→【Copy line/selection to another file】→選用前面設置好的書籤,選取內容被複製到書籤位置
    2. 右鍵功能表→【Push line/selection to another file】→選用前面設置好的書籤,選取內容被搬移到書籤位置
    3. 右鍵功能表→【Push line/selection to another file as a block embed】→複製區塊代碼到書籤位置

技巧
1. 書籤位置不會自動往下移動,因此第二次移入的內容會在第一次移入的上面
2. 若要持續複製,可設定BOTTOM類型的書籤
3. 如果目標選用檔案,則會再出現該檔的內容,供我們指定插入位置
4. 目標選用#tag search:只有寫在本文區的標籤才會被過濾到選單裡

複製文字為區塊代碼連結

右鍵功能表下列二項是將段落內容插入區塊代碼,並複製到系統剪貼簿:

功能選項 範例
Copy block embeds from this selection ![[test#^9n78hq]]
Copy block embeds as an alias [[test#^9n78hq|*]]

外掛安裝與啟用

  1. 由GitHub Releases頁面下載main.js、manifest.json與styles.css
  2. 在儲存庫資料夾/.obsidian內建立子目錄 obsidian42-text-transporter
  3. 將下載的三個檔案複製到obsidian42-text-transporter資料夾
  4. 設定→第三方外掛→已安裝外掛→重載
  5. 找到Text Transporter後啟用之

相關連結

教學影片

##您可能也會有興趣的類似文章


Evergreen note是常青筆記或長青筆記?之一

$
0
0

tp.web.random_picture

Evergreen note是Andy Matuschaky提出後引發衆人討論: Evergreen notes

但中文博大精深,我們應該譯爲「長青筆記」比較好,還是「常青筆記」比較對?

地久天長和老生常談的長、常是不能互換的。

  • 地久天長、長年累月、松柏長青的「長」都在形容時間跨度特別大(時間長)
  • 知足常樂、老生常談、四季常青的「常」是經常、經久不變之意(頻率高)

咬文嚼字壹番,大家認爲Evergreen note用那個比較適切呢?

蒐集到的幾篇與Evergreen note相關的文章:

剛好中港台各一篇。

回應留言

看了各位的高見頗有啟發,但似乎是在「過程」著墨,我覺得用「目的」來看也是一個方向。

我們依據Andy Matuschaky提出的5項原則而產出的筆記,其目的是什麼?應該是趨近嚴謹、自成一體、緊密組成的個體。筆記在演進過程中,經過不斷的連結與重組,終將形成完整的知識體系,我們生成這則筆記筆記就是期望它能長久存在、生生不息,因此將之視為「長青」也很貼切。

5個原則:

  1. Evergreen notes should be atomic
  2. Evergreen notes should be densely linked
  3. Evergreen notes should be concept-oriented
  4. Prefer associative ontologies to hierarchical taxonomies
  5. Write notes for yourself by default, disregarding audience

Andy Matuschaky原文在此:https://publish.obsidian.md/andymatuschak/Evergreen+notes

##您可能也會有興趣的類似文章

Evergreen note是常青筆記或長青筆記?之二

$
0
0

tp.web.random_picture

其實Andy Matuschaky的Evergreen notes就是盧曼的卡片,只是在數位時代就不用拘泥於ZK ID,只要把檔名(筆記標題)命名為能涵蓋筆記中心概念的名稱即可(“Prefer note titles with complete phrases to sharpen claims”)。

Andy Matuschaky對他的Evergreen note列了5個原則,其中的atomic、concept-oriented等,都是在說明:一則Evergreen note應該就是只有一個概念,而且也只能有一個概念,因為唯有只有一個概念,才能很容易的被重用(reuse) 、很方便的被鏈接。Evergreen note就是樂高(Lego)的零件,每個都是獨立的存在,分別扮演不同的功能,但組合後能成為完整的迷人模型。

5個原則:
1. Evergreen notes should be atomic
2. Evergreen notes should be densely linked
3. Evergreen notes should be concept-oriented
4. Prefer associative ontologies to hierarchical taxonomies
5. Write notes for yourself by default, disregarding audience

因為Andy Matuschaky是軟體開發人員,因此他也用了模組(模块)來形容Evergreen note,又將標題當做API(Evergreen note titles are like APIs)。這個想法其實跟軟體工程中的loose coupling、high cohesion(低耦合性與高凝聚力)非常類似,目標都是為了Reusable。

因為Evergreen note都是實在、清晰的概念,因此我們可以在幾分鐘內就完成它。經過不斷的review與精鍊,Evergreen note就會越發穩固。

These small, self-contained notes represent regular checkpoints. Each note takes only a few minutes to write, but because they’re Evergreen notes, each note is solid ground to stand on—fairly complete relative to its own concept (Evergreen notes should be concept-oriented). Of course, we’ll iterate on their contents over time, but each time we do, that note will remain a mostly-complete, self-contained unit.

我發這則Post的用意是在看到兩岸三地對一個名詞有不同的理解、看法與想像,拋磚引玉提出跟同好腦力激盪(头脑风暴),或許會激發出不同創意與看法也說不定。😄

Andy Matuschaky原文在此:https://publish.obsidian.md/andymatuschak/Evergreen+notes您可能也會有興趣的類似文章

知乎的「盐选」到底是什麼?

$
0
0

今天在知乎查資料的時候,突然注意到大標題下方的超連結:「盐选內容」,瞬間有點暈眩的感覺 😢

01

另外查了簡繁對照的網站確認了一下:
02

通常我們手寫鹽的簡體會是下方第四個字,而不是盐。不過,確認了盐確實是鹽,那麼知乎的「盐选內容」是故意在標新立異,還是有什麼我不知道的典故?

不是應該是「严选內容」才對嗎?🤔
是有什麼八卦?對岸的朋友來解惑一下。🙏

##您可能也會有興趣的類似文章

    未發現類似文章

跨平台的免費即時翻譯工具:Crow Translate

$
0
0

tp.web.random_picture|500

Crow Translate(烏鴉翻譯)是一款開源於GitHub的跨平台即時翻譯應用,以Qt環境開發,可於Windows、Linux等系統裡運作(macOS似乎不行)。

Crow Translate可以使用三種語音引擎:Google、Yandex與Bing,但只有Google支援中文的TTS,因此就直接使用Google吧。翻譯引擎沒有地方可以設定, 似乎是使用Google簡體的版本。

下載與安裝

GitHub Releases官網下載後安裝。

安裝OCR套件

要使用OCR功能的話,必須到[tesseract網站]https://github.com/tesseract-ocr/tessdata/releases/tag/4.1.0)下載語言檔。

下載後在設定裡勾選要辨識的語言。

操作重點

  1. 選取文字後按Ctrl+Alt+E即時翻譯,翻譯結果可依需要用主視窗、懸浮視窗或系統通知來顯示
  2. 開啟主視窗按Ctrl+Alt+C
  3. Ctrl+Alt+O進入OCR模式,選取好要辨識的區域後,按Enter或雙擊,即可辨識並顯示結果

相關連結

教學影片

##您可能也會有興趣的類似文章

[Obs#54] Obsidian的任務管理技巧彙總

$
0
0

tp.web.random_picture|600

本次介紹與任務管理相關的幾個技巧與搭配的外掛,使用到的外掛是:

  • Tasks
  • Reminder
  • Calendar
  • Templater
  • QuickAdd
  • Kanban
  • Min3ditorHotkeys

為了更方便與即時檢視需要處理的待辦事項,我們可以把待辦事項加入每日筆記裡,因此每日筆記的建立與使用也加入工作流程裡。

添加待辦事項技巧

  1. 直接輸入待辦事項,輸入完成後按兩個Ctrl+Enter
  2. 在待辦事項上按Ctrl+Enter以切換完成狀態
  3. 啟用【設定】→【編輯器】→【智慧列表】後,在待辦事項最末處按Enter會自動再新增待辦事項
  4. 另一個快速複製待辦事項的方法:安裝Min3ditorHotkeys外掛並啟用後,在待辦事項處按Ctrl+D(D可聯想為Duplicate)以複製成為下一個事項

Tasks外掛

  • Tasks外掛提供查詢語法,可以讓我們快速搜尋與過濾出待辦事項
  • 在待辦事項處按Ctrl+Alt+Enter(Option+Cmd+Enter)可維護到期日與重覆設定
  • 無法設定到期時間,要指定到期時間的話可使用Reminder外掛

查詢語法 (第三人稱)

  • 完成/未完成:done 或 not done
    • 完成日期:done before/after/on 日期
  • 無到期日:no due date
  • 到期日過濾:due before/after/on 日期
    • 日期可使用today, yesterday, tomorrow, next week, last Friday, in two weeks等
  • 路徑
    • 要搜尋:path includes 路徑
    • 不搜尋:path does not include 路徑
  • 事項描述
    • description includes 字串
    • description does not include 字串
  • 最靠近標題
    • heading includes 標題
    • heading does not include 標題
  • 是否重覆:is recurring, is not recurring
  • 排除某個事項:excludes 清單事項
  • 限制顯示事項數目:limit to 數值 tasks
  • 排序:sort by (status|due|done|path|description)
  • 顯示樣式隱藏 hide
    • edit button
    • backlink
    • done date
    • due date
    • recurrence rule
    • task count

Tasks範例

```tasks
not done
due before {{date:YYYY-MM-DD}}
```

## 未完成任務
```tasks
not done
due before today
```

## 未完成之無期限任務
```tasks
path includes 020-Daily
path does not include todo
not done
no due date
```

## 明天到期任務
```tasks
due on tomorrow
```

## 昨天完成任務
```tasks
done on yesterday
```

Reminder外掛

功能

  • 側邊欄Reminder面板顯示待辦事項到期資訊
  • 點擊Reminder面板開啟該事項所在之筆記

選項設定

  • Reminder Time:預設的到期時間
  • Primary reminder format:若需要到期時間則建議選用Reminder

設置

  • 在待辦事項後面輸入 (@日期 時間)
  • 預設的觸發文字是「(@」,可於設定裡變更
  • 觸發文字輸入後會彈出日曆視窗

Calendar外掛

  • 使用Calendar可以更方便的檢視與建立每日筆記
  • 如果有做周記的需求,可以在選項裡啟用Show work number
  • 選項裡的Trigger最好啟用,建立筆記時模板內的Templater程式碼才會生效

Kanban整合

  • @{日期} @@{時間}
  • Kanban的日期時間格式無法同步到Reminder,因此建議用Reminder的格式

Dataview

Dataview的task也可列出待辦事項。

↓未完成事項

```dataview
task where !completed
```

相關連結

教學影片

##您可能也會有興趣的類似文章

[Obs#55] 建立新筆記的模板設定-Calendar, Templater與QuickAdd

$
0
0

tp.web.random_picture

3種模板語法

在安裝了Templater與QuickAdd外掛後,我們就會有3種模板格式可以使用:

  1. 核心模板:放生吧💀,不必理會{{title}}這種語法了
  2. Templater模板:使用Templater語法
  3. QuickAdd模板:使用Templater+QuickAdd語法

建議模板檔名應命名為容易識別上述3類模板的名稱,以免設定時指定錯誤檔案,例如檔名帶有templater或quickadd等識別字串。

模板檔

依據每日筆記與一般筆記,我們可以建立下列幾個模板檔案:

  1. templater-daily.md:Templater的每日筆記
  2. templater-note.md:Templater的一般筆記
  3. templater-quickadd-daily.md:QuickAdd的每日筆記
  4. templater-quickadd-note.md:Templater的一般筆記

將QuickAdd的模板獨立出來,以保持日後的擴充可能。

建立新筆記的4個方法

1. 按快捷鍵或用命令建立

Ctrl+NCtrl+Shift+N建立新筆記。
在Templater外掛設定:
1. 【設定】→【檔案與連結】→指定存檔資料夾(例如:000-Inbox)
1. 啟用資料夾與模板的對應設定
– 030-Inbox使用 templater-note.md
2. 若要在檔案瀏覽器用右鍵建檔,則為各個資料夾設定模板檔案。

2. 用內部連結建檔

點擊尚不存在檔案的內部連結時,要啟用資料夾與模板的對應設定:
* 030-Inbox使用 templater-note.md

3. 用Calendar建立每日筆記

點擊Calendar的日期或左方工具欄的【開啟今天的日記】:

  1. 日記裡設定檔名格式(YYYY-MM-DD_ddd)
  2. 日記裡設定模板檔為 templater-daily.md

4. 用QuickAdd建檔

  • 每日筆記:QuickAdd裡建立Template的Choice,Choice使用templater-quickadd-daily.md
  • 一般筆記:QuickAdd裡建立Template的Choice,Choice使用templater-quickadd.md

Templater模板範例

QuickAdd模板範例

教學影片

##您可能也會有興趣的類似文章

[Obs#56] 快速新增靈感/閃念筆記(Fleeting Note)的3種方法

$
0
0

tp.web.random_picture|600x300

我們偶爾會有靈光一閃、稍蹤即逝的絕妙想法,這些突發奇想何時會出現無從循跡、無法臆測,靈感來無影去無蹤,我們必須在最短的時間、用最快的方法將之記錄起來,以下介紹使用Obsidian將靈感快速新增成為筆記的方法。

第一種方法是立即建立一篇筆記。
第二個方法是直接新增到每日筆記,並將之變成待辦事項。
第三個方法是使用AutoHotkey在外部直接輸入文字再插入Obsidian對應位置。macOS的使用者請試試AppleScript或Alfred等方法來達成。

主要使用到的外掛如下:

  • Templater
  • QuickAdd
  • Advanced Obsidian URI (URI: 統一資源標識符)

建議

靈感/閃念筆記應該在一天或兩天裡清理掉(整理、合併到永久筆記或刪除),以免又形成另一個資料垃圾場。

方法1. 建立靈感筆記

使用QuickAdd新增一個Template的Choice,並設定一個快捷鍵。輸入靈感文字後會產生同名的筆記。

操作步驟

  1. QuickAdd選項→新增Template: Fleeting note的Choice
  2. 指定【Template path】為「模板資料夾/templater-fleeting-note.md」
  3. 勾選【File Name Format】,【File Name】欄位輸入「{{VALUE:靈光一閃}}」
  4. 【Create in folder】指定資料夾為「030-Inbox」

templater-fleeting-note.md

---
created: [ < tp.date.now("YYYY-MM-DD HH:mm") > ]
aliases: [ < tp.file.title > ]
tags: [ fleeting, todo ]
---
# <% tp.file.title %>

Modified:: <%+ tp.file.last_modified_date() %>

<% tp.file.title %>

<% await tp.system.clipboard() %>

缺點

生成了一個新檔案,最後需要刪除或搬移等檔案操作

方法2. 輸入內容後新增到每日筆記

此方法適用有使用Obsidian每日筆記與任務管理的狀況。在彈出視窗輸入內容後直接插入每日筆記指定標題處。

操作步驟

  1. QuickAdd選項→新增Capture: Fleeting note的Choice
  2. 指定【File Name】欄位為「020-Daily/{{DATE:YYYY-MM-DD_ddd}}」
  3. 勾選【Task】以形成待辦事項格式
  4. 勾選【Insert after】,指定要插入內容到那個段落
    1. 輸入標題文字
    2. 勾選【Insert at end of section】
  5. 變更【Create line if not found】為【Bottom】
  6. 勾選【Capture format】並輸入腳本碼(全形倒引號要改成半形):
‘‘‘js quickadd
let text = await this.quickAddApi.utility.getClipboard();
text = await this.quickAddApi.inputPrompt("添加靈感筆記", "輸入內容", text);
text = text.replace("\n", "<br>");

return text;
‘‘‘
<% tp.file.cursor(1) %>
title: 缺點
方法1與方法2者都必須在Obsidian裡操作,但有可能靈感來時正好在使用別的應用程式。

方法3. 由外部應用直接新增

不必在Obsidian裡,直接執行AutoHotkey的彈出式視窗,輸入內容後透過Advanced Obsidian URI將內容插入每日筆記的指定標題處。

;; fleeting-note.ahk
;; Input any ideas into Obsidian's Daily note.
;; Hotkey: Alt+D
;; Author: emisjerry, http://jdev.tw/blog/
#SingleInstance Force

global valut := "MOC"
global note := "020-Daily/" . A_YYYY . "-" . A_MM . "-" . A_DD . "_" . A_DDD
global heading := "靈光一閃"

!d::
  text = %Clipboard%
  text := MultiLineInputBox("Your ideas: ", text, "Insert your ideas into Daily note")
  if (text != "") {
    text := StrReplace(text, "`n", "<br>")
    text := StrReplace(text, "`r", "")
    text := encodeURI("- [ ] " . text)  ;; encodes and changes to a todo item
    text := StrReplace(text, "`n", "<br>")
    text := StrReplace(text, "`r", "")
    ;;msgbox text=%text%$
    Run obsidian://advanced-uri?vault=%valut%&filepath=%note%&heading=%heading%&data=%text%&mode=append
  }

  return

MultiLineInputBox(Text:="", Default:="", Caption:="Multi Line Input Box"){
  static
  ButtonOK:=ButtonCancel:= false
  if !MultiLineInputBoxGui{
    Gui, MultiLineInputBox: Font, s14, Segoe UI
    Gui, MultiLineInputBox: add, Text, r1 w600  , % Text
    Gui, MultiLineInputBox: add, Edit, r10 w600 vMultiLineInputBox, % Default
    Gui, MultiLineInputBox: add, Button, w100 h50 x380 gMultiLineInputBoxOK , &OK
    Gui, MultiLineInputBox: add, Button, w100 h50 x+10 gMultiLineInputBoxCancel, &Cancel
    MultiLineInputBoxGui := true
  }
  GuiControl,MultiLineInputBox:, MultiLineInputBox, % Default
  Gui, MultiLineInputBox: Show,, % Caption
  SendMessage, 0xB1, 0, -1, Edit1, A
  while !(ButtonOK||ButtonCancel)
    continue
  if ButtonCancel
    return
  Gui, MultiLineInputBox: Submit, NoHide
  Gui, MultiLineInputBox: Cancel
  return MultiLineInputBox
  ;----------------------
  MultiLineInputBoxOK:
  ButtonOK:= true
  return
  ;---------------------- 
  MultiLineInputBoxGuiEscape:
  MultiLineInputBoxCancel:
  ButtonCancel:= true
  Gui, MultiLineInputBox: Cancel
  return
}

encodeURI(Uri, Enc = "UTF-8")
{
  StrPutVar(Uri, Var, Enc)
  f := A_FormatInteger
  SetFormat, IntegerFast, H
  Loop
  {
  Code := NumGet(Var, A_Index - 1, "UChar")
  If (!Code)
    Break
  If (Code >= 0x30 && Code <= 0x39 ; 0-9
    || Code >= 0x41 && Code <= 0x5A ; A-Z
    || Code >= 0x61 && Code <= 0x7A) ; a-z
    Res .= Chr(Code)
  Else
    Res .= "%" . SubStr(Code + 0x100, -1)
  }
  SetFormat, IntegerFast, %f%
  Return, Res
}

decodeURI(Uri, Enc = "UTF-8")
{
  Pos := 1
  Loop
  {
  Pos := RegExMatch(Uri, "i)(?:%[\da-f]{2})+", Code, Pos++)
  If (Pos = 0)
    Break
  VarSetCapacity(Var, StrLen(Code) // 3, 0)
  StringTrimLeft, Code, Code, 1
  Loop, Parse, Code, `%
    NumPut("0x" . A_LoopField, Var, A_Index - 1, "UChar")
  StringReplace, Uri, Uri, `%%Code%, % StrGet(&Var, Enc), All
  }
  Return, Uri
}

StrPutVar(Str, ByRef Var, Enc = "")
{
  Len := StrPut(Str, Enc) * (Enc = "UTF-16" || Enc = "CP1200" ? 2 : 1)
  VarSetCapacity(Var, Len, 0)
  Return, StrPut(Str, &Var, Enc)
}

相關連結

  • temlater-fleeting-note.md: https://gist.github.com/emisjerry/8939f9aa8f4de9eab377b1461cb4f9bd
  • fleeting-note.ahk: https://gist.github.com/emisjerry/01ec842be695a5248db642206b96dee7

教學影片

##您可能也會有興趣的類似文章


[AHK#49] 整批多語言翻譯的2個方法:Google試算表與AutoHotkey脚本

$
0
0

無論是Google Translate網站、Crow Translate或uTools的翻譯插件,都是一次翻譯一個語言,如果想要一次翻譯多個語言,應該如何操作呢?
以下分享兩個作法:

  1. 使用Google試算表
  2. 以AutoHotkey撰寫整批操作的腳本

方法1. 使用Google試算表

使用Google試算表的GoogleTranslate函數即可輕鬆達成此需求。

語法

=GoogleTranslate(儲存格, “來源語言代碼”, “目的語言代碼”)

語言代碼

https://www.wikiwand.com/zh/ISO_639-1

方法2. AutoHotkey腳本

^+t::
  InputBox, sText, Google翻譯, 請輸入要翻譯的原文:, , 800, 150, , , , , %Clipboard%
  if (ErrorLevel == 0) {
    sSimplified := GoogleTranslate(sText, "zh-tw", "zh")
    sEnglish := GoogleTranslate(sText, "zh-tw", "en")
    sJapanese := GoogleTranslate(sText, "zh-tw", "ja")
    sKorean := GoogleTranslate(sText, "zh-tw", "ko")

    sContent := sSimplified . "`n`n" . sEnglish "`n`n" . sJapanese . "`n`n" . sKorean . "`n" 

    FileEncoding UTF-8-RAW
    FileDelete, c:\temp\_translate.txt
    FileAppend %sContent%, c:\temp\_translate.txt
    Run c:\temp\_translate.txt
  }
  return

相關連結

教學影片

##您可能也會有興趣的類似文章

2021年史詩級乳滑鉅作:《玻璃心》

[AHK#50] 輸入關鍵字,同時查詢多個圖庫以取得圖片的作法

$
0
0

01|650x350

用AutoHotkey讓使用者輸入關鍵字,再同時搜尋4個圖庫網站,以比較精準的找到需要的圖片。

圖庫1. Same Energy

特點

  1. [[Same Energy]]號稱使用深度學習的AI技術來協助我們找到需要的圖片。
  2. 可逐次過濾相似圖片,越找越準確
  3. 不能用中文搜尋
  4. 網址加index=creativecommons以查詢公開授權的圖片
  5. 長按右鈕取得圖片連結
https://same.energy/search?q=關鍵字&amp;index=creativecommons

圖庫2. Unsplash

特點

  1. 注意避開上方需要費用的iStock圖片
  2. 能指定圖片方向:橫向、縱向、正方形
  3. 能指定顏色
  4. 能指定排序方式
https://unsplash.com/s/photos/關鍵字

圖庫3. Pexels

特點

  1. 能使用中文搜尋。
  2. 能指定圖片方向:橫向、縱向、正方形
  3. 能指定大中小三種尺寸
  4. 能指定顏色

授權

  • Pexels 上的所有相片和影片均可免費使用。
  • 無需註明相片來源。表揚攝影師或 Pexels 不是必要行動,但我們永遠心懷感激。
  • 你可以修改來自 Pexels 的相片和影片。歡迎發揮創意盡情編輯。
https://www.pexels.com/zh-tw/search/關鍵字

圖庫4. Pixabay

特點

  1. 能使用簡體中文搜尋。
  2. 能指定圖片方向:橫向、縱向、任意
  3. 能指定尺寸:輸入寬度與高度
  4. 能指定顏色
  5. 能指定類別
https://pixabay.com/zh/images/search/關鍵字

AutoHotkey

search_pictures.ahk 使用到 kanji,GoogleTranslate函數。

相關鏈接

教學影片

##您可能也會有興趣的類似文章

[Obs#57] YAML區tags標籤自動補全的3種方法

$
0
0

tp.web.random_picture|560x300

Obsidian目前(v0.12.19)在YAML區輸入標籤時,無法以 #標籤 的格式出現,不使用 #,就不會自動顯示標籤列表供使用者選取,用了 # 又會造成語法錯誤。我彙總了3種解決方法。

# 人工操作

仍然輸入 # 以顯示標籤彈窗,選取完成後再刪除 # ,或加入雙號號:"#標籤"

無法用 # 的原因

# 井字號在YAML語法是註解,因此加了 # 會造成「INVALID YAML」的錯誤。

  1. 使用linter外掛
  2. 撰寫QuickAdd巨集replace_tags.js:限用一行式陣列寫法
  3. 撰寫QuickAdd巨集select_tags.js:彈出標籤視窗供選取

1. Linter外掛

安裝並啟用Linter,勾選【Format Tags in YAML】。

技巧

YAML區不能用陣列格式,也不能用列表格式。

🐞無法轉換

tags: [ #tag1, #tag2 ]

tags:
    - #tag1
    - #tag2

✅ 正常轉換

tags: #tag1 #tag2

tags: #tag1, #tag2

2. QuickAdd腳本刪除所有 #

原始碼

module.exports = async function get_tags(params) {
  const {app, quickAddApi: {suggester}} = params;

  const activeLeaf = app.workspace.activeLeaf;
  const editor = activeLeaf.view.editor;
  const lineNumber = editor.getCursor().line;
  let content = editor.getLine(lineNumber);
  content = content.replace(/#/g, &quot;&quot;);

  editor.setLine(lineNumber, content);
}

設定步驟

  1. 在儲存庫裡以文字編輯器建立replace_tags.js
  2. 設定→QuickAdd選項→【Manage Macros】
    • 輸入巨集名稱:macro_replace_tags
    • 【Add macro】→User Script選用replace_tags.js
  3. 設定→QuickAdd選項→輸入「Macro: Replace Tags」
    • 選用【Macro】後點擊【Add Choice】
    • Configure 「Macro: Replace Tags」:選用巨集macro_replac_tags

使用步驟

  1. 在YAML區tags右側輸入 # 選取標籤
  2. 標籤皆選用完畢後執行上述設定的QuickAdd巨集
  3. 巨集將刪除tags該行所有的 #

3. 彈出標籤視窗以選取標籤

module.exports = async function select_tags(params) {
  const {app, quickAddApi: {suggester}} = params;
  const allTags = Object.keys(app.metadataCache.getTags());
  let tag = await suggester(allTags, allTags);
  if (!tag) return;

  tag = tag.substring(1);  // skip the hash symbol
  return tag;
}

設定步驟

  1. 在儲存庫裡以文字編輯器建立select_tags.js
  2. 設定→QuickAdd選項→Manage Macros
    • 輸入巨集名稱:macro_select_tags
    • Add macro,User Script選用select_tags.js
  3. 設定→QuickAdd選項→輸入「Capture: Select Tags」
    • 選用【Capture】後點擊【Add Choice】
    • 點擊⚡以加入命令面板
    • Configure 「Capture: Select Tags」
      • 啟用Capture to active file
      • 啟用Capture format並輸入內容:{{MACRO:macro_select_tags}}
  4. 替Capture: Select Tags設定一個快捷鍵

使用步驟

在YAML區tags右側點擊設定好的快捷鍵,在彈出視窗裡選取標籤

相關連結

教學影片

##您可能也會有興趣的類似文章

[Obs#58] 快速開啟常用筆記的方法

$
0
0

tp.web.random_picture|600x350

本文彙總了幾種在Obsidian裡快速開啟常用筆記的方法:

1. 側邊欄的最愛筆記
2. Recent Files外掛
3. 內部鏈接列表
1. 新增在特定筆記裡
4. 用按鈕顯示
1. 使用行內按鈕(inline buttons)
2. 按鈕type: link,action用Advanced Obsidian URI
5. 用QuickAdd巨集
6. 用外部工具 AutoHotkey

方法1. 最愛筆記

優點
  1. 操作簡單、直覺
  2. 搜尋條件也能加入最愛
缺點
  1. 只有一層選單
  2. 無法快速過濾檔名

方法2. Recent Files外掛

最近開啟過的筆記會顯示在Recnet Files面板,方便隨時存取。

方法3. 內部鏈接列表

將常用筆記記錄在特定的筆記裡(例如我使用的!!! StartHere !!!,可視為Hub,中樞筆記):

  • [[!WS網路服務|常用網路服務]]
  • [[300-AutoHotkey-Index|AutoHotkey索引]]
  • [[Obsidian Notes]]

Hub筆記可使用Hotkeys for specific files外掛設置快捷鍵以方便操作。

不使用Hotkeys for specific files的話,也可以使用QuickAdd巨集來設定快捷鍵。

/**
  home.js
  功能: 開啟首頁
*/
const homePage = "!!! StartHere !!!";
const openMode_ = "preview";  // preview, source or default
const isNewPanel_ = true;  // 是否用新面板開啟

module.exports = async function home(params) {
  const app = params.app;

  const files = await app.vault.getMarkdownFiles();
  const selectedFile = files.filter(file => file.name === homePage + ".md")[0];
  if (selectedFile) {
    if (isNewPanel_) {
      const leaf = app.workspace.splitActiveLeaf();
      leaf.openFile(selectedFile, { state: {mode: openMode_} });
      app.workspace.setActiveLeaf(leaf);
    } else {
      app.workspace.activeLeaf.openFile(selectedFile)
    }
  } else {
    new Notice("找不到檔案: " + homePage + ".md", 5000)
  }
}

方法4. 用按鈕顯示

在專門放置按鈕的筆記(如!Buttons)裡加入要使用的筆記按鈕:

```button
name !WS網路服務
type link
action obsidian://advanced-uri?filepath=!WS網路服務
color red
```
^button-note-ws

action 使用Advanced Obsidian URI寫法,以 filepath 參數指定要開啟的檔案。

在Hub筆記裡以行內按鈕引用:

`button-note-ws`
改進處
  1. 較美觀
  2. 可水平放置以在一行內容納更多筆記

方法5. 用QuickAdd巨集

使用QuickAdd的巨集撰寫JavaScript,並綁定熱鍵以在選單裡搜尋要開啟的檔案。

📝select_file.js原始碼:https://gist.github.com/emisjerry/1d6426fcb20360f996f318f1104c6c1e

方法6. 用外部工具(AutoHotkey)

使用AutoHotkey的Run+Advanced Obsidian URI即可在外部直接開啟筆記。

;; Open Obsidian Notes
;; Hotkey: Ctrl+Shift+O
;; Author: emisjerry, http://jdev.tw/blog/
#SingleInstance Force

^+o::
  InputBox, sText, 開啟筆記, 請輸入筆記檔名(.md不輸入):, , 400, 150, , , , , %Clipboard%
  if (ErrorLevel == 0) {
    Run obsidian://advanced-uri?filepath=%sText%
  }
  return

使用到的外掛

  1. Hotkeys for specific files
  2. Buttons
  3. QuickAdd
  4. Advanced Obsidian URI

原始碼連結

教學影片

##您可能也會有興趣的類似文章

[Obs#59] Obsidian快速開啟常用筆記(2):不使用外掛的簡單方法

$
0
0

今天介紹不使用外掛而建立常用筆記的中樞筆記的方法,最後再介紹指定每個筆記的預設開啟模式(預覽或編輯模式)的外掛。

1. 建立完全是鏈接的筆記

建立一個獨立的中樞筆記。

2. 固定在畫面上

  1. 使用釘選(Pin)功能
  2. 拖拉到側邊欄:側邊欄裡的筆記沒有更多選項,在圖示上用右鍵以顯示功能表

2.1. 側邊欄筆記鏈接操作
* 〔Click〕開始在當前面板
* 〔Ctrl+Click〕開啟在新面板

提醒

如果使用Buttons外掛:
1. obsidian://open?file=筆記名會開啟在當前面板
2. obsidian://advanced-uri?filepath=筆記名會開啟在當前面板

3. 美化中樞筆記

3.1. 標題與列表不折行
.markdown-preview-view h1, .markdown-preview-view h2, .markdown-preview-view h3 {
  white-space:nowrap;
}

.markdown-preview-section ul &gt; li:not(.task-list-item) {
  white-space:nowrap;
}
用Admonitions外掛收起列表

設定Admonitions的 collapse: close 收起筆記列表,以減少顯示項目數量。

```ad-example
title: Obsidian
collapse: close
icon: gem

- [[Obsidian Notes]]
- [[Obsidian Plugins Notes|Plugins]]
- [[Obsidian Dataview Notes|Dataview]]
- ...
```

4. 開啟筆記用的外掛

  1. obsidian-homepage:指定當做首頁的筆記,每次啟動後自動開啟
  2. Force view mode:用YAML區的obsidianUIMode欄位指定preview或source為預設開啟模式

建議

使用Linter外掛自動產生obsidianUIMode欄位

相關鏈接

教學影片

##您可能也會有興趣的類似文章

不看不知道:「粘」要如何發音?

$
0
0

最近在B站觀看對岸朋友的教學影片,其中有個發音和台灣大相逕庭,對此覺得頗有趣的,因此稍微做了點研究。

Copy & Paste的Paste通常我們會用「貼上」、「黏貼」,黏的簡寫是粘,因此也可以看到粘貼的用法,發音都是「年」,但「粘」字對岸的發音卻是「沾」。

差異處似乎是簡體化造成的。

“黏”字是1988年3月25日國家語委與國家新聞出版署聯合頒布的《現代漢語常用字表》的“說明”中確定恢復使用的15個曾被廢止使用的漢字之一。“黏”讀音為nián,意思是指像膠水或糨糊那樣能使一物體附著於另一物體的性質,其用法如常用詞語“黏蟲”、“黏度”、“黏稠”、“黏膜”、“黏液”、“黏米”、“黏土”、“黏著力”、“黏糊糊”等,一般情況下為形容詞。

“粘”字除作為姓氏字時仍保留“年”音外,日常用法只能讀“沾”音。… 從詞性上看,它只有動詞用法。

— 來源:https://www.easyatm.com.tw/wiki/%E9%BB%8F

但台灣似乎沒有形容詞、動詞這樣的區分,全部發音「年」。

那麼「不粘鍋」、「魔鬼粘」呢?
台灣用法:不沾鍋、魔鬼氈(或魔鬼沾)。另外,粘字只用在姓氏上。

01

02

##您可能也會有興趣的類似文章


筆電延長保固的問題:令人不愉快的經驗

$
0
0

00

我在2019年雙十一時買的中高階筆電保固快要到期了,因為使用過程中4K螢幕故障過一次(出現數條垂直黑線)因此更換過螢幕面板,在長期使用上感覺不是很踏實,因此到官網尋找延長保固服務,沒想到:

  1. 網站很難(嚴格說是沒有)找到延長保固的資訊,網頁裡「請點擊此處以獲得進一步資料」的此處根本沒有連結
  2. 終於在某個網頁找到線上客服(不是每個網頁都有),才發現「陷阱」
  3. 這個廠商是要在購買日起一年內才能購買延長保固(而且只能延長一次),但標準的保固是兩年,試想在沒有特別提醒的狀況下,有誰會在兩年保固期裡的第一年就去購買第三年的保固?
  4. 延長保固必須到維修站購買,再於網站上啟用。資訊時代為何還必須臨櫃辦理?線上商場是擺設?
  5. 比照另一個廠商,華碩的延長保固是在保固期效內購買延長,可見這個廠商的缺乏誠意

總之,學到一次教訓:台灣的筆電廠商不願意長時間的保固,它只希望你能快速的、經常的更換新機。如果你需要保固,務必在購買前確認清楚保固與延長保固年數的作法,以免像我一樣只能自認倒楣。😢

交談全紀錄

以下是與線上客服的交談全紀錄:

01
02
03
04

##您可能也會有興趣的類似文章

續-筆電延長保固的問題:令人不愉快的經驗

$
0
0

上一篇筆電延長保固的問題:令人不愉快的經驗也一併在Mobile01發佈,有些網友發表了些評論,以下是我的回應。

我就一個一般的使用者,只會用一般的思維來思考,有幾位網友的雄文太過高屋建瓴,令人費解。

買保險就是為了保障,有誰買保險是為了出險的?

因為對產品的長期穩固性有疑慮,因此才想要「買」延長保固,我想花錢買保障,但廠商「取巧」的迴避了這種可能。號稱標準保固兩年,但在MSI筆電延長保固的網頁裡,卻對延長保固的作法隻字不提,不是想要延長保固的,有人會注意到必須在第一年就先購買嗎?

廠商能有各種作法,消費者也只能接受,但唯一的要求只是資訊透明,讓有需要的人有選擇的機會,而不只是為了自身考量使用種種限制來迴避了消費者選擇的權利。

消費者的建議:
1. 在保固期內皆可再購買延長保固(比照華碩)
2. 在標準保固兩年文字後加註延長保固必須在購買日起一年內(或六個月,皆可)才能購買,且只能延長一次

難道MSI只想要一次消費的顧客?

##您可能也會有興趣的類似文章

停止產生Windows 10/11怪異的空資料夾tw-*.tmp的步驟

$
0
0

有問題的資料夾:C:\Windows\System32\config\systemprofile\AppData\Local\

在資料夾裡每天都會產生多個tw-開頭.tmp
結尾的資料夾,資料夾裡沒有任何內容。這些資料夾可以安全無虞地刪除,我們還必須停用產生它的排程,否則資料夾仍會繼續不斷的產生出來。

開啟資料夾

必須以系統管理員的身分才能開啟。

01|500

02|500

03|700

停用排程步驟

方法1. 命令行命令

SCHTASKS /Change /TN &quot;\Microsoft\Windows\Management\Provisioning\Logon&quot; /DISABLE &gt;NUL 2&gt;&amp;1

方法2. 排定的工作視窗

  • Microsoft→Windows→Management→Provisioning→Logon,變更為已停用

04

相關鏈接

教學影片

##您可能也會有興趣的類似文章

[Obs#60] 用Obsidian管理瀏覽器書籤的嘗試

$
0
0

試看看把瀏覽器的書籤利用Obsidian的筆記來製作,會否有更方便的優勢呢?

我們要形成兩種書籤形式:
1. 將書籤開啟於瀏覽器:使用Buttons外掛
2. 內嵌在筆記裡,提供即時服務:使用HTML的iframe標籤+Admonition

功能展示

使用Templater產生筆記

為了能快速將一個網站產生出兩種格式,使用了Templater來產生筆記內容。

相關鏈接

教學影片

##您可能也會有興趣的類似文章

快速編輯GitHub Gist的多平台工具:Lepton

$
0
0

隨著分享的程式碼片段越來越多,GitHub網頁的Gist管理也越發困難,而Lepton這個應用有效的協助我們更加妥善、更方便的編輯這些Gist。

01

操作重點

  1. 用GitHub帳戶登入
  2. Gist description欄位輸入特定格式:[標題] 說明 #標籤1 #標籤2

相關鏈接

教學影片

##您可能也會有興趣的類似文章

Viewing all 904 articles
Browse latest View live