之前我们对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. 多种方式实现 Future 回调返回结果

    JDK  实现 public class FutureTest { public static void main(String[] args) throws Exception { Executor ...

  2. Linux--内存管理浅谈

    本文旨在宏观的了解linux的内存管理制度,理解相关概念,故很多方面不作过深叙述,感兴趣的可自行研究:如有错误,请指出. 一.进程与内存 当一个进程启动时,它需要获取系统分配给它的内存空间,并且设置好 ...

  3. Linux 进程守护脚本

    一.进程守护脚本: while true; do server=`ps aux | grep stat-agent-1.0.0-SNAPSHOT.jar | grep -v grep` if [ ! ...

  4. 源码深度解析 Handler 机制及应用

    本文以源码分析+实际应用的形式,详细讲解了 Handler 机制的原理,以及在开发中的使用场景和要注意的地方. 一.基本原理回顾 在 Android 开发中,Handler及相关衍生类的应用经常用到, ...

  5. 绿色数治开采工艺: 3D 可视化智慧矿山

    前言 2021 年 2 月底,国家矿山安监局综合司发布的<"十四五"矿山安全生产规划(征求意见稿)>中再次强调要"实时采集矿山安全监控.人员位置监测.视频监控 ...

  6. <vue 组件 1、组件化基本使用>

    代码结构 组件就是将复杂的功能拆分成简单的块,拆分后的块可以被多处使用. 组件的使用分成三个步骤: 1.创建组件构造器     Vue.extend() 2.注册组件               Vu ...

  7. 2020年了,再不会webpack敲得代码就不香了(近万字实战)

    https://zhuanlan.zhihu.com/p/99959392?utm_source=wechat_session&utm_medium=social&utm_oi=619 ...

  8. python之数学函数应用

    一.abs(x) 1.作用: 函数返回 x(数字)的绝对值,如果参数是一个复数,则返回它的大小(模) 2.举例说明: #1.abs() a = abs(-15) print(a) b = abs(1+ ...

  9. Postman调试grpc

    转载请注明出处: 1.检查自己的postman是否支持 grpc,通过 File -> new -> ,出现如下图,则表示支持: 2.点击上图的grpc就会自动创建一个 grpc 的req ...

  10. 13-Verilog for Design

    Verilog for Design 设计人员知道写的RTL可以综合成么样的电路 设计人员对于硬件系统进行描述 验证人员搭建验证环境对设计人员描述的硬件系统进行验证 对Standcell,模拟/定制I ...