我想在Vim中實現一個鬆散版本的Niklas Luhmann's Zettelkasten 。他的方法的核心是註釋片段,它繼續當前的 筆記或布拉赫從它,引入一個稍微不同的話題或 的概念。在筆記名稱中,字母表示分支和數字 表示延續。像這樣:Vim:爲當前文件名添加自動字母和/或數字索引?
note100
note101
note101a # branches off from note100 (related topic)
note101b # also branches off from note100 (related topic)
note101b01 # continues note101b (same topic)
note101b02 # also continues note101b (same topic)
note101c
note102
爲了實現這一點的Vim的,我需要的是無論是作爲一個「繼續」或 一個在當前緩衝區的說明「分支」自動列舉新文件 名。作爲一個非編碼器製造Vimscript中的第一個「真正」的步驟,這是我在哪裏有分支提示功能:(!)
function! ZettelkastenNewBranchingNote()
let b:current_note_name = expand('%:t:r')
let b:new_branching_note = call(BranchingFunctionThatReturnsNewNoteName)
silent execute 'edit' b:new_branching_note
echomsg 'New branching note ' b:new_branching_note 'created.'
endfunction
的BranchingFunctionThatReturnsNewNoteName()
應該採取 b:current_note_name
並具有自動字母擴展它 指數(按字母順序向上計數)。我怎麼能做到這一點?
另外,對於我的新的連續註釋功能:我怎麼能從最後的數字部分數字 向上計數當前文件名? (例如100a01 > 100a02
)
感謝您的任何建議!
(有點與此相關,here Nexus的插件建議,但我寧願讓我的腳本 自足。)
非常感謝您,也爲解釋;這些對我的學習過程非常有幫助。 (我特別喜歡nr2char內建 - 非常好!)這個解決方案確實創建了這個文件,但我也得到了「E121:Undefined variable:b:new_branching_note」。爲什麼? – marttt
該變量尚未定義(在該緩衝區中)。您可能需要在某個地方進行檢查:「如果!存在('b:new_branching_note')...' –
謝謝!用'let b:current_note_name = exists('b:current_note_name')解決的問題? b:current_note_name:expand('%:t:r')'。我也必須修改一些變量類型,從'b:'到's:'。 – marttt