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 是一个模糊查找神奇,比如你只记得一个单词或是几个单词拼接而成,再或者你只记得部分单词,那么发挥它的功能时刻到了。
![](
https://cdn.jsdelivr.net/gh/innei/img-bed@master/2020-03-06
15.49.38.gif)
编辑记录 (Undo Tree)
他可以记录你一路以来的对文件的所有操作,并且可以回溯。
![](
https://cdn.jsdelivr.net/gh/innei/img-bed@master/2020-03-06
15.53.58.gif)
快速切换 (Switch.vim)
如果你有一个布尔值为 false
,而你想要改成 true
。
你有一个箭头函数,你想改成 function
style?你需要编辑,还要剪切和粘贴?大可不必。
![](
https://cdn.jsdelivr.net/gh/innei/img-bed@master/2020-03-06
15.58.25.gif)
快速增改括号类型 (vim-surround)
快速跳转 (vim-easy-motion)
etc.
我的配置
https://raw.githubusercontent.com/Innei/nvim/master/init.vim
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击