从零开始配置 vim(4)——键盘映射的一些技巧
通过前面的学习,我们已经知道了如何进行键盘映射,并且也知道了在任何场合应该使用非递归版本的映射。这篇再介绍一些使用关于快捷键映射的内容作为收尾
快速编辑 vimrc 文件
通过前面掌握的知识,相信各位小伙伴已经在配置文件中加入了不少配置了。不知道小伙伴们加配置是怎么加的呢?是不是先进入配置文件,编辑完了之后退出,再重新进入看看配置是否生效呢了?又或者在使用vim编程的过程中觉得需要加入某个属性或者特性。这个时候是不是要先退出当前编辑的文件,或者聪明一点的小伙伴知道使用 :vs 命令新建一个窗口打开配置文件。但是在编辑完了配置文件,想让它生效还是得先退出vim,然后再进入。如果配置出错,就得不断的退出进入。这个过程是很耽误编程的。有没有想过怎么改进呢?
我们学了快捷键的映射,完全可以定义两个快捷键用于快速打开和应用配置文件。在完成这个事情的过程中需要了解绍一个变量和一个命令。
要介绍的变量是 $MYVIMRC 它代表当前vim使用的配置文件的路径,针对neovim来说,如果你使用init.vim作为配置文件,那么它的值就是 ~/.config/nvim/init.vim。如果你用 init.lua 作为配置文件,那么它的值就是 ~/.config/nvim/init.lua 。只要你的配置写的位置是正确的,使用它总能对应上
要介绍的命令就是 :source 命令。熟悉 shell 的应该对这个命令不陌生,shell 中,使用 source 来使对应的配置文件生效。vim中它也是使vim的配置文件生效。两个命令的用法也一样,都是跟对应配置文件的路径。使用它配合 $MYVIMRC 能做到在不退出vim的过程中重新加载配置
有了这两个东东,我们就可以定义出快捷键了
vim.api.nvim_set_keymap("n", "<leader>ee", ":vs $MYVIMRC<CR>", {silent = true, noremap = true})
vim.api.nvim_set_keymap("n", "<leader>ss", ":source $MYVIMRC<CR>:q<CR>", {silent = true, noremap = true})
它的效果如下

