ฉันไม่มีเวลาดูแลโครงการนี้อีกต่อไป หากคุณสนใจที่จะรับช่วงต่อ โปรดติดต่อฉันในประเด็น GitHub
คลายการอุดตันทางจิตในการบันทึกข้อมูล ขูดหินปูนของแบบแผนที่ทำให้ไม่สามารถดึงกลับคืนมาได้
--- หน้าแรกของ Notational Velocity
Notational Velocity เป็นแอปจดบันทึกที่การค้นหาบันทึกและการสร้างบันทึกนั้นเป็นการดำเนินการเดียวกัน
คุณค้นหาคำค้นหา และหากไม่มีบันทึกที่ตรงกัน ระบบจะสร้างบันทึกใหม่โดยมีคำค้นหานั้นเป็นชื่อเรื่อง
ดู GIF ต่อไปนี้หรือดู asciinema นี้:
" with vim-plug
Plug 'https://github.com/alok/notational-fzf-vim'
อ่าน CHANGELOG.md
Vim เหมาะสำหรับการเขียน แต่มันไม่ได้ปรับให้เหมาะสมสำหรับการจดบันทึก โดยที่คุณมักจะสร้างบันทึกเล็กๆ น้อยๆ จำนวนมาก และมักจะเปลี่ยนบันทึกขนาดใหญ่ในไดเร็กทอรีที่แยกจากไดเร็กทอรีที่คุณกำลังทำงานอยู่ ฉันใช้ nvALT เป็นเวลาหลายปีและเมื่อใดก็ตามที่ฉันต้องแก้ไขอย่างจริงจัง ฉันจะเปิดไฟล์ในกลุ่ม
แต่มีบางอย่างเกี่ยวกับ 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 ติดตั้งปลั๊กอิน Vim ที่มาพร้อมกับ fzf
ซึ่งสามารถทำได้หากคุณใช้ 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 ตัวขึ้นไป ซึ่งถูกตีความว่าเป็น regexes
พิมพ์ :NV
หรือผูกเข้ากับการแมปเพื่อแสดงเมนูการค้นหาที่ไม่ชัดเจน พิมพ์คำค้นหาของคุณและมันจะค้นหาคลุมเครือ การเพิ่มเครื่องหมายอัศเจรีย์ให้กับคำสั่ง ( :NV!
) จะเป็นการเรียกใช้แบบเต็มหน้าจอ
คุณสามารถพิมพ์ :NV
เพื่อดูผลลัพธ์ทั้งหมด จากนั้นกรองด้วย FZF คุณสามารถพิมพ์ :NV python
เพื่อจำกัดการค้นหาครั้งแรกของคุณให้อยู่ในบรรทัดที่มีวลี python
:NV [0-9] [0-9]
จะค้นหาตัวเลขทั้งหมดที่คั่นด้วยช่องว่าง คุณรู้ไหมว่า regexes
มันไม่ได้ค้นหาแบบคลุมเครือเพราะไม่มีประโยชน์สำหรับร้อยแก้ว มองหาคำที่สมบูรณ์แต่ไม่จำเป็นต้องอยู่ติดกันเพียงอยู่ในบรรทัดเดียวกัน คุณสามารถใช้ปุ่มลูกศรหรือ 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
เพื่อให้คุณสามารถดู/อัปเดตเอกสารประกอบของโครงการปัจจุบันของคุณ และเก็บบันทึกส่วนตัวที่เป็นปัจจุบันอยู่เสมอ หากต้องการอ้างอิง srod
เหตุผลที่อยู่เบื้องหลังการขาดการสนับสนุนฐานข้อมูลหลายฐานข้อมูลในปัจจุบันของ Notational Velocity คือการจัดเก็บบันทึกย่อในฐานข้อมูลแยกกันจะ 1) ต้องมีการตัดสินใจประเภทเดียวกันกับที่ผู้จัดงานตามหมวดหมู่ / โฟลเดอร์บังคับใช้กับผู้ใช้ของพวกเขา (เช่น "บันทึกนี้จะใช้งานได้หรือไม่ -เฉพาะหรือเฉพาะบ้าน?") และ 2) เอาชนะจุดของการค้นหาแบบทันทีโดยกำหนดให้ผู้ใช้ค้นหาซ้ำในแต่ละครั้งสำหรับทุกฐานข้อมูลที่ใช้งานอยู่
ด้วยการจัดเตรียมไดเร็กทอรีเริ่มต้น เราจะเสนอการแก้ไข (หนึ่ง) รายการสำหรับปัญหาแรก
ด้วยการค้นหาไดเร็กทอรีทั้งชุดพร้อมกัน เราจะจัดการกับไดเร็กทอรีที่สอง
นอกจากนี้ยังจัดการปัญหาของ Notational Velocity ด้วยหลายฐานข้อมูล UNIX ไม่อนุญาตให้ใช้ชื่อไฟล์ซ้ำในโฟลเดอร์เดียวกัน แต่บ่อยครั้งที่โฟลเดอร์หลักจะให้บริบท เช่น ใน workout/TODO.md
และ coding/TODO.md
ปลั๊กอินนี้พยายามสรุปการดำเนินการจดบันทึกเหนือบันทึก ทั้งหมด ที่คุณจด โดยให้ความสำคัญกับไดเร็กทอรีบันทึกหลักเพียงไดเร็กทอรีเดียว
ยินดี เสมอครับ . หากคุณมีความคิดหรือปัญหาใด ๆ โปรดแจ้งให้เราทราบและเราจะพยายามแก้ไขปัญหาเหล่านั้น ไม่ใช่ทั้งหมดที่จะถูกนำมาใช้ แต่ถ้าสิ่งเหล่านี้เข้ากับปรัชญาของปลั๊กอินนี้หรือดูเหมือนมีประโยชน์จริงๆ ฉันจะทำให้ดีที่สุด
อาปาเช่ 2