[{"content":"Obsidian.nvim 介紹 Obsidain.nvim 是一個 Neovim 的插件，主要的功能是讓Neovim 擁有類似 Obsidian 的功能，在實際體驗當中，可以作為 Neovim 和 Obsidian 的橋樑。\nObsidian.nvim 安裝說明 官方要求：\nNeovim \u0026gt;= 0.8 nvim-lua/plenary.nvim Obsidian 的 vault 目錄必須在你的系統上有設好。 這裡我按照官方網站的建議安裝後有遇到 nvim-cmp 無法順利開啟的報錯，因此我的安裝過程有些許更改， 首先創建obsidian.lua :\nObsidian.lua ~/plungs/obsidian.lau return { { \u0026#34;obsidian-nvim/obsidian.nvim\u0026#34;, version = \u0026#34;*\u0026#34;, lazy = true, ft = \u0026#34;markdown\u0026#34;, opts = { workspaces = { { name = \u0026#34;personal\u0026#34;, path = \u0026#34;C:/Users/AICML/Documents/NoteSystem\u0026#34;, }, }, completion = { nvim_cmp = false, blink = true, }, }, config = function(_, opts) local obsidian = require(\u0026#34;obsidian\u0026#34;) obsidian.setup(opts) -- 在 markdown buffer 綁定 gf vim.api.nvim_create_autocmd(\u0026#34;FileType\u0026#34;, { pattern = \u0026#34;markdown\u0026#34;, callback = function() -- gf: 直接跳到筆記 vim.keymap.set(\u0026#34;n\u0026#34;, \u0026#34;gf\u0026#34;, \u0026#34;\u0026lt;cmd\u0026gt;ObsidianFollowLink\u0026lt;CR\u0026gt;\u0026#34;, { buffer = true, desc = \u0026#34;Obsidian follow link\u0026#34; }) -- gF: 在分割視窗打開筆記（可選） vim.keymap.set( \u0026#34;n\u0026#34;, \u0026#34;gF\u0026#34;, \u0026#34;\u0026lt;cmd\u0026gt;ObsidianFollowLink vsplit\u0026lt;CR\u0026gt;\u0026#34;, { buffer = true, desc = \u0026#34;Obsidian follow link in vsplit\u0026#34; } ) end, }) end, }, { \u0026#34;saghen/blink.cmp\u0026#34;, version = \u0026#34;*\u0026#34;, opts = { sources = { default = { \u0026#34;lsp\u0026#34;, \u0026#34;path\u0026#34;, \u0026#34;obsidian\u0026#34; }, }, }, }, { \u0026#34;nvim-treesitter/nvim-treesitter\u0026#34;, build = \u0026#34;:TSUpdate\u0026#34;, opts = { ensure_installed = { \u0026#34;markdown\u0026#34;, \u0026#34;markdown_inline\u0026#34;, \u0026#34;lua\u0026#34;, \u0026#34;json\u0026#34;, \u0026#34;vim\u0026#34; }, highlight = { enable = true }, }, }, { \u0026#34;neovim/nvim-lspconfig\u0026#34;, config = function() local lspconfig = require(\u0026#34;lspconfig\u0026#34;) lspconfig.marksman.setup({}) end, }, { \u0026#34;williamboman/mason.nvim\u0026#34;, build = \u0026#34;:MasonUpdate\u0026#34;, config = function() require(\u0026#34;mason\u0026#34;).setup() end, }, { \u0026#34;williamboman/mason-lspconfig.nvim\u0026#34;, config = function() require(\u0026#34;mason-lspconfig\u0026#34;).setup({ ensure_installed = { \u0026#34;marksman\u0026#34; }, }) end, }, } 再來是 cmp.lua，這裡還需要處理補全的問題\ncmp.lua ~/plungs/cmp.lua return { \u0026#34;hrsh7th/nvim-cmp\u0026#34;, dependencies = { \u0026#34;hrsh7th/cmp-nvim-lsp\u0026#34;, \u0026#34;hrsh7th/cmp-buffer\u0026#34;, \u0026#34;hrsh7th/cmp-path\u0026#34;, }, opts = function(_, opts) local cmp = require(\u0026#34;cmp\u0026#34;) -- 確保 opts.mapping 存在 opts.mapping = opts.mapping or {} opts.mapping = vim.tbl_extend(\u0026#34;force\u0026#34;, opts.mapping, { -- Enter = confirm [\u0026#34;\u0026lt;CR\u0026gt;\u0026#34;] = cmp.mapping(function(fallback) if cmp.visible() and cmp.get_active_entry() then cmp.confirm({ select = true }) else fallback() end end, { \u0026#34;i\u0026#34;, \u0026#34;s\u0026#34; }), -- Tab = 移動候選 [\u0026#34;\u0026lt;Tab\u0026gt;\u0026#34;] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() else fallback() end end, { \u0026#34;i\u0026#34;, \u0026#34;s\u0026#34; }), -- Shift+Tab = 上一個候選 (常見補充) [\u0026#34;\u0026lt;S-Tab\u0026gt;\u0026#34;] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() else fallback() end end, { \u0026#34;i\u0026#34;, \u0026#34;s\u0026#34; }), -- Shift+Enter = 強制換行 (跳過補全) [\u0026#34;\u0026lt;S-CR\u0026gt;\u0026#34;] = cmp.mapping(function(fallback) fallback() -- 直接執行原本的 Enter 行為 end, { \u0026#34;i\u0026#34;, \u0026#34;s\u0026#34; }), }) return opts end, } 基本功能介紹 1. Vault \u0026amp; Workspace 支援 你可以設定多個 vault（例如 personal、work）。 用 opts.workspaces 指定路徑。 打開不同 vault 的 .md 檔時會自動切換 context。 2. Note 建立與管理 :ObsidianNew # 建新筆記（可以指定標題，會自動產生檔案名和 frontmatter）。 :ObsidianToday # 快速建立日記（適合 daily notes）。 :ObsidianTemplate # 插入模板（需要先設置 templates 目錄）。 3. 搜尋與連結 :ObsidianSearch \u0026lt;keyword\u0026gt; # 在 vault 內搜尋（模糊比對檔名）。 :ObsidianQuickSwitch # 快速跳轉到某個筆記。 :ObsidianFollowLink # 在 Neovim 裡跳轉到 wikilink [[]] 或普通 markdown link。 :ObsidianBacklinks # 查看目前筆記被哪些筆記連到。 4. 外部 Obsidian 整合 - ObsidianOpen # 用 Obsidian 桌面版打開當前筆記。 - :ObsidianOpen \u0026lt;note\u0026gt; # 打開指定筆記。 5. Tag / Metadata 支援 內建 YAML fr ntmatter 解析，可以依據 tag 搜尋或建立新筆記。 處理 轉跳問題\nvim.api.nvim_create_autocmd(\u0026#34;FileType\u0026#34;, { pattern = \u0026#34;markdown\u0026#34;, callback = function() -- gf: 直接跳到筆記 vim.keymap.set( \u0026#34;n\u0026#34;, \u0026#34;gf\u0026#34;, \u0026#34;\u0026lt;cmd\u0026gt;ObsidianFollowLink\u0026lt;CR\u0026gt;\u0026#34;, { buffer = true, desc = \u0026#34;Obsidian follow link\u0026#34; } ) -- gF: 在分割視窗打開筆記（可選） vim.keymap.set( \u0026#34;n\u0026#34;, \u0026#34;gF\u0026#34;, \u0026#34;\u0026lt;cmd\u0026gt;ObsidianFollowLink vsplit\u0026lt;CR\u0026gt;\u0026#34;, { buffer = true, desc = \u0026#34;Obsidian follow link in vsplit\u0026#34; } ) end, }) ","permalink":"https://hahakevin45.github.io/posts/obsiaian_nvim/","summary":"Obsidian.nvim 設置教學","title":"Obsidian.nvim 設置教學"},{"content":"前言 為了縮短 Neovim 的安裝流程以及避免安裝過程當中的各種意外，這裡選擇使用 LazyVim(一個預配置好的Neovim 版本)，裡面包含了大部分人會用到的功能和插件。\nLazyVim 安裝 在安裝的部分完全參考官網設置，採用最預設的安裝流程。 這裡先備份過往的 Neovim 設置(如果未曾安裝過Neovim 可以跳過):\n# required Move-Item $env:LOCALAPPDATA\\nvim $env:LOCALAPPDATA\\nvim.bak # optional but recommended Move-Item $env:LOCALAPPDATA\\nvim-data $env:LOCALAPPDATA\\nvim-data.bak 首先從git 庫安裝程式:\ngit clone https://github.com/LazyVim/starter $env:LOCALAPPDATA\\nvim 接下來移除裡面的git :\nRemove-Item $env:LOCALAPPDATA\\nvim\\.git -Recurse -Force 最後執行:\nnvim 理論上就能開啟 LazyVim 的介面\n下載對應的 Extras Extras 是 LazyVim 官方推出的功能，針對不同用途將常見的插件整理成一個組合包，讓我們可以方便的下載和使用，以避免繁瑣的安裝問題。\n由於筆記的格式是使用 Markdown 格式，我們需要在 Extras 介面找到 lang.markdown 並開啟，該 Extras 包含了基本的Markdown 功能，安裝完成後就能擁有基礎的 Markdown 編輯環境。\n當下載完成後可以在 lazyvim.json 觀察到新增:\n// File: $env:LOCALAPPDATA\\nvim\\lazyvim.json { \u0026#34;extras\u0026#34;: [ \u0026#34;lazyvim.plugins.extras.lang.markdown\u0026#34; ], \u0026#34;news\u0026#34;: { \u0026#34;NEWS.md\u0026#34;: \u0026#34;5202\u0026#34; }, \u0026#34;version\u0026#34;: 5 } lang.markdown 介紹 下面簡單介紹 lang.markdown 內含的插件組成和用法\nmarkdown-preview.nvim (即時預覽器) 功能： 這就是讓你能在瀏覽器中看到即時渲染效果的插件。 如何使用：\n:MarkdownPreview：啟動或開關預覽。 :MarkdownPreviewStop：停止預覽。 headlines.nvim (美化編輯器介面) 功能： 這個插件讓你在 Neovim 編輯器內部的 Markdown 檔案看起來更乾淨、更有結構感。它會自動隱藏標題的 # 符號，用更美觀的圖示替換，還能加上漂亮的分隔線。\nmarkdown Extra 設定方法 當想要修改 markdown 相關的設定時，可以在 $env:LOCALAPPDATA\\nvim\\lua\\plugins 路徑下創建一個 markdown.lua 檔案。 系統偵測到這個檔案時，裡面的設定會覆蓋掉原本 Extra 的預設設定。\n$env:LOCALAPPDATA\\nvim ├── lua │ ├── config │ │ ├── autocmds.lua │ │ ├── keymaps.lua │ │ ├── lazy.lua │ │ └── options.lua │ └── plugins │ ├── spec1.lua │ ├── ** │ └── markdown.lua └── init.lua 下面是 markdown.lua 的設定範例，你可以在官網找到更多的設定選項。\n-- 路徑: $env:LOCALAPPDATA\\nvim\\lua\\plugins\\markdown.lua -- 功能: 客製化 lang.markdown extra 中包含的插件設定 return { -- 覆寫 \u0026#34;iamcco/markdown-preview.nvim\u0026#34; 的預設設定 { \u0026#34;iamcco/markdown-preview.nvim\u0026#34;, opts = { --當離開 Markdown 文件時，自動關閉預覽視窗 mkdp_auto_close = true, }, }, -- 如果需要，你可以在這裡加入對其他 markdown 相關插件的設定 -- 例如: -- { -- \u0026#34;headlines.nvim\u0026#34;, -- opts = { ... } -- } } ","permalink":"https://hahakevin45.github.io/posts/lazyvim/","summary":"LazyVim 安裝簡易教學","title":"LazyVim 安裝與設置"},{"content":"前言 在 Neovim 中進行 LaTeX 編輯時，常見的工作流程是搭配 Zathura 作為 PDF 閱讀器，因其支援順暢的同步跳轉功能。然而在 Windows 環境 下並無法使用 Zathura，因此需要尋找替代方案。\nSumatra PDF 是 Windows 上輕量且相容性佳的選擇，不僅啟動速度快，也能透過額外設定支援「從 PDF 點選內容 → 跳回對應 .tex 原始碼」的功能。不過，這個功能並非安裝後就能立即使用，仍需進行一些配置。\n本文將示範如何整合 Neovim 與 Sumatra，讓你能在 PDF 與 LaTeX 檔案之間順暢切換，同時避免每次跳轉時彈出惱人的命令提示視窗。\n安裝步驟 1/ 安裝 neovim-remote Neovim 本身只會啟動一個獨立的編輯器實例。如果我們單純從 Sumatra 下指令呼叫 Neovim，它只會開一個新的視窗，而不是把游標移到已經打開的檔案裡。\nneovim-remote（簡稱 nvr）就是用來解決這個問題的：\n它能夠把命令「傳送」給已經執行中的 Neovim 實例。\n這樣當你在 PDF 點擊某一行時，Neovim 不會重開，而是直接把游標移到對應的 LaTeX 原始碼位置。\npip install --user neovim-remote 2/ 創建 nvr-silent.vbs 如果直接用 nvr 呼叫 Neovim，Windows 會在跳轉時彈出一個 命令提示視窗 (cmd)，雖然功能正常，但非常干擾。\n為了解決這個問題，可以利用 VBScript (.vbs) 來「靜默」執行命令：\n.vbs 可以在背景執行程式，不會彈出黑色的 cmd 視窗。\n我們在腳本裡呼叫 nvr \u0026ndash;remote-silent，就能安靜地把跳轉命令送進 Neovim\n創建 nvr-silent.vbs，並寫入下面內容\nSet WshShell = CreateObject(\u0026#34;WScript.Shell\u0026#34;) WshShell.Run \u0026#34;\u0026#34;\u0026#34;\u0026#34; \u0026amp; \u0026#34;C:\\Users\\AICML\\AppData\\Roaming\\Python\\Python312\\Scripts\\nvr.exe\u0026#34; \u0026amp; \u0026#34;\u0026#34;\u0026#34; --remote-silent +\u0026#34; \u0026amp; WScript.Arguments(0) \u0026amp; \u0026#34; \u0026#34;\u0026#34;\u0026#34; \u0026amp; WScript.Arguments(1) \u0026amp; \u0026#34;\u0026#34;\u0026#34;\u0026#34;, 0, false 3/ Sumatra 設定 進Sumatra 左上角，設定、選項、設定反相收尋命令列，輸入\n\u0026#34;C:\\Windows\\System32\\wscript.exe\u0026#34; \u0026#34;C:\\Users\\AICML\\AppData\\Roaming\\Python\\Python312\\Scripts\\nvr-silent.vbs\u0026#34; %l \u0026#34;%f\u0026#34; ","permalink":"https://hahakevin45.github.io/posts/sumatra_pdf_%E8%BD%89%E8%B7%B3/","summary":"\u003ch2 id=\"前言\"\u003e前言\u003c/h2\u003e\n\u003cp\u003e在 Neovim 中進行 LaTeX 編輯時，常見的工作流程是搭配 Zathura 作為 PDF 閱讀器，因其支援順暢的同步跳轉功能。然而在 Windows 環境 下並無法使用 Zathura，因此需要尋找替代方案。\u003c/p\u003e\n\u003cp\u003eSumatra PDF 是 Windows 上輕量且相容性佳的選擇，不僅啟動速度快，也能透過額外設定支援「從 PDF 點選內容 → 跳回對應 .tex 原始碼」的功能。不過，這個功能並非安裝後就能立即使用，仍需進行一些配置。\u003c/p\u003e\n\u003cp\u003e本文將示範如何整合 Neovim 與 Sumatra，讓你能在 PDF 與 LaTeX 檔案之間順暢切換，同時避免每次跳轉時彈出惱人的命令提示視窗。\u003c/p\u003e\n\u003ch2 id=\"安裝步驟\"\u003e安裝步驟\u003c/h2\u003e\n\u003ch3 id=\"1-安裝-neovim-remote\"\u003e1/ 安裝 neovim-remote\u003c/h3\u003e\n\u003cp\u003eNeovim 本身只會啟動一個獨立的編輯器實例。如果我們單純從 Sumatra 下指令呼叫 Neovim，它只會開一個新的視窗，而不是把游標移到已經打開的檔案裡。\u003c/p\u003e\n\u003cp\u003eneovim-remote（簡稱 nvr）就是用來解決這個問題的：\u003c/p\u003e\n\u003cp\u003e它能夠把命令「傳送」給已經執行中的 Neovim 實例。\u003c/p\u003e\n\u003cp\u003e這樣當你在 PDF 點擊某一行時，Neovim 不會重開，而是直接把游標移到對應的 LaTeX 原始碼位置。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-Shell\" data-lang=\"Shell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003epip install --user neovim-remote\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"2-創建-nvr-silentvbs\"\u003e2/ 創建 nvr-silent.vbs\u003c/h3\u003e\n\u003cp\u003e如果直接用 nvr 呼叫 Neovim，Windows 會在跳轉時彈出一個 命令提示視窗 (cmd)，雖然功能正常，但非常干擾。\u003c/p\u003e\n\u003cp\u003e為了解決這個問題，可以利用 VBScript (.vbs) 來「靜默」執行命令：\u003c/p\u003e","title":"Sumtra PDF 轉跳設定"},{"content":"先備知識:\ngit GitHub Hugo 安裝 使用 scoop 下載 huge\nscoop install hugo 創建 hugo site\nhugo new site my-notes cd my-notes # 進入my-note 資料夾 PaperMod 主題安裝 這是我選用的主題，如果要用不同的主題也是可以\n從git 下載 PaperMod 主題\ngit init git submodule add https://github.com/adityatelange/hugo-PaperMod themes/PaperMod Huge 測試 新增測試用文章至my-notes/posts/，這是不能省略的一步。\nhugo new posts/first-post.md 開啟本地預覽，這會在網址 (http://localhost:1313/) 產生網站。\nhugo server -D GitHub 自動部署 接下來要部署到 GitHub Pages\n首先在 GitHub 建一個新 repo，名字就叫 USERNAME.github.io。\n接下來要在 repo 的設定當中注意\nSetting/Action/General/Workflow permissions 需要選 Read and write permissions Setting/Environments/github-pages Deployment branches and tags 應該要是空白的 Setting/Pages/Build and Deployment Source 需要選 Github Action 接下來找到 hugo.toml 進行設置，這是 hugo 主要進行設置的地方，我加入了檔案、收尋、標籤功能，還有最上面的介紹和社交軟體連結，這邊都能按照官網進行客製化。\nbaseURL = \u0026#34;https://USERNAME.github.io/\u0026#34; languageCode = \u0026#34;zh-tw\u0026#34; title = \u0026#34;your title\u0026#34; theme = \u0026#34;PaperMod\u0026#34; contentDir = \u0026#34;content\u0026#34; # 啟用搜尋功能所需的設定 [outputs] home = [\u0026#34;HTML\u0026#34;, \u0026#34;RSS\u0026#34;, \u0026#34;JSON\u0026#34;] # --- 主要參數設定 --- [params] defaultTheme = \u0026#34;auto\u0026#34; ShowReadingTime = true ShowPostNavLinks = true enableCodeCopy = true # --- 主頁歡迎詞 (官方推薦作法) --- # 這會啟用 Home-Info 模式，並在主頁頂部顯示標題和內容 [params.homeInfoParams] Title = \u0026#34;Home title\u0026#34; Content = \u0026#34;Home Content\u0026#34; # --- 主頁頂部的社交媒體圖示 --- [[params.socialIcons]] name = \u0026#34;github\u0026#34; url = \u0026#34;https://github.com/USERNAME\u0026#34; [[params.socialIcons]] name = \u0026#34;instagram\u0026#34; url = \u0026#34;https://www.instagram.com/USERNAME/\u0026#34; # --- 頂部導覽列 --- [[menu.main]] identifier = \u0026#34;archives\u0026#34; name = \u0026#34;檔案\u0026#34; url = \u0026#34;/archives/\u0026#34; weight = 10 [[menu.main]] identifier = \u0026#34;search\u0026#34; name = \u0026#34;搜尋\u0026#34; url = \u0026#34;/search/\u0026#34; weight = 20 [[menu.main]] identifier = \u0026#34;tags\u0026#34; name = \u0026#34;標籤\u0026#34; url = \u0026#34;/tags/\u0026#34; weight = 30 [markup.goldmark.renderer] unsafe = true 再來找到.github/Workflow/deplay.yml，如果沒有的話自己創建一個，並進行如下設置，這會讓github 的action 知道要如何自動部署網站。\nname: Deploy Hugo site to Pages on: push: branches: [\u0026#34;main\u0026#34;] # 或你主要寫作的分支 workflow_dispatch: # 允許手動觸發 permissions: contents: read pages: write id-token: write concurrency: group: \u0026#34;pages\u0026#34; cancel-in-progress: true jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: true # 如果你的 Hugo theme 是 submodule 要加這個 fetch-depth: 0 - name: Setup Hugo uses: peaceiris/actions-hugo@v3 with: hugo-version: \u0026#34;latest\u0026#34; extended: true - name: Build run: hugo --minify - name: Upload artifact uses: actions/upload-pages-artifact@v4 with: path: ./public deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 接下來為了避免不必要的檔案上傳，在 .gitignore 添加\n# Hugo build output /public /resources .hugo_build.lock # 系統檔案 .DS_Store Thumbs.db 最後進行推送\ngit add . git commit -m \u0026#34;Initialize Hugo site with PaperMod\u0026#34; git push -u origin main 應該就能在網址 https://USERNAME.github.io/ 看到網站了，如果沒有看到網站的話，建議到 Github 的 Action 介面看看運作的狀況。\n重新建立 Hugo 如果要在重新建立 Hugo 環境，因為 PaperMod 是 submodule，如果只用 git clone，預設不會抓子模組，所以我們需要加上指令\ngit submodule update --init --recursive 才能正常編譯。\n","permalink":"https://hahakevin45.github.io/posts/hugo_%E5%AE%89%E8%A3%9D/","summary":"\u003cp\u003e先備知識:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003egit\u003c/li\u003e\n\u003cli\u003eGitHub\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"hugo-安裝\"\u003eHugo 安裝\u003c/h2\u003e\n\u003cp\u003e使用 scoop 下載 huge\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003escoop install hugo\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e創建 hugo site\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ehugo new site my-notes\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ecd my-notes \u003cspan style=\"color:#75715e\"\u003e# 進入my-note 資料夾\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"papermod-主題安裝\"\u003ePaperMod 主題安裝\u003c/h2\u003e\n\u003cp\u003e這是我選用的主題，如果要用不同的主題也是可以\u003c/p\u003e\n\u003cp\u003e從git 下載 PaperMod 主題\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egit init\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egit submodule add https://github.com/adityatelange/hugo-PaperMod themes/PaperMod\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"huge-測試\"\u003eHuge 測試\u003c/h2\u003e\n\u003cp\u003e新增測試用文章至my-notes/posts/，這是不能省略的一步。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ehugo new posts/first-post.md\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e開啟本地預覽，這會在網址 (\u003ca href=\"http://localhost:1313/\"\u003ehttp://localhost:1313/\u003c/a\u003e) 產生網站。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ehugo server -D\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"github-自動部署\"\u003eGitHub 自動部署\u003c/h2\u003e\n\u003cp\u003e接下來要部署到 GitHub Pages\u003c/p\u003e\n\u003cp\u003e首先在 GitHub 建一個新 repo，名字就叫 USERNAME.github.io。\u003c/p\u003e\n\u003cp\u003e接下來要在 repo 的設定當中注意\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSetting/Action/General/Workflow permissions\n\u003cul\u003e\n\u003cli\u003e需要選 Read and write permissions\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSetting/Environments/github-pages\n\u003cul\u003e\n\u003cli\u003eDeployment branches and tags 應該要是空白的\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSetting/Pages/Build and Deployment\n\u003cul\u003e\n\u003cli\u003eSource 需要選 Github Action\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e接下來找到 hugo.toml 進行設置，這是 hugo 主要進行設置的地方，我加入了檔案、收尋、標籤功能，還有最上面的介紹和社交軟體連結，這邊都能按照官網進行客製化。\u003c/p\u003e","title":"Hugo + GitHub Pages + 自動部署"},{"content":"我真的是受夠永無止境的研究筆記軟體了\n前言 過去十年間，筆記軟體不斷更迭，我使用過 Evernote, Obsidian, Notion, Heptabase 等多個筆記軟體。\n說到底我並不是工具狂熱者，也不是靠開箱新的筆記軟體為生的創作者，我只是對自己使用的工具有要求而已。\n為了避免重複研究新軟體的勞累過程，我決定開啟 2061 筆記漫遊計畫，期望打造一個可以持續進化，能一路用到 2061 年的筆記系統。\n原則 我認為一個長久維持的筆記系統應該要符合下面條件:\n開源與免費 文字檔案格式 安裝/設定簡單 功能可擴展 1. 開源與免費 非開源的軟體往往意味著背後有一家需要營利的公司，你無法掌握軟體會不會漲價或是閹割免費版的功能，更有公司倒閉的風險。\n且對於付費軟體，長時間累積下來更是一筆龐大的支出，你有可能在人生的某個階段收入銳減無法負擔，而被迫停止使用筆記軟體。\n從長久維持的角度來說，開源軟體會是更好的選擇\n誠然專案的長期維護無法被保證，但你最少能確保目前系統所需的程式碼都能被你下載存儲。\n2. 文字檔案格式 以文字格式存儲的筆記可以確保下面幾個優勢:\n轉換方便 可以輕易的被導入任何軟體，降低替換筆記軟體的成本 任何地方紀錄下的文字，都可以簡易的導入筆記軟體 保存/同步簡單 擁有最小的存儲空間 多樣的備份方法 可以使用 git 做版本記錄 以 txt 檔為格式儲存的筆記軟體並不常見，但以 md 檔案或是類似語法存儲的軟體越來越多，這類的文字格式依然保有上述的優點。\n3. 安裝/設定簡單 這裡的安裝和設定簡單指的是\n建設筆記環境時，應該要盡量的簡單和快速。\n有時候我們會需要在新的電腦上重新建立環境，這時如果需要安裝許多插件或進行複雜設定，很可能因時間過久而忘記怎麼作法，或是太麻煩而懶得用，最終導致使用中斷。\n這點和前面第一點原則可以說是衝突的，相較於大部分的營利軟體，開源軟體的安裝往往更繁瑣和困難，在保持第一點原則的情況下盡量簡化安裝是更現實可行的作法。\n4. 功能可擴展 隨著流行的筆記方法不同，或是生活型態上的改變，又或者單純的被新功能吸引。\n我們對於筆記軟體的需求會隨之改變\n如果能在需要的時候透過設定、插件 或模組，讓系統隨需求演進可以大大降低替換軟體的可能性。\n結尾 一個能長久運行的筆記系統未必是完美的，但工具終究只是工具，但把時間都花在研究和適應新的軟體上就本末倒置了。\n筆記系統最重要的還是筆記\n若 36 年後我的筆記依然能被打開、檢索、延續，這才是真正值得的『筆記漫遊』\n在下一篇文章中，我會根據這些原則，實際選擇筆記軟體，並展示安裝與設定流程。\n","permalink":"https://hahakevin45.github.io/posts/2061_%E7%AD%86%E8%A8%98%E6%BC%AB%E9%81%8A/","summary":"我正在尋找一個能陪我 36 年的筆記系統","title":"長期筆記系統選擇指南：我的 2061 筆記計畫"}]