通过前面的学习,我们已经知道了如何进行键盘映射,并且也知道了在任何场合应该使用非递归版本的映射。这篇再介绍一些使用关于快捷键映射的内容作为收尾

快速编辑 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 代表的是 edits 代表 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)——键盘映射的一些技巧的更多相关文章

  1. VIM键盘映射 (Map)~转载

    VIM键盘映射 (Map) 设置键盘映射 使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来.例如使用以下命令,可以通过F5键将单词用花括号括起来: :map <F5> i{e ...

  2. VIM键盘映射 (Map)

    http://www.pythonclub.org/linux/vim/map VIM键盘映射 (Map) 设置键盘映射 使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来.例如使用以下命 ...

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

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

  4. mac 键盘映射 karabiner

    mac 键盘映射 karabiner 今天在vim编辑的时候觉得用mac的方向键有点麻烦 需要移动我的小右手,然后就搜个映射方案. 百度出来了 karabiner. 官网 安装什么的就不说了, 安完了 ...

  5. Linux下修改键盘映射

    一篇关于修改键盘映射比较靠谱的文章,收藏一下! 原文地址:http://www.07net01.com/2016/04/1436249.html --------------------------- ...

  6. AI应用开发实战 - 从零开始配置环境

    AI应用开发实战 - 从零开始配置环境 与本篇配套的视频教程请访问:https://www.bilibili.com/video/av24421492/ 建议和反馈,请发送到 https://gith ...

  7. Centos配置网络和主机映射

    目录 虚拟机网络的三种配置方式 配置虚拟机IP 主机映射问题 配置虚拟机的主机名 虚拟机远程登录 虚拟机网络的三种配置方式 桥接模式:当前虚拟机与主机在同一个局域网下,同一个局域网下的所有电脑都可以访 ...

  8. Mac 配置 vim

    Mac 配置 vim 安装 vim 7.4 cd ~ hg clone https://code.google.com/p/vim/ cd vim ./configure --with-feature ...

  9. mac配置vim-go

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

  10. 《转》IIS中配置通配符应用程序映射

    本文转载自龚赤兵 电子工业出版社,如给您带来不便之处,请联系博主. eb开发新体验:ASP.NET 3.5 MVC架构与实战>第13章网站部署,本章主要实现了如何在IIS 6.0中一步一步地成功 ...

随机推荐

  1. Jenkins Pipeline 流水线 - 使用代理节点,Remote SSH 对 K8S 进行升级

    Jenkins Pipeline 流水线 - K8S kubectl 升级 使用代理节点 Remote SSH 远程执行命令进行升级 Remote SSH 方式 安装插件 SSH Pipeline S ...

  2. JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败

    [2021-01-15 13:20:14.623] ERROR [Druid-ConnectionPool-Create-497208183] DruidDataSource.java:2471 - ...

  3. PS 创建网络去掉反冲增强

    一.当物料为反冲物料时,创建网络数据,希望去掉反冲标识 二.增强实施 在BAPI中传入反冲标识为空 在标准代码中发现反冲标识的赋值位置 判断当不传入反冲标识,将物料自带的反冲标识清空 定期更文,欢迎关 ...

  4. 在 HTML 页面中使用 React

    该方案使用场景:在html页面中使用react,主js文件index.js和其它非react功能使用js模块化的方式开发,适合轻量级中小型应用 index.html代码: 引入react.react- ...

  5. Codeforces Round #666 (Div. 2) 题解报告

    https://codeforces.com/contest/1397/problem/A 题意: 给定n个字符串,问重新组合以后是否能构成相同的n个字符串 思路: 直接判断所给的字符串的每种字母是否 ...

  6. SpringBoot 配置类解析

    本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/NvPO5-FWLiOlrsOf4wLaJA作者:Li Wanghong SpringBoot作为 ...

  7. 【vue基础篇】一看就懂的vue环境变量配置

    相关播客地址: https://juejin.cn/post/6844903859878363149 https://juejin.cn/post/6844903682178285575 视频学习资料 ...

  8. keepalived如何手动切换主备

    概述 主备部署中使用keepalived可以很方便的实现,安装维护简单,功能稳定. 最近在使用过程中有小的发现,记录一下. 环境 CentOS Linux release 7.9.2009 (Core ...

  9. SqlSugar DbContext

    title: SqlSugar DbContext date: 2023-02-16 20:01:41 tags: SqlSugar categories: ORM description: 总结整理 ...

  10. [转帖]自动清理_详解centos7和centos6系统的/tmp目录自动清理规则及区别

    概述 分享最近应用碰到的一个奇怪bug,一开始以为是代码上的问题,找了一段时间发现居然是因为系统的一个自动清理规则导致,下面一起来看看吧~ 一.应用报错: logwire.core.exception ...