之前我们对neovim 进行了基础的配置,这篇主要介绍我比较常用的快捷键配置。到这篇开始我们的配置已经可以为两个大的模块——基础配置和快捷键配置。我们的目录也应该按照模块来进行组织。在正式配置之前让我们先规划一下目录结构。

当前我打算采用如下的目录格式

~/.config/nvim

├── lua

│ ├── basic.lua # 用来存储基础配置

│ ├── keybindings.lua # 用来存储快捷键配置

└── init.lua # 配置文件入口,主要用来加载其他配置文件

lua模块加载

还记得我们之前介绍过的 runtime 吗?在介绍文件类型的时候说过,runtime有两个路径,一个是系统路径位于 $VIMRUNTIME 中,第二个就是用户配置文件路径,可以使用$MYVIMRC来查看。在 Unix/Linux 平台,它位于 ~/.config/nvim 中,而模块路径就位于 runtime/lua 中。

lua 语言中,加载模块可以使用 require() 。它传入一个不带 .lua 后缀的模块的相对路径。所以这里想要在 init.lua 中加载基础配置和 快捷键配置可以使用如下语句

require('basic')
require('keybindings')

如果目录有多层,例如要加载 lua/basic/settings.lua 模块的话,可以使用 . 或者 / 来组织路径。

require('basic/settings')

这里我推荐使用 /。主要是为了使用 gf 快速跳转到对应路径。使用 . 的话 gf 并不会将它解析为目录结构,而是直接去找名为 basic.settings.lua 的文件。

我们先创建好所有目录和文件,然后将之前的 init.lua 拷贝一份到 lua/basic.lua 中,并且创建文件 lua/keybindings.lua。然后修改 init.lua

require("basic")
require("keybinds")

快捷键配置

这里我们事先设置 path路径,然后使用 gf快速跳转到不同文件。

我们首先来设置 leader 键和 localleader键

vim.g.mapleader = " "
vim.g.maplocalleader = " "

下面我们按照 《vim从嫌弃到依赖》这系列文章中介绍的顺序来配置快捷键

标签页快捷键

由于我自身很少用 标签页的功能,而且vim中自带的命令已经够高效的了,所以这里我基本没怎么定义快捷键

-- 配置tabline快捷键,主要以 t开头代表 t
-- 关闭当前标签页
vim.api.nvim_set_keymap("n", "tc", ":tabclose<cr>", {noremap = true, silent = true})
-- 关闭所有标签页,仅保留当前标签页
vim.api.nvim_set_keymap("n", "to", ":tabonly<cr>", {noremap = true, silent = true})
-- gt 切换到下一个,gT切换到上一个

翻页

代码翻页我主要采用 Ctrl + f和 Ctrl + b,代表 Foward 和 Backup。这里为了方便我将它们分别向上或者向下移动 10行。同时将光标至于中间位置,有时候光标在下面不好看它的上下文。

vim.api.nvim_set_keymap("n", "<C-f>", "10jzz", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<C-b>", "10kzz", {noremap = true, silent = true})

多窗口相关的操作

多窗口快捷键我将它分为两个部分,一个是窗口本身的操作,主要是打开和关闭。第二个是窗口间跳转。第一类操作我采用 ssplit)最为开头,第二类以 <leader> 键开头。

