Phím tắt này sẽ hoạt động toàn cầu - tu vi ngay moi
Hôm nay, tôi sẽ giới thiệu một Alfred Workflow cực kỳ hữu ích giúp bạn thao tác với Obsidian nhanh chóng hơn. Tác giả của workflow này là hauselin, và bạn có thể tìm thấy dự án tại địa chỉ sau:
Dưới đây là các chức năng mà tôi đã sử dụng và đánh giá cao, bao gồm hầu hết các tính năng phổ biến.
Cài đặt
Đầu tiên, bạn cần cài đặt Alfred. Tiếp theo, tải xuống phiên bản mới nhất từ liên kết trên, sau đó nhấp đúp vào tệp Obsidian.alfredworkflow để hoàn tất quá trình cài đặt. Sau khi cài đặt xong, trong danh sách Workflows của Alfred, bạn sẽ nhìn thấy mục “Obsidian”. Chỉ cần nhìn vào mạng lưới các node phức tạp (như hình dưới), bạn đã có thể hiểu được sức mạnh tuyệt vời của nó.
Cấu hình
Trước khi sử dụng, bạn cần thực hiện một số cấu hình cơ bản bằng cách chạy các lệnh trong Alfred:
- Thêm vault:
oaddvault
- Thêm vault chứa nhật ký:
odailyvault
(yêu cầu đã cài đặt và kích hoạt plugin nhật ký) - Thiết lập định dạng tiêu đề cho nhật ký:
odailyformat datetime_format
, ví dụodailyformat yymmdd~ddd
nghĩa là sử dụng định dạng211207~Tue
. - Đặt đường dẫn mặc định cho nhật ký:
odailypath
- Đặt mẫu mặc định cho nhật ký:
odailytemplate
Ở bước 3, nếu bạn đang sử dụng Obsidian bằng tiếng Việt và muốn tiêu đề nhật ký như “211207Thứ Hai” thay vì “211207Mon”, bạn có thể giải quyết vấn đề này bằng cách chỉnh sửa biến ngày tháng trong giao diện cấu hình Workflow của Alfred. Tìm đến node tương ứng, nhấp đúp và chỉnh sửa các biến j88vip1 như sau:
var months = ["Tháng Một", "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"];
var months_short = ["Thg 1", "Thg 2", "Thg 3", "Thg 4", "Thg 5", "Thg 6", "Thg 7", "Thg 8", "Thg 9", "Thg 10", "Thg 11", "Thg 12"];
var days = ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'];
var days_short = ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'];
Các chức năng chính
Workflow này chủ yếu hoạt động dựa trên lệnh. Dưới đây là một số lệnh phổ biến:
Mở vault: oo
Lệnh oo your_vault_name
cho phép bạn mở một vault cụ thể, tên vault sẽ được tự động gợi ý. Nếu bạn chỉ có một vault duy nhất thì có lẽ không cần dùng nhiều đến lệnh này.
Mở nhật ký: od
Mở nhật ký hôm nay hoặc tự động tạo nếu chưa tồn tại. Đây là một trong những tính năng quan trọng nhất, do đó tôi đã thêm phím tắt cho nó.
Bạn có thể thiết lập phím tắt bằng cách nhấp đúp vào node tương ứng (như hình dưới). Phím tắt này sẽ hoạt động toàn cầu. Trong trường hợp của tôi, tôi đã ánh xạ Caps Lock thành tổ hợp phím ⌃⌥⇧⌘
, nhờ vậy chỉ cần nhấn Caps + T
là có thể mở nhật ký ngay lập tức.
Thêm nội dung vào nhật ký: odi
Lệnh này sẽ thêm nội dung vào cuối nhật ký hôm nay, đồng thời xử lý nội dung thành danh sách không thứ tự và thêm dấu thời gian theo định dạng yyyymmdd_hhmmss
.
Tôi đã tùy chỉnh lại định dạng thời gian và script xử lý nội dung để phù hợp với nhu cầu cá nhân. Script được chỉnh sửa nằm ở hai node bên phải (như hình dưới).
Ngoài ra, lệnh này còn hỗ trợ thêm nội dung từ clipboard vào nhật ký thông qua phím tắt. Bạn có thể thiết lập phím tắt này tại node bên trái (như hình minh họa). Khi đọc web hoặc tài liệu, chỉ cần sao chép đoạn văn bản yêu thích và sử dụng phím tắt để lưu chúng vào nhật ký mà không cần rời khỏi giao diện đọc.
Thông báo: onotify
Lệnh này bật chế độ thông báo mỗi khi bạn thêm nội dung vào nhật ký hoặc ghi chú.
Tìm kiếm: os
, or
, ot
(hoặc oss
, orr
, ott
)
Những lệnh đầu tiên giúp bạ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 về vault, nó sẽ được mở bằng Obsidian; ngược lại, nó sẽ được mở bằng trình soạn thảo mặc định của hệ thống. Mỗi lệnh khác nhau về phạm vi thời gian tìm kiếm.
Các lệnh oss
, orr
, và ott
hoạt động tương tự nhưng chỉ tìm kiếm trong các tệp markdown thuộc vault. Tôi đã thiết lập phím tắt Caps + F
để tìm kiếm nhanh trong vault.
Tổng kết
Workflow này rất mạnh mẽ, tuy nhiên để giảm thiểu gánh nặng ghi nhớ, tôi chỉ sử dụng thường xuyên bốn tính năng sau:
Phụ lục
Định dạng nhật ký của tôi là tiêu đề là thời gian, tiếp theo là nội dung đầy đủ. Script đã chỉnh sửa như sau:
ObjC.import('stdlib');
console.log('Chạy script: oi');
app = Application.currentApplication();
app.includeStandardAdditions = true;
function interpolate_homepath(path) {
homepath = app.pathTo('home folder');
return path.replace(/^~/, homepath);
}
var inbox_md = $.getenv('dailytodaypath');
inbox_md [kết quả bóng đá ngoại hạng anh](/news/651ea4c2106d6b90/) = interpolate_homepath(inbox_md);
var inbox_timestamp = $.getenv('inbox_timestamp');
var timestamp = $.getenv('date');
var query = "{query}";
query = query.replace(/\"/g, '\"'); // github #25 @jamiew
if (inbox_timestamp == "append") {
query += (" " + timestamp);
} else if (inbox_timestamp == "prepend") {
query = "\n" + "## " + timestamp + "\n\n" + query;
}
query = query.replace(/@NEWLISTITEM@/g, '\n\n');
ObjC.import('Foundation');
const readFile = function (path, encoding) {
!encoding && (encoding = $.NSUTF8StringEncoding);
const fm = $.NSFileManager.defaultManager;
const data = fm.contentsAtPath(path);
const str = $.NSString.alloc.initWithDataEncoding(data, encoding);
return ObjC.unwrap(str);
};
var filetext = readFile(inbox_md);
while (filetext.endsWith("\n")) {
filetext = filetext.slice(0, filetext.length - 1);
}
if (filetext == "") {
console.log("GHI CHÚ TRỐNG!");
} else {
filetext += "\n";
}
var final_text = filetext + query;
str2write = $.NSString.alloc.initWithUTF8String(final_text);
str2write.writeToFileAtomicallyEncodingError(inbox_md, true, $.NSUTF8StringEncoding, null);
var oinotify = $.getenv('oinotify');
if (oinotify == "on") {
app.displayNotification("Thêm văn bản vào ghi chú", { withTitle: 'Obsidian Alfred workfow' });
}
Hy vọng bài viết này sẽ giúp bạn tối ưu hóa quy trình làm việc với Obsidian và Alfred!