从零开始配置 vim(10)——快捷键配置
之前我们对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})
多窗口相关的操作
多窗口快捷键我将它分为两个部分,一个是窗口本身的操作,主要是打开和关闭。第二个是窗口间跳转。第一类操作我采用 s(split)最为开头,第二类以 <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)——快捷键配置的更多相关文章
- mac配置vim-go
基本的设置信息(参考网址:http://hessian.cn/p/1026.html): "还是配置/.vimrc文件. syn on "语法支持 set laststatus=2 ...
- Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)
由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的.这篇博文主要是记录vim使用和配置相关的一些知识点. 关于vim ...
- Vim 安装和配置、优化
Vim 介绍 Vim 官网:http://www.vim.org/ Vim 安装 CentOS:sudo yum install -y vim Ubuntu:sudo apt-get install ...
- 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...
- vim + ctags + taglist配置和使用
vim +ctags + taglist ,ctags+cscope 安装配置和使用 内容:VIM下ctags和taglist的安装配置方法:一键安装 ctags和cscope的方法 :vim语法高亮 ...
- vim插件和配置
vim插件和配置 插件 pathogen 可以方便地管理vim插件 在没有pathogen的情况下,vim插件的文件全部都放在.vim目录,卸载插件很麻烦,pathogen可以将不同的插件放在一个单独 ...
- Qt Creator快捷键大全,附快捷键配置方法
一.快捷键配置方法: 进入“工具->选项->环境->键盘”即可配置快捷键. 二.常用默认快捷键: 编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助( ...
- 详细,Qt Creator快捷键大全,附快捷键配置方法
一.快捷键配置方法: 进入“工具->选项->环境->键盘”即可配置快捷键. 二.常用默认快捷键: 编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助(选中某一类或 ...
- Mac 下升级 vim 并自己配置 vim 的过程
1.升级 vim 我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim -- ...
- Linux 配置vim编辑器
最终效果 步骤1.下载NERDTree插件安装包(vim目录插件) https://www.vim.org/scripts/script.php?script_id=1658 步骤2.在家目录创建 . ...
随机推荐
- 如何在 EF Core 中使用乐观并发控制
什么是乐观并发控制? 乐观并发控制是一种处理并发访问的数据的方法,它基于一种乐观的假设,即认为并发访问的数据冲突的概率很低.在乐观并发控制中,系统不会立即对并发访问的数据进行加锁,而是在数据被修改时, ...
- 编码器-解码器 | 基于 Transformers 的编码器-解码器模型
基于 transformer 的编码器-解码器模型是 表征学习 和 模型架构 这两个领域多年研究成果的结晶.本文简要介绍了神经编码器-解码器模型的历史,更多背景知识,建议读者阅读由 Sebastion ...
- 聊聊大语言模型(LLM)的 10 个实际应用
近期,苹果公司正在悄悄研究可以挑战的 OpenAI.谷歌和其他公司的 AI 工具,建立了自己的框架来创建大语言模型,并创建了一个聊天机器人服务,一些工程师称之为"Apple GPT" ...
- WPF 实现窗体鼠标事件穿透
一.窗体变透明,需要加三个属性: AllowsTransparency="True"Background="Transparent"WindowStyle=&q ...
- C++ 标准库 智能指针
C++没有垃圾回收,因此 new 出来的对象都要自己管理 为了方便的管理内存,我们发现垃圾回收中引用计数的思路很简单就能在 C++中实现,而其实标准库中就已经有这样的实现,也就是智能指针 它们的头文件 ...
- 【3rd Party】nlohmann json 基础用法
参考链接:Here 什么是nlohman json ? nlohman json GitHub - nlohmann/json: JSON for Modern C++ 是一个为现代C++(C++11 ...
- 构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践
作者|柳下 概述 随着企业规模和数据量的增长,数据的价值越来越受到重视.数据的变化和更新变得更加频繁和复杂,因此及时捕获和处理这些变化变得至关重要.为了满足这一需求,数据库 CDC(Change Da ...
- tinymce富文本编辑器升级问题
突然这样,之前好好地.
- 《vuejs快跑构建触手可及的高性能web应用》读书笔记
1.cdn:内容分发网络(CDN)是将资源托管到全世界各处的服务器上以实现快速分发.CDN版本对于开发和快速验证比较有用,但是将unpkg应用于生产环境前,需要检查它是否适合你. 2.假值包括fals ...
- 无向图求割点 UVA 315
***割点概念:去掉一个点后图不连通,该点就为割点 割点满足的条件: 一个顶点u是割点,当且仅当满足(1)或(2) (1) u为树根,且u有多于一个子树. (2) u不为树根,且满足存在(u,v)为树 ...