-- 多窗口的打开与关闭
vim.api.nvim_set_keymap("n", "sv", ":vsp<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "sh", ":sp<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "sc", ":close<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "so", ":only<CR>", {noremap = true, silent = true})
-- 多窗口跳转
vim.api.nvim_set_keymap("n", "<leader>h", "<C-w>h", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>l", "<C-w>l", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>j", "<C-w>j", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>k", "<C-w>k", {noremap = true, silent = true})

其他有用的绑定

这里我们将之前文章中用来当做例子的一部分比较有用的映射放上去

-- 其他有用的绑定
-- 使用 <C-u> 将光标所在单词转化为全大写
vim.api.nvim_set_keymap("i", "<C-u>", "<esc>viwUwa", {noremap = true, silent = true})
-- 使用 <C-l> 将光标所在单词转化为全小写
vim.api.nvim_set_keymap("i", "<C-l>", "<esc>viwuwa", {noremap = true, silent = true})
-- dw删除当前光标所在单词
vim.api.nvim_set_keymap("n", "dw", "diw", {noremap = true, silent = true})
-- 快速打开vimrc文件
vim.api.nvim_set_keymap("n", "<leader>ee", ":vs $MYVIMRC<CR>", {noremap = true, silent = true})
-- 快速启用 vimrc
vim.api.nvim_set_keymap("n", "<leader>ss", "source $MYVIMRC<CR>", {noremap = true, silent = true})

本篇到这里就结束了,下一篇我们将要来介绍插件管理的相关内容,敬请期待

从零开始配置 vim(10)——快捷键配置的更多相关文章

  1. mac配置vim-go

    基本的设置信息(参考网址:http://hessian.cn/p/1026.html): "还是配置/.vimrc文件. syn on "语法支持 set laststatus=2 ...

  2. Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)

    由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的.这篇博文主要是记录vim使用和配置相关的一些知识点. 关于vim ...

  3. Vim 安装和配置、优化

    Vim 介绍 Vim 官网:http://www.vim.org/ Vim 安装 CentOS:sudo yum install -y vim Ubuntu:sudo apt-get install ...

  4. 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...

  5. vim + ctags + taglist配置和使用

    vim +ctags + taglist ,ctags+cscope 安装配置和使用 内容:VIM下ctags和taglist的安装配置方法:一键安装 ctags和cscope的方法 :vim语法高亮 ...

  6. vim插件和配置

    vim插件和配置 插件 pathogen 可以方便地管理vim插件 在没有pathogen的情况下,vim插件的文件全部都放在.vim目录,卸载插件很麻烦,pathogen可以将不同的插件放在一个单独 ...

  7. Qt Creator快捷键大全,附快捷键配置方法

    一.快捷键配置方法:   进入“工具->选项->环境->键盘”即可配置快捷键.   二.常用默认快捷键:   编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助( ...

  8. 详细,Qt Creator快捷键大全,附快捷键配置方法

    一.快捷键配置方法: 进入“工具->选项->环境->键盘”即可配置快捷键. 二.常用默认快捷键: 编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助(选中某一类或 ...

  9. Mac 下升级 vim 并自己配置 vim 的过程

    1.升级 vim 我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim -- ...

  10. Linux 配置vim编辑器

    最终效果 步骤1.下载NERDTree插件安装包(vim目录插件) https://www.vim.org/scripts/script.php?script_id=1658 步骤2.在家目录创建 . ...

随机推荐

  1. Spring解决泛型擦除的思路不错,现在它是我的了。

    你好呀,我是歪歪. Spring 的事件监听机制,不知道你有没有用过,实际开发过程中用来进行代码解耦简直不要太爽. 但是我最近碰到了一个涉及到泛型的场景,常规套路下,在这个场景中使用该机制看起来会很傻 ...

  2. explain分析

    explain分析字段:id.select_type.type.partitions.type.possible_keys.key.key_len.ref.rows.rows.filtered.ext ...

  3. 聊一聊:MyBatis和Spring Data JPA的选择问题

    从个人开发角度来说,Spring Data JPA更好用,是因为开发起来更快. 但从团队角度,我们希望更好的维护性,spring data jpa就差一些,或者说对后期人的要求更高. 很容易出现这种情 ...

  4. ACP 知识点总结

    记录下学习ACP过程不断遇到的且需要记录的知识点: 在阿里云专有网络VPC创建之后,路由器也是随着VPC一起自动创建,所以不需要手动创建,这个时候需要继续创建交换机才能在交换机种创建其他云产品. 7层 ...

  5. [java] JSP post 提交乱码 解决方案

    //在post提交的页面顶部插入下列代码 <% request.setCharacterEncoding("UTF-8"); %>

  6. C#操作 excel 表格

    nuget引入: EPPlus.Core FileInfo file = new FileInfo(@"d:\test.xlsx"); using (ExcelPackage pa ...

  7. 【Mysql系列】(二)日志系统:一条更新语句是如何执行的

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 这篇文章是从Github ReadMe拷贝的,内容实践下载是没问题的,能够正 ...

  8. [转帖]实战瓶颈定位-我的MySQL为什么压不上去–写场景

    https://plantegg.github.io/2023/06/30/%E5%AE%9E%E6%88%98%E7%93%B6%E9%A2%88%E5%AE%9A%E4%BD%8D-%E6%88% ...

  9. [转帖]浅谈RAID写惩罚(Write Penalty)与IOPS计算

    https://www.dell.com/community/%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E5%92%8C%E4%BF%9D%E6%8A%A4-%E8%B ...

  10. [转帖]Veeam Backup & Replication 10.0.0.4461安装部署(包含补丁)

    原文:https://www.cnblogs.com/cnzay/p/15561893.html Veeam Backup & Replication 是一款数据保护软件,为VMware 和H ...