NeoVim,神一样的编辑器
开始之前想必大家都有所耳闻 Vim,玩过服务器的应该都用过。还有不少人被 Vim 的复杂键位劝退,转而使用 vsc 之类简易的 GUI Editor。然而我也是其中之一,曾经多次想过学习 Vim,屡次被劝退。终于这次我在终于学会了使用它。
这篇文章主要不是教学,而是介绍 NeoVim 的强大。
主角
这次的主角是 NeoVim,它是 Vim 的升级版,加入了很多 Vim 还没有实现的功能,所以他并不稳定。写这篇文章时,它的版本为 NVIM v0.4.3
。
NeoVim 依然是一个字符终端下的文本编辑器,所以他先天具有优秀的编辑能力,他可以做到在无显示器的环境下进行编辑。
进入 NeoVim,你会发现它和 Vim 长的一模一样,键位和基本的功能几乎一致。
那。为什么要使用 NVim,因为 NVim 提供了强大的 API,方便开发者使用多种编程语言进行插件开发,而不是 Only VimScript。
基本
Vim 有着大量的键位映射,并不可能每个人都觉得它是有用的,或者它是合理的,所以我对原本的 Keybindings 进行了重新的映射。
Vim 下有以下几个模式:
- 普通模式 (Normal Mode)
- 插入模式 (Insert Mode)
- 可视模式 (Visual Mode)
- 选择模式 (Select Mode)
- 命令模式 (Command Mode)
还有一些模式不太常用,暂且不列举。
我对某些键位重新映射以符合我的习惯,比如 ;
映射到 :
, S
映射到 :w
。对于这些对应的功能是什么,在此不多赘述,因为 Vim 的命令实在太多。
对于 keymap,Vim 提供了下面几种常用的重新映射。(nore
代表不递归映射)
noremap <origin> <target>
(适用与可视模式,普通模式)nnoremap
(仅仅是普通模式)inoremap
(仅仅是插入模式)xnoremap
(仅仅是可视模式)vnoremap
(可视模式和选择模式)snoremap
(选择模式)map
(仅仅是普通模式,递归映射)imap
etc.
我定义了以下映射(将位于文章底部),在定义原本已有的键位时一般使用非递归的映射。
亮点
好像一不小心写歪了,回到正题。为什么说 NeoVim 是神一样的编辑器。
- 编辑器原本支持很多操作,比如宏录制,多行操作,etc.
- 插件多,有强大的社区支持。
这次主要介绍一些插件,虽然原生编辑器已经过于强大,使用文档也已经上万行。所以暂且不说。其实我不会
PS:如果你找到此功能在 vscode 中也存在或由插件提供请告诉我。谢谢
全局模糊查找 (Fuzzy Finder)
FZF 是一个模糊查找神奇,比如你只记得一个单词或是几个单词拼接而成,再或者你只记得部分单词,那么发挥它的功能时刻到了。
编辑记录 (Undo Tree)
他可以记录你一路以来的对文件的所有操作,并且可以回溯。
快速切换 (Switch.vim)
如果你有一个布尔值为 false
,而你想要改成 true
。
你有一个箭头函数,你想改成 function
style?你需要编辑,还要剪切和粘贴?大可不必。
快速增改括号类型 (vim-surround)
快速跳转 (vim-easy-motion)
etc.
我的配置
https://raw.githubusercontent.com/Innei/nvim/master/init.vim