alfredworkflow để hoàn tất quá trình cài đặt - f88 bóng đá
Hôm nay, tôi sẽ giới thiệu một Alfred Workflow có khả năng nâng cao đáng kể hiệu suất sử dụng Obsidian. Tác giả của công cụ này là hauselin, và bạn có thể tìm thấy dự án tại đường dẫn sau:
Dưới đây bài cào là một số chức năng mà tôi thường sử dụng, bao gồm hầu hết các tính năng cơ bản và một số mẹo chuyên sâu.
Cài đặt
Trước tiên, bạn cần cài đặt Alfred trên máy tính của mình. Tiếp theo, tải phiên bản mới nhất từ liên kết đã cung cấp, sau đó nhấp đúp vào tệp Obsidian.alfredworkflow để hoàn tất quá trình cài đặt. Khi kèo cá cược bóng đá hoàn thành, trong menu Workflows của Alfred, bạn sẽ nhìn thấy mục "Obsidian". Chỉ cần xem hình dưới đây với vô số nút, bạn có thể hiểu được sức mạnh tuyệt vời của nó.
Thiết lập
Trước khi bắt đầu sử dụng, bạn cần thực hiện một số cấu hình trong Alfred:
- Thêm Vault: Sử dụng lệnh
oaddvault
. - Thêm Vault chứa nhật ký: Lệnh
odailyvault
(Yêu cầu đã cài đặt và kích hoạt plugin nhật ký). - Đặt định dạng tiêu đề cho nhật ký: Sử dụng lệnh
odailyformat datetime_format
, ví dụ nhưodailyformat yymmdd~ddd
để tạo ra định dạng kiểu211207~Tue
. - Đặt thư mục mặc định cho nhật ký: Lệnh
odailypath
. - Đặt mẫu nhật ký mặc định: Lệnh
odailytemplate
.
Vấn đề phát sinh ở bước 3 khi Obsidian của tôi sử dụng ngôn ngữ tiếng Việt, dẫn đến tiêu đề nhật ký xuất hiện bằng tiếng Anh thay vì tiếng Việt. Ví dụ, thay vì "211207~ Thứ hai", nó hiển thị "211207~Mon".
Giải pháp được tìm thấy trong phần Issues của dự án:
Trong giao diện thiết lập Workflow của Alfred, tìm đến node tương ứng và chỉnh sửa biến ngày tháng, hỗ trợ các tùy chọn như months
, months_short
, days
, days_short
. Đối với nhu cầu của tôi, chỉ cần chỉnh sửa days_short
.
1var months = ["Tháng giêng", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mười", "Tháng mười một", "Tháng mười hai"];
2var months_short = ["Thg1", "Thg2", "Thg3", "Thg4", "Thg5", "Thg6", "Thg7", "Thg8", "Thg9", "Thg10", "Thg11", "Thg12"];
3var days = ['Chủ nhật', 'Thứ hai', 'Thứ ba', 'Thứ tư', 'Thứ năm', 'Thứ sáu', 'Thứ bảy'];
4var days_short = ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'];
Chức năng
Workflow cung cấp nhiều lệnh hữu ích, dưới đây là một số lệnh phổ biến:
Mở Vault: oo
Lệnh oo your_vault_name
giúp mở Vault mong muốn, tên Vault sẽ được tự động gợi ý. Nếu bạn chỉ có một Vault, thì tính năng này không quá cần thiết.
Mở Nhật ký: od
Mở hoặc tự động tạo nhật ký hôm nay nếu chưa tồn tại. Đây là một tính năng quan trọng nên tôi đã thêm phím tắt cho nó.
Tìm đến node tương ứng trong giao diện Workflow, nhấp đúp chuột để thiết lập phím tắt. Phím tắt sẽ có hiệu lực toàn cục. Ví dụ, tôi dùng tổ hợp phím Caps + T
để mở nhật ký hàng ngày.
Thêm nội dung vào Nhật ký: odi
Thêm nội dung vào cuối nhật ký hôm nay, nội dung sẽ được chuyển đổi thành danh sách không có dấu thứ tự và kèm thời gian theo định dạng yyyymmdd_hhmmss
.
Để phù hợp với định dạng cá nhân, tôi đã điều chỉnh định dạng thời gian và script xử lý nội dung tại hai node bên phải trong giao diện Workflow.
Lệnh này cũng hỗ trợ sử dụng phím tắt để thêm nội dung từ clipboard vào nhật ký. Khi đọc tài liệu hoặc duyệt web, bạn chỉ cần hai bước đơn giản để lưu đoạn văn yêu thích vào nhật ký:
- Copy đoạn văn.
- Nhấn phím tắt đã cài đặt.
Quy trình này giúp bạn không cần rời khỏi giao diện đọc, rất tiện lợi.
Thông báo: onotify
Lệnh này bật thông báo mỗi khi nội dung được thêm vào ghi chú, giúp bạn biết rằng việc thêm nội dung đã thành công.
Tìm kiếm: os
, or
, ot
(hoặc oss
, orr
, ott
)
Ba lệnh đầu tiên tìm kiếm tất cả các tệp markdown trên máy tính. Nếu tệp thuộc Vault, nó sẽ được mở bằng Obsidian; ngược lại, tệp sẽ được mở bằng trình soạn thảo mặc định của hệ thống. Sự khác biệt giữa các lệnh nằm ở phạm vi thời gian tìm kiếm.
Các lệnh oss
, orr
và ott
tương tự nhưng chỉ tìm kiếm trong Vault. Tôi đã thiết lập phím tắt cho lệnh oss
để dễ dàng tìm kiếm trong Vault. Ví dụ, tổ hợp phím Caps + F
sẽ giúp bạn tìm kiếm nhanh chóng trong Vault.
Tổng kết
Workflow rất mạnh mẽ, nhưng để giảm gánh nặng nhớ lệnh, tôi chỉ sử dụng bốn tính năng chính sau:
Phụ lục
Định dạng nhật ký của tôi sử dụng thời gian làm tiêu đề, tiếp theo là đoạn văn đầy đủ. Script đã chỉnh sửa như sau:
1ObjC.import('stdlib');
2console.log('Running script: oi')
3// get the current app to access the standard additions
4app = Application.currentApplication();
5app.includeStandardAdditions = true;
6function interpolate_homepath(path) {
7 homepath = app.pathTo('home folder')
8 return path.replace(/^~/, homepath)
9}
10// get inbox note path
11var inbox_md = $.getenv('dailytodaypath');
12inbox_md = interpolate_homepath(inbox_md)
13// where to add timestamp
14var inbox_timestamp = $.getenv('inbox_timestamp');
15// get timestamp
16var timestamp = $.getenv('date');
17// escape "
18var query = "{query}";
19// query = query.replaceAll('"', '\"');
20query = query.replace(/\"/g, '\"'); // github #25 @jamiew
21if (inbox_timestamp == "append") {
22 query += (" " + timestamp);
23} else if (inbox_timestamp == "prepend") {
24 query = "\n" + "## " + timestamp + "\n\n" + query;
25}
26// replace @NEWLISTITEM@ with new lines
27query = query.replace(/@NEWLISTITEM@/g, '\n\n')
28console.log("query: " + query)
29// function to read utf
30ObjC.import('Foundation')
31const readFile = function (path, encoding) {
32 !encoding && (encoding = $.NSUTF8StringEncoding)
33 const fm = $.NSFileManager.defaultManager
34 const data = fm.contentsAtPath(path)
35 const str = $.NSString.alloc.initWithDataEncoding(data, encoding)
36 return ObjC.unwrap(str)
37}
38// read file to append to it
39var filetext = readFile(inbox_md);
40// remove newline characters
41while (filetext.endsWith("\n")) {
42 filetext = filetext.slice(0, filetext.length - 1);
43}
44if (filetext == "") {
45 console.log("EMPTY NOTE!")
46} else {
47 filetext += "\n"; // leave one newline character
48}
49console.log("CURRENT TEXT (string)");
50console.log(filetext)
51
52var final_text = filetext + query;
53console.log("FINAL TEXT")
54console.log(final_text)
55// write file
56str2write = $.NSString.alloc.initWithUTF8String(final_text);
57str2write.writeToFileAtomicallyEncodingError(inbox_md, true, $.NSUTF8StringEncoding, null);
58// notification
59var oinotify = $.getenv('oinotify');
60if (oinotify == "on") {
61 app.displayNotification("Added text to inbox", { withTitle: 'Obsidian Alfred workfow' })
62}