这里我使用 ee 来打开主要考虑到 e 代表的是 edit ,s 代表 s 或者 source 比较好记,各位小伙伴可以先使用其他方便记忆的按键。如果在写完配置之后,不想按 :w 来保存,完全可以将 <leader>ss 映射为 :wq<CR>:source $MYVIMRC<CR>。将保存和启用一并使用。我自己是属于那种稍微改一点就要按 :w 来保存的人。我这里就只需要启用就行。在保存并启用之后,我这里又用了 :q 来关闭之前打开的新窗口。现在你就又可以专注于当前的编程任务了。
学会使用新映射的快捷键
从插入模式回到普通模式有这么几种方式 <esc>、<Ctrl+[>和 <Ctrl +c>。但是不管哪种方式都存在比较难按的情况,手指需要移开较大距离我们可以使用快捷键映射的方式,将 jk 映射为退出键(这里就可以使用上面定义的快捷键快速的打开配置文件了)
vim.api.nvim_set_keymap("i", "jk", "<esc>", {silent = true, noremap = true})

这个时候我们似乎用 <esc>习惯了,已经形成肌肉记忆了,只要一想到退回到普通模式,就下意识的使用 <esc>,我们辛辛苦苦分析建立的更高效的快捷键完全没有用处。
又或者有 vim 高手指出,要学会更快速的移动光标应该摒弃 j、k、l、h 这些按键,但是明明知道用w或者 f 能更快速的移动光标,但是有时候就是控制不住手,手不自觉的就按到这些键上面去了,就像我在使用 notepad 时总是无意识的输入 <esc>:wq 来保存退出一样。
该如何处理这种情况呢?一种有效的办法是将它们都设置为无效键,当你下意识的使用到这些被无效的键时发现它没任何作用,此时你会意识到自己将它们定义为了无效键,同时你也会想起来该使用之前定义的那些更高效的替代品。虽然开始你可能不太习惯,但是一旦形成记忆,你会跟以前一样得心应手。
我们可以使用 <nop> 来定义一个键失效, 例如我可以使用 :inoremap <esc> <nop>。定义之后在插入模式下就无法使用 <esc> 来退回到普通模式了。
在 lua 中就可以使用如下语句来取消 esc
vim.api.nvim_set_keymap("i", "<esc>", "<nop>", {silent = true, noremap = true})

我们可以看到,在写下那段配置之后,<esc> 已经无法从插入模式退回到普通模式了,只有使用 jk 才能退回。
从零开始配置 vim(4)——键盘映射的一些技巧的更多相关文章
- VIM键盘映射 (Map)~转载
VIM键盘映射 (Map) 设置键盘映射 使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来.例如使用以下命令,可以通过F5键将单词用花括号括起来: :map <F5> i{e ...
- VIM键盘映射 (Map)
http://www.pythonclub.org/linux/vim/map VIM键盘映射 (Map) 设置键盘映射 使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来.例如使用以下命 ...
- Mac 下升级 vim 并自己配置 vim 的过程
1.升级 vim 我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim -- ...
- mac 键盘映射 karabiner
mac 键盘映射 karabiner 今天在vim编辑的时候觉得用mac的方向键有点麻烦 需要移动我的小右手,然后就搜个映射方案. 百度出来了 karabiner. 官网 安装什么的就不说了, 安完了 ...
- Linux下修改键盘映射
一篇关于修改键盘映射比较靠谱的文章,收藏一下! 原文地址:http://www.07net01.com/2016/04/1436249.html --------------------------- ...
- AI应用开发实战 - 从零开始配置环境
AI应用开发实战 - 从零开始配置环境 与本篇配套的视频教程请访问:https://www.bilibili.com/video/av24421492/ 建议和反馈,请发送到 https://gith ...
- Centos配置网络和主机映射
目录 虚拟机网络的三种配置方式 配置虚拟机IP 主机映射问题 配置虚拟机的主机名 虚拟机远程登录 虚拟机网络的三种配置方式 桥接模式:当前虚拟机与主机在同一个局域网下,同一个局域网下的所有电脑都可以访 ...
- Mac 配置 vim
Mac 配置 vim 安装 vim 7.4 cd ~ hg clone https://code.google.com/p/vim/ cd vim ./configure --with-feature ...
- mac配置vim-go
基本的设置信息(参考网址:http://hessian.cn/p/1026.html): "还是配置/.vimrc文件. syn on "语法支持 set laststatus=2 ...
- 《转》IIS中配置通配符应用程序映射
本文转载自龚赤兵 电子工业出版社,如给您带来不便之处,请联系博主. eb开发新体验:ASP.NET 3.5 MVC架构与实战>第13章网站部署,本章主要实现了如何在IIS 6.0中一步一步地成功 ...
随机推荐
- 聚焦企业数据生命周期全链路 火山引擎数智平台 VeDI 发布《数据智能知识图谱》
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,火山引擎数智平台(VeDI)正式发布<数据智能知识图谱>(以下简称「图谱」),内容覆盖了包括数据 ...
- IIS 设置超时时间
高级设置 => 限制 => 连接超时(秒),默认120秒,根据实际情况调整
- Winform 嵌入html,数据交互
Winform 嵌入html,数据交互,将JS中的数据等传给winform 点击浏览器中的按钮,触发 Winform 中的方法 https://github.com/cefsharp/CefSharp ...
- logback.xml 配置文件
logback.xml <?xml version="1.0" encoding="UTF-8"?> <configuration> & ...
- 携程OceanBase开源实践——索引统计功能实现
[作者] 施纬,携程数据库研发工程师,主要负责数据库运维和内核研发. 姜贤富,携程高级数据库研发工程师,主要负责携程数据库监控运维及工具研发,拥有十年运维经验. [概述] 自从2021年OceanBa ...
- 高数 | Dirichlet 积分
在分析学中,Dirichlet 积分 是如下形式的 无穷限积分 \[\int_{0}^{+\infty} \frac{\sin x}{x} \mathrm{~d} x \] 它是条件收敛的,且收敛到 ...
- CMake学习,我们怎么从零开始狂写大型项目
CMake 说明 cmake的定义是什么 ?-----高级编译配置工具 当多个人用不同的语言或者编译器开发一个项目,最终要输出一个可执行文件或者共享库(dll,so等等)这时候神器就出现了-----C ...
- docker 容器ip查看及 网络配置区别
本文为博主原创,未经允许不得转载: 1. 查看容器ip: 方法一:查看所有容器的ip docker inspect --format='{{.Name}} - {{range .NetworkSett ...
- spring cloud feign 调用一直fallback
本文为博主原创,转载请注明出处: 功能在本地调试的时候一直是正常可以调用的,当服务发布到 dev 环境的时候,调用的时候一直 fallback,且由于服务调用的时候,对 Feign 配置了 fallb ...
- SoC scan implementation
scan chain产生之前需要进行scan drc的过程,判断cell是不是能够串到scan chain上去 mux-d scan cell(是最常用的scan cell),还有其他的scan ce ...