在obsidian未打开情况下,如何快速录入闪念
问:
最近一直在找可以在关闭Obsidian的情况下快速记录闪念的方案,昨天发现了这个
https://forum.obsidian.md/t/heres-my-autohotkey-solution-for-quick-and-easy-journaling-auto-logging-of-what-youre-doing/25506
使用Autohotkey,更改一下脚本路径就可以用,昨天用的还挺顺利。今天Obsidian更新到1.0之后,发现使用Autohotkey呼出的窗口输入中文后,用其他编辑器打开还正常,一旦在Obsidian中打开就出现乱码,并且在资源浏览器中再用其他编辑器打开也同样是乱码了……,就是说一旦用Obsidian打开后,文件就发生变动了,请教各位,这是啥问题呀?输入英文没这个问题
B站上的及时春雨和台湾简睿老师都有用ahk迅速记录笔记的脚本,不过定制的东西太多,这个脚本相对简洁
答:可以试着在 AHK脚本第一行加上 FileEncoding,UTF-8
另外ahk脚本本身也要另存成UTF-8 BOM格式,避免中文解析问题。
; TimeLogger
; ----------
; User-configurable variables:
; ----------------------------
FileEncoding,UTF-8
AppLoggingRate = 10 ; Rate for capturing active window titles - number in seconds
; LogPath = ENTER-PATH-WHERE-YOU-KEEP-YOUR-JOURNALING-NOTES-IN-OBSIDIAN'S-VAULT. (Full path please. And yes, erase EVERYTHING on this line after the equals sign and add the path).
LogPath = G:\myBase\多思考少烦恼\Zettelkasten\journals\
AppLogFile = yes ; Use separate AppLog file instead of a single AppLog/Journal file. Yes/No.
SectionTitles = no ; Add H5 headings before every entry.
FirstRun = 0 ; Change to 1 if you want to be automatically asked for an initial log entry after startup.
; Non-configurable stuff:
; -----------------------
; (Please, don't touch)
LastActiveWindow =
AppLogSwitch = 1
JournalSwitch = 1
RunTime = 0
SleepTime := AppLoggingRate * 1000
; Actual script:
; --------------
Gui, TimeLogger: Font, s12
Gui, TimeLogger: Add, Edit, vLoggerContent x10 y10 w500 h600,
Gui, TimeLogger: Font
Gui, TimeLogger: Add, Button, gLogSave x10 y620 w500 h50, &Save Log Entry
Gui +LastFound +OwnDialogs +AlwaysOnTop
InputBox, LoggerRate, TimeLogger Ultimate Hyper Rainbow Edition, When do you want me to check on you?`n`n(time range in minutes)
Loop
{
JournalTime := LoggerRate * 60000
RunTime := RunTime + SleepTime
Sleep, %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
If ActiveWindow != %LastActiveWindow%
{
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename, , yyyy-MM-dd
; LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
LogWindow := ActiveWindow
If AppLogFile = yes
{
LogFilename = %LogFilename%_AppLog.md
}
Else
{
LogFilename = %LogFilename%.md
}
LogFile = %LogPath%%LogFilename%
if (AppLogSwitch = 1) or (SectionTitles = yes)
{
FileContent = `n##### AppLog`n%LogTime% - %LogWindow%`n`n- - -`n
}
else
{
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
}
AppLogSwitch = 0
JournalSwitch = 1
sleep, 20
FileAppend, %FileContent%, %LogFile% ;FileAppend [, Text, Filename, Encoding]
}
If (RunTime = JournalTime) or (FirstRun = 1)
{
InputBox, LoggerExcuse, TimeLogger Ultimate Hyper Rainbow Edition, GOTCHA - what are you doing?`n`n`n(Manual Journaling: Windows Key + J)`n(Stop logging/Exit TimeLogger: Shift + Windows Key + L)
sleep, 20
FormatTime, LogTime,, HH:mm:ss
;FormatTime, LogFilename, , yyyy-MM-dd_dddd
FormatTime, LogFilename, , yyyy-MM-dd
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
LogFilename = %LogFilename%.md
LogFile = %LogPath%%LogFilename%
If SectionTitles = yes
{
FileContent = `n- - -`n##### AutoJournal`n%LogTime% - %LoggerExcuse%`n`n- - -`n
}
Else
{
FileContent = `n- - -`n%LogTime% - %LoggerExcuse%`n`n- - -`n
}
sleep, 20
RunTime = 0
AppLogSwitch = 1
JournalSwitch = 0
FirstRun = 0
FileAppend, %FileContent%, %LogFile%
}
WinActivate, %StoreActiveWindow%
LastActiveWindow = %ActiveWindow%
}
WriteJournal:
FormatTime, LogTime,, HH:mm:ss
;FormatTime, LogFilename, , yyyy-MM-dd_dddd
FormatTime, LogFilename, , yyyy-MM-dd
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
; LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
LogWindow :=ActiveWindow
LogFilename = %LogFilename%.md
LogFile = %LogPath%%LogFilename%
If SectionTitles = yes
{
FileContent = `n- - -`n##### Journal`n%LogTime% - %LoggerContent%`n`n- - -`n
}
Else
{
FileContent = `n%LogTime% - %LoggerContent%`n`n- - -`n
}
FileAppend, %FileContent%, %LogFile%
WinActivate, %StoreActiveWindow%
return
LogSave:
Gui, TimeLogger: Submit, Hide
GuiControlGet, LoggerContent
sleep, 20
GoSub, WriteJournal
GuiControl, TimeLogger:, LoggerContent,
return
#J::
Gui, TimeLogger: Show
return
#+l::
ExitApp
return
ExitApp