더 이상 이 프로젝트를 유지할 시간이 없습니다. 인수에 관심이 있으시면 GitHub 문제로 저에게 연락해주세요.
정보 기록에 대한 정신적 장애물을 완화하십시오. 검색을 방해하는 관습의 치석을 긁어내십시오.
--- 표기법 속도 홈페이지
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의 편집 속도와 일치하지 않습니다.
나는 또한 Notational Velocity의 철학 중 일부에 동의하지 않습니다.
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']
이 플러그인은 검색과 파일 생성을 통합합니다. 이는 정규식으로 해석되는 0개 이상의 인수를 사용할 수 있는 단일 명령 :NV
정의합니다.
: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
에 추가하면 현재 프로젝트의 문서를 항상 확인/업데이트하고 개인 메모를 최신 상태로 유지할 수 있습니다. scrod를 인용하자면,
Notational Velocity가 현재 다중 데이터베이스를 지원하지 않는 이유는 노트를 별도의 데이터베이스에 저장하면 1) 카테고리/폴더 기반 구성자가 사용자에게 강요하는 것과 동일한 종류의 결정이 필요하기 때문입니다(예: "이 노트가 작동할 것인가? -특정 또는 가정별?") 및 2) 궁극적으로 사용자가 사용 중인 모든 데이터베이스에 대해 각 검색을 반복하도록 요구하여 즉각적인 검색의 요점을 무효화합니다.
기본 디렉토리를 제공함으로써 첫 번째 문제에 대한 수정 사항을 하나 제공합니다.
전체 디렉토리 세트를 동시에 검색하여 두 번째 디렉토리를 처리합니다.
또한 여러 데이터베이스에서 Notational Velocity의 문제를 처리합니다. UNIX는 동일한 폴더에 반복되는 파일 이름을 허용하지 않지만, 종종 상위 폴더가 workout/TODO.md
및 coding/TODO.md
와 같은 컨텍스트를 제공합니다.
이 플러그인은 하나의 기본 메모 디렉토리에 우선순위를 두고 사용자가 작성한 모든 메모에 대해 메모 작성 작업을 추상화하려고 시도합니다.
언제나 환영합니다. 아이디어나 문제가 있는 경우 알려주시면 해결하도록 노력하겠습니다. 모두 구현되지는 않겠지만, 이 플러그인의 철학에 부합하거나 정말 유용해 보인다면 최선을 다하겠습니다.
아파치 2