Neovim 是著名文字編輯器 Vim 的分支,專注於可擴展性和可用性。它不是重寫,而是 Vim 的延續和擴展。存在許多複製和衍生版本,有些非常聰明,但沒有一個是 Vim。Neovim 是為想要 Vim 優點以及更多功能的使用者而建構的。請參閱 :help vim-differences 查看差異列表。
如果您有興趣為 Neovim 做出貢獻,請閱讀 CONTRIBUTING.md 以開始。我們有一個很棒的測試套件和自動化 CI,因此您可以直接加入並嘗試。不要害怕開啟 PR 來取得意見或只是利用基礎架構!
要與團隊聯繫,請加入 gitter 頻道(也可以透過 IRC 訪問),或訪問 Neovim subreddit,許多開發人員都會閱讀。參與對話也是一種貢獻!
新貢獻者致謝:@ckelsel 負責移植了大量的 vim 修補程式,@lonerover 也是。謝謝你們!
老貢獻者致謝:@oni-link 這個名字在 commit 日誌中不常看到,但他一直以來在審查變更和改進複雜的 PR 方面非常有幫助。謝謝你!
上一份 電子報 有點過時了,所以我們想讓您了解 Neovim 世界的最新情況。
自那時以來,Neovim 已發布了 3 個 (!) 版本,所以首先讓我們回顧一下這些版本
此版本帶來了許多修復和改進。我們將在下面更仔細地研究其中一些,但也請務必查看 發布頁面 以獲取所有詳細資訊。
:terminal
模式,請參閱下方!curl.exe
。:terminal
已進行各種改進 (@justinmk, #6185)findfile()
、:find
和 gf
現在可以在 :terminal
緩衝區中使用 (@tweekmonster, #6009):term
搭配使用 (@friedsock, #4504)Reading from stdin
已移除 (@msva, #6298)guicursor
現在可以在 TUI 中使用 (@teto, #6423)Whitespace
用於與空格相關的 listchars
(@zhou13, #6367)DirChanged
(@mhinz, #5928)cpoptions
:使用 _
標誌切換 cw
行為 (@raichoo, @chrisbra, #6235)CTRL-R
現在會省略尾隨的 ^M
(@justinmk, #6137):edit
沒有轉義空格的檔名 (@Kurt-Bonatz, #6119)writefile
現在會遵守 fsync
選項 (@ZyX-I, #6427)eval.c
也經過重構,並且改進了錯誤訊息 (@ZyX-I, #5119)id
函數,並且 printf(%p)
終於有用了 (@ZyX-I, #6095)g:loaded_*
,則所有提供程式都將停用 (@justinmk, commit)setpos
現在可以在其他緩衝區中設定小寫標記 (@hardenedapple, #5753)v:exiting
以查看 Neovim 是否正在退出 (@mhinz, #5651)接下來讓我們看看 0.2.1 中發生了什麼。和以前一樣,請查看 發行說明 以瞭解詳細資訊。
:Tutor
進行了進一步的改進 (@fmoralesc, #7028)inccommand
現在可以使用前導修飾符,例如 keeppattern
(@jamessan, #6967):cquit
現在可以接受可選的錯誤代碼作為參數 (@joshleeb, #7336):checkhealth
現在是內建功能,並且會驗證您的 $VIMRUNTIME
(@justinmk, #7399)cursorcolumn
和 colorcolumn
現在會遵守語法高亮顯示 (@zhou13, @justinmk, #7364)get_keymap
以程式方式取得有關映射的資訊 (@tjdevries, #6236)nvim_get_hl_by_name/by_id
來檢索高亮顯示 (@teto, #7082)bufhl
現在可以用來建立新的高亮群組 (@bfredl, #7414)menu_get
取得選單 (@teto, #6322)menu_get
可以漂亮地列印特殊字元,使其有可能將結果送回,例如 nvim_input
(@teto, @KillTheMule, #7340)sockconnect
連接到 socket (@bfredl, #6594)serverstart
現在使用 uv_getaddrinfo()
,帶來 IPv6 支援 (@mhinz, #6680):execute
呼叫中定義多個函數 (@ZyX-I, #6914)這是一個快速發布的版本,主要包含錯誤修復。詳情請參閱發行說明。 也有一些新功能加入。
curdir
已新增為 viewoption (@EricR86, #7447):checkhealth
現在也會驗證 runtimepath (@justinmk, #7526)scrollback
現在預設為 10000 (@justinmk, #7556)想知道下一個版本會有哪些功能嗎? 這有一個列表讓您先睹為快
CmdlineEnter
和 CmdlineLeave
自動指令 (@bfredl, #7422)如需了解 Neovim 的計劃功能、目標和想法的概述,請前往路線圖。一些值得注意的即將推出的 PR 有:
提醒:如果您從最新的 master 版本建置 Neovim,請務必查看追蹤 HEAD,了解任何變更。
相關專案的 wiki 頁面已經新增了一些內容,請查看 這裡 完整的變更。
API 客戶端是 Neovim 架構的核心,並且可以顯著改善開發人員體驗。使用您想要的任何語言編寫插件!自從上次發佈新聞稿以來,我們看到增加了另一個 C++ 客戶端、一個用於 Elixir 的客戶端以及一個 Racket 客戶端。 node 客戶端進行了全面修改,並有了新的維護者。感謝 @billyvg 接管!雖然不是全新的,但特別要讚揚一下 ruby 客戶端的良好維護。謝謝 @alexgenco!
如果您碰巧喜歡尚未列出的語言,一個好的起點是文件,並且務必在gitter 頻道上討論它。
在 GUI 方面發生了太多活動,無法列出所有新的客戶端,因此我們只需看看一些比較突出的客戶端即可。 VSCode 正在使用 Neovim 來正確整合 ex-mode 命令,而 Sublime Text 3 獲得了完整的 Neovim 整合。後者也使用了另一個很棒的 Neovim 特定功能,即外部化的彈出選單,而它們僅使用了 50 行程式碼。最後但並非最不重要的是,eovim 是 Neovim 的一個 enlightenment 客戶端。
一些學生研究了 Neovim 的架構,並發表了一篇關於他們的發現的「分析論文」。如果您對全局感興趣,請務必查看。
vimcasts 的 Drew Neil 已經開始錄製關於 Neovim 的教學影片,並開始撰寫他廣受好評的著作 Practical Vim 的後續作品,名為 Modern Vim。 該書的大部分內容都將適用於 Vim 8 和 Neovim 用戶,但該書約 1/3 的內容將涵蓋 Neovim 特有的功能。
Neovim 的基石之一是將 I/O 移植到 libuv。 因此,您會很高興聽到 libuv 已著手支援更多平台。 Neovim,很快就會在您附近的平台上推出!
Neovim 透過非常簡單的 Lua 語言提供輕鬆的測試。 您會問,為什麼其他人不做呢? 結果發現,他們確實有做,或者至少 neomutt 專案正在為此做準備。 很高興看到 Neovim 的想法被採用。
自上次新聞稿以來變更的程式碼行數
git log --since="2016-11-01" --numstat --pretty=tformat: --numstat|gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 255393 removed lines: 221106 total lines: 34287
合併的提交
git log --since="2016-11-01"|wc -l
3110
不同的提交作者
git shortlog -e -s -n --since="2016-11-01"|wc -l
146
文件變更
git log --since="2016-11-01" --numstat --pretty=tformat: --numstat runtime/doc|gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 8579 removed lines: 6577 total lines: 2002
感謝貢獻者、贊助商、錯誤回報者、支持者。 感謝 @justinmk 提供了這個很棒的專案,並感謝 @brammool 的基礎性工作。
vim 團隊的 @brammool 和 @chrisbra 在我們的 issue 追蹤器上留下了一些評論,很高興能一起工作!
Neovim 是一個基於 Vim 的文字編輯器,專為可擴展性和可用性而設計,以鼓勵新的應用程式和貢獻。
訪問 #neovim:matrix.org 或 irc.libera.chat 上的 #neovim,與團隊聊天。