Skip to content

rydesun/neovim-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

试图找到一种简单的 nvim 配置的写法。

最小干扰:在新机器上立刻可用

即使没有外部插件,配置也应该处于可用的状态 (除了少数按键不可用)。 正常流程不会有安装行为。

仅仅提供一条简短的报错信息,表明缺少插件管理器 lazy.nvim。 没有 lazy.nvim 就不会安装插件。 安装任务交给了 bootstrap.lua 这个 仅用于首次安装的文件,只有运行该文件才会安装 lazy.nvim。

安装

让 nvim 执行安装脚本 bootstrap.lua, 即可安装插件管理器 lazy.nvim 和所有插件。 所以手动执行该命令

VIM_DEV=1 nvim --headless -u bootstrap.lua +qa

插件应该可以正常工作了。此外,没有任何语言是必须提供支持的, 所以再自行安装 tree-sitter 的 parser 以及从 mason 安装 LSP。

按需安装插件:区分本地开发环境和简单环境。

环境变量 VIM_DEV=1 是可选的,代表 nvim 在开发代码的环境中, 将会额外安装 lua/plugins/dev.lua 文件内包含的开发用插件。在服务器等环境可以去掉该环境变量, nvim 还是熟悉的 nvim,除了不需要进行代码开发以外。

实际上,指定 VIM_DEV=1 时,bootstrap.lua 只是在插件目录 ~/.local/share/nvim/lazy/ 下生成一个文件 .install_dev, 这样在配置文件中通过判断该文件是否存在, 就可以知道是否需要安装开发用插件。

支持 Pager

参考:kovidgoyal/kitty#719 (comment)

把 nvim 当成 pager 来使用时,在配置里识别变量 vim.g.pager, 相应地改变选项,并且禁用一些用不上的插件来提升启动速度

ls ~ | nvim -R --cmd 'let pager=1'

可以处理 ANSI 转义码,显示颜色

ls --color=always ~ | sh -c "exec nvim 63<&0 </dev/null --cmd 'let termcat=63'"

因为可以支持 ANSI 转义码,所以可以作为 kitty 的 scrollback pager 来使用。

(方法一)在配置文件 kitty.conf 中添加一行

scrollback_pager sh -c "exec nvim 63<&0 </dev/null --cmd 'let termcat=63'"

(方法二)或者,kitty scrollback 也可以使用更强大的插件 kitty-scrollback.nvim(正在用)

按键映射

推荐在系统上改键:交换右 Ctrl 和右 Alt

左手的小指和拇指很忙,右手的拇指竟在呼呼大睡 (如果习惯用左手拇指按空格的话)。 交换右 Ctrl 和右 Alt,激活右手的拇指来按 Ctrl。 不仅可以左右开弓, 甚至可以让手指几乎不移出标准指位的情况下按出 Shift + Ctrl + Alt。 另外好处还有,对键盘的影响最小。别人用你的键盘时 不会轻易察觉到有改动,不像改动左侧按键那样让人不适应。

不必交换 CapsLockCtrl。 比如 Ctrl + z 没之前说的方法好按, 而且左手小指已经承担了太多的任务, 尽量不要再给左手小指增加负担了。

终端内可以用 Ctrl + [ 代替 Escape。 或者,其实我在用 keyd, 右 Alt 可以同时作为 EscapeCtrl 使用。

我的 keyd 配置
[ids]
*

[main]
# 右 Alt 按住不放是 Ctrl,按一次松开是 Escape
rightalt = overload(control, esc)
rightcontrol = rightalt

按键映射集中在单文件 plugin/keymaps.vim 里面 (虽然还是有极少数散落在外)。 忘记按什么键,直接查看该文件即可, 不用到各个文件里查看按键,不需要依靠插件来管理。 至于用 Vimscript 还是 Lua 编写,全凭个人喜好。 我偏好用 Vimscript 写按键映射,因为一目了然。

按键的报错信息是负反馈。 没有加载插件导致的按键映射无效,按键必须报错, 负反馈可以提醒使用者缺少特定插件。 不应在插件节奏时才加载该插件对应的映射。 否则,在按键没有任何反馈时,无法知道是因为插件没有加载; 还是该功能已经成功运行,只是没有任何输出。 如果按键搞乱了正在编辑的文本, 还要反推原因竟是插件没有加载。 只有 dial.nvim 或者 nvim-hlslens 这类在原按键上增强功能的插件, 才适合在插件加载时加载自己的映射。

目录结构

最少维护:简单的目录结构

lua/plugins/ 插件列表
lua/plugins/configs/ 每个插件的设置
pack/ 自己管理的插件
plugin/ 是传统的 Vim 目录。 本来是作为插件目录被使用,可以放单个独立的插件,也可以用来放配置文件。 如果 init.lua 的内容太多, 可以拆出一部分放在这个目录里面, 只是 plugin/* 各个文件的加载顺序无法保证。 不了解的话,可以参考 https://github.com/lymslive/vimllearn/blob/master/z/20181219_1.md

About

echo nvim > now

Topics

Resources

Stars

Watchers

Forks