我沒有時間再維護這個專案了。如果您有興趣接手,請在 GitHub issues 中與我聯繫。
放鬆記錄訊息的心理障礙。刮掉阻礙其恢復的習俗牙垢。
--- 符號速度首頁
Notational Velocity 是一款筆記應用程序,其中搜尋筆記和建立筆記是相同的操作。
您搜尋一個查詢,如果沒有註釋匹配,它會建立一個以該查詢作為標題的新註釋。
請參閱以下 GIF 或觀看此 asciinema:
" with vim-plug
Plug 'https://github.com/alok/notational-fzf-vim'
閱讀CHANGELOG.md
。
Vim 非常適合寫作。但它並沒有針對筆記進行優化,您經常會創建大量小筆記,並經常在與您正在工作的目錄不同的目錄中更改較大的筆記。都會使用nvALT ,我會在 Vim 中開啟該檔案。
但有關 nvALT 的一些事情困擾著我。
它不適用於大型文字文件,打開它們會導致它嚴重滯後。
我無法使用拆分
我的大部分工作都是在 Vim 中完成的,為什麼還要打開另一個窗口,因為它的編輯功能較差,浪費了寶貴的螢幕空間。抱歉 Brett,但 nvALT 無法匹配 Vim 的編輯速度。
我也不同意符號速度哲學的某些部分。
像 vim-pad 這樣的插件也不適合我,因為:
README.md
。當 Junegunn 創建fzf
時,我意識到我可以在 Vim 中擁有這一切。
該插件允許您定義要搜尋的目錄列表。清單中的第一個目錄用作主目錄,除非您設定g:nv_main_directory
。如果您在輸入一些單字後按control-x
,它將使用這些單字作為檔案名稱在主目錄中建立一個檔案。然後它將以垂直分割方式開啟該檔案。如果該文件已經存在,請不用擔心,它不會覆蓋它。該插件在任何時候都不會修改您的檔案。它只能讀取、開啟和創建它們。
您可以定義相對鏈接,因此添加./docs
和./notes
就可以了。請記住,它是相對於您目前的工作目錄的(如 Vim 所解釋的)。
rg
是快速搜尋所必需的。
fzf
。
fzf
Vim 插件。安裝fzf
自備的 Vim 插件,如果你使用 vim-plug 的話可以這樣做。
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Python 3.5 或更高版本,用於預覽視窗和檔案路徑縮短。
您必須定義要搜尋的目錄或檔案清單(全部必須是字串)。此設定名為g:nv_search_paths
。
請記住,這些可以是相對連結。
" example
let g:nv_search_paths = ['~/wiki', '~/writing', '~/code', 'docs.md' , './notes.md']
該插件將搜尋和文件創建結合在一起。它定義了一個命令:NV
,它可以接受 0 個或多個參數,這些參數被解釋為正規表示式。
輸入:NV
或將其綁定到映射以顯示模糊搜尋選單。輸入您的搜尋字詞,它會模糊搜尋它們。在命令中添加感嘆號( :NV!
),將全螢幕運行它。
您可以輸入:NV
查看所有結果,然後使用 FZF 過濾它們。您可以輸入:NV python
將初始搜尋限制為包含短語python
行。 :NV [0-9] [0-9]
將會找出所有由空格分隔的數字。你知道,正規表示式。
它不會以完全模糊的方式進行搜索,因為這對於散文來說不太有用。它會查找完整的單詞,但它們不必彼此相鄰,只需在同一行即可。您可以使用箭頭鍵或cp
和cn
滾動搜尋結果,然後按以下鍵之一開啟檔案:
請注意,以下選項可以自訂。
cx
:使用搜尋字串作為檔案名稱並以垂直分割開啟。cv
:垂直分割打開cs
:水平分割打開ct
:在新分頁中開啟cy
: 提取選定的檔名<Enter>
: 開啟目前緩衝區中反白顯示的搜尋結果所選檔案周圍的線條將在預覽視窗中可見。
這個外掛只定義了一個指令:NV
,如果你想要它的映射,你可以自己定義它。預設情況下故意不這樣做。您應該使用最適合您的映射。
例如,
nnoremap <silent> <c-s> :NV<CR>
您可以透過設定g:nv_use_short_pathnames = 0
顯示完整路徑。
您可以按alt-p
來切換顯示預覽視窗。這在較小的螢幕上很方便。如果您不想預設顯示預覽,請設定g:nv_show_preview = 0
。
" String. Set to '' (the empty string) if you don't want an extension appended by default.
" Don't forget the dot, unless you don't want one.
let g:nv_default_extension = '.md'
" String. Default is first directory found in `g:nv_search_paths`. Error thrown
"if no directory found and g:nv_main_directory is not specified
"let g:nv_main_directory = g:nv_main_directory or (first directory in g:nv_search_paths)
" Dictionary with string keys and values. Must be in the form 'ctrl-KEY':
" 'command' or 'alt-KEY' : 'command'. See examples below.
let g:nv_keymap = {
'ctrl-s': 'split ',
'ctrl-v': 'vertical split ',
'ctrl-t': 'tabedit ',
})
" String. Must be in the form 'ctrl-KEY' or 'alt-KEY'
let g:nv_create_note_key = 'ctrl-x'
" String. Controls how new note window is created.
let g:nv_create_note_window = 'vertical split'
" Boolean. Show preview. Set by default. Pressing Alt-p in FZF will toggle this for the current search.
let g:nv_show_preview = 1
" Boolean. Respect .*ignore files in or above nv_search_paths. Set by default.
let g:nv_use_ignore_files = 1
" Boolean. Include hidden files and folders in search. Disabled by default.
let g:nv_include_hidden = 0
" Boolean. Wrap text in preview window.
let g:nv_wrap_preview_text = 1
" String. Width of window as a percentage of screen's width.
let g:nv_window_width = '40%'
" String. Determines where the window is. Valid options are: 'right', 'left', 'up', 'down'.
let g:nv_window_direction = 'down'
" String. Command to open the window (e.g. `vertical` `aboveleft` `30new` `call my_function()`).
let g:nv_window_command = 'call my_function()'
" Float. Width of preview window as a percentage of screen's width. 50% by default.
let g:nv_preview_width = 50
" String. Determines where the preview window is. Valid options are: 'right', 'left', 'up', 'down'.
let g:nv_preview_direction = 'right'
" String. Yanks the selected filenames to the default register.
let g:nv_yank_key = 'ctrl-y'
" String. Separator used between yanked filenames.
let g:nv_yank_separator = "n"
" Boolean. If set, will truncate each path element to a single character. If
" you have colons in your pathname, this will fail. Set by default.
let g:nv_use_short_pathnames = 1
"List of Strings. Shell glob patterns. Ignore all filenames that match any of
" the patterns.
let g:nv_ignore_pattern = ['summarize-*', 'misc*']
" List of Strings. Key mappings like above in case you want to define your own
" handler function. Most users won't want to set this to anything.
let g:nv_expect_keys = []
如果bat
在 PATH 中,則會使用它。如果已設置,它將使用$BAT_THEME
。
您也可以定義自己的處理函數,以防您不喜歡此插件處理輸入的方式,但喜歡它包裝其他所有內容的方式。它必須被稱為NV_note_handler
。
~/notes
和~/wiki
這樣您的筆記只需一鍵綁定即可。./notes
、 ./doc
等相關連結新增至g:nv_search_paths
中,以便您隨時可以檢視/更新目前專案的文件並保持最新的個人筆記。 引用斯勞德的話,
Notational Velocity 目前缺乏多資料庫支援的原因是,將筆記儲存在單獨的資料庫中將 1) 需要基於類別/資料夾的組織者強加給使用者的相同類型的決策(例如,「此筆記是否有效」) -特定的還是特定於家庭的?
透過提供預設目錄,我們為第一個問題提供了(一個)修復。
透過同時搜尋整個目錄集,我們處理第二個。
它還處理多個資料庫的符號速度問題。 UNIX 不允許在同一資料夾中出現重複的檔案名,但父資料夾通常會提供上下文,例如workout/TODO.md
和coding/TODO.md
中。
該外掛程式嘗試將筆記的操作抽象化到您記下的所有筆記中,並優先考慮一個主筆記目錄。
總是受到歡迎。如果您有任何想法或問題,請告訴我,我會盡力解決。並非所有內容都會被實現,但如果它們符合這個插件的理念或看起來確實有用,我會盡力而為。
阿帕契2