vim map自定义快捷键

【Vim Masterclass 笔记21】S09L39:Vim 设置与 vimrc 文件的用法示例(二) 本篇为《VimMasterclass》第九章L39课的自学笔记,主要涉及Vim其他不太常见的自定义配置项,如配色方案、自定义快捷键、绑定代码片段等。最后还针对mkvimrc命令自动生成vimrc文件进行了简要介绍,为后续进一步深入研究相关配置奠定坚实的基础。感兴趣的朋友可以收藏起来,对照笔记进行练习、验证。 阅读详情

有五种映射存在 
- 用于普通模式: 输入命令时。 
- 用于可视模式: 可视区域高亮并输入命令时。 
- 用于操作符等待模式: 操作符等待中 ("d","y","c" 等等之后)。 
见下: |omap-info|。 
- 用于插入模式: 也用于替换模式。 
? 用于命令行模式: 输入 ":" 或 "/" 命令时。 

下表是map绑定中,对应的模式代号。现在先了解一下,等看完之后再回过头看这个模式代号就会明白了。 
字 符 模 式 ~ 
<Space> 普通、可视、选择和操作符等待 
n 普通 
v 可视和选择 
s 选择 (在可视模式下Ctrl+G进入)
x 可视 
o 操作符等待 
! 插入和命令行 
i 插入 
l 插入、命令行和 Lang-Arg 模式的 ":lmap" 映射 
c 命令行 


我主要讲解一下“n(普通模式)”下的两个绑定命令,等看完之后就对应的明白别的模式下的命令了。 
适用于普通模式的映射命令主要有: 
1. :map 
[语法] :map {lhs} {rhs} |mapmode-nvo| *:map* 
1.1 作用模式: n、v、o (普通、可视和选择、操作符等待) 
1.2 命令格式: 
:map {lhs} {rhs} 
含义: 在:map作用的模式中把键系列 {lhs} 映射为 {rhs},{rhs}可进行映射扫描,也就是可递归映射。 
1.3 举例: 
:map td :tabnew .<cr> 
含义:在其作用模式(普通、可视、操作符)下,输入td等价于输入 :tabnew . <cr>。而普通模式下输入:tabnew . <cr>就是打开当前目录 
如果再定义绑定 :map ts td,就是指在其作用模式下输入ts等价于td,也就是打开当前目录。不过如果没有特殊需要,一般不建议递归映射。 

2. :noremap 
:moremap和:map命令相对,作用模式和命令格式都相同,只不过不允许再对{rhs}进行映射扫描,也就是{lhs}定义后的映射就是{rhs}的键序列,不会再对{rhs}键序列重新解释扫描。它一般用于重定义一个命令,当然如果:map不需要递归映射的话,建议试用:noremap 
比如: 
:noremap ts td 
它的意思是在其作用模式下,输入ts就是输入td,但是和:map不同的是,此时td再不会做进一步扫描解释。虽然之前已经定义了td,但是不会对td再做扫描 

3. :unmap 
:unmap是对应取消:map绑定的{lhs},作用模式相同,命令格式 :unmap {lhs}。 
例如: 
:unmap td 
就是取消在其作用模式中td的绑定,比如之前td被绑定为:tabnew .<cr>,此时此绑定消失。 
4. :mapclear 
:mapclear时对应取消所有:map绑定的,慎用! 

5. :nmap 
:nmap是:map的普通模式板,也就是说其绑定的键只作用于普通模式。 
例如: 
:nmap td :tabnew .<cr> 和 :map td :tabnew .<cr> 在普通模式下等效 
6. :nnoremap 
:nnorempa和:nmap的关系和:noremap和:map的关系一样,只是:nmap的非递归版 
7. :nunmap 
:nunmap和:nmap的关系和:unmap和:map的关系一样,取消:nmap的绑定。 
8. :nmapclear 
:nmapclear是对应取消所有:map绑定的,慎用! 

看完以上,应该可以发现一个规律,前4个是一组,后4个时一组,后一组比前一组多一个n就是指只作用于普通模式。其中每组内*nore*是其对应的非递归版、*un*是取消绑定某个<lhs>绑定、clear后缀是取消所有绑定。发现了这个规律,再翻到前面的模式代号表,你大体可以猜到vmap、xmap、smap、omap是什么意思了吧,以及相对应的nore版本、un版本、clear版本。 

另外: 
{rhs} 之前可能显示一个特殊字符: 
* 表示它不可重映射 
& 表示仅脚本的局部映射可以被重映射 
@ 表示缓冲区的局部映射 

到这一步你可以轻松的长吸一口气,因为相关的命令已经都了解了,记不住没关系,可以随时:help map一下。不过别急,后面还有map更多的选项等着去攻克。 

键表 |key-notation| 
<k0> - <k9> 小键盘 0 到 9 *keypad-0* *keypad-9* 
<S-...> Shift+键 *shift* *<S-* 
<C-...> Control+键 *control* *ctrl* *<C-* 
<M-...> Alt+键 或 meta+键 *meta* *alt* *<M-* 
<A-...> 同 <m-...> *<A-* 
<t_xx> termcap 里的 "xx" 入口键 

特殊参数: 
1. <buffer> 
2. <silent> 
3. <special> 
4. <script> 
5. <expr> 
6. <unique> 
它们必须映射命令的后边,在其他任何参数的前面。 

<buffer>如果这些映射命令的第一个参数是<buffer>,映射将只局限于当前缓冲区(也就是你此时正编辑的文件)内。比如: 
:map <buffer> ,w /a<CR> 
它的意思时在当前缓冲区里定义键绑定,“,w”将在当前缓冲区里查找字符a。同样你可以在其他缓冲区里定义: 
:map <buffer> ,w /b<CR> 
比如我经常打开多个标签(:tabedit),想要在各自标签里定义",w"键绑定,那么你只要在每个标签页里分别定义就可,其作用域也只在各自的标签里。同样要清除这些缓冲区的键绑定也要加上<buffer>参数,比如: 
:unmap <buffer> ,w 
:mapclear <buffer> 

<silent>是指执行键绑定时不在命令行上回显,比如: 
:map <silent> ,w /abcd<CR> 
你在输入,w查找abcd时,命令行上不会显示/abcd,如果没有<silent>参数就会显示出来 

<special>一般用于定义特殊键怕有副作用的场合。比如: 
:map <special> <F12> /Header<CR> 

<unique>一般用于定义新的键映射或者缩写命令的同时检查是否该键已经被映射,如果该映射或者缩写已经存在,则该命令会失败 

<expr>. 如果定义新映射的第一个参数是<expr>,那么参数会作为表达式来进行计算,结果使用实际使用的<rhs>,例如: 
:inoremap <expr> . InsertDot() 
这可以用来检查光标之前的文本并在一定条件下启动全能 (omni) 补全。 
一个例子: 
let counter = 0 
inoremap <expr> <C-L> ListItem() 
inoremap <expr> <C-R> ListReset() 

func ListItem() 
let g:counter += 1 
return g:counter . '. ' 
endfunc 

func ListReset() 
let g:counter = 0 
return '' 
endfunc 
在插入模式下,CTRL-L插入顺序的列表编号,并返回;CTRL-R复位列表编号到0,并返回空。 


<Leader> mapleader 
mapleader变量对所有map映射命令起效,它的作用是将参数<leader>替换成mapleader变量的值,比如: 
:map <Leader>A oanother line<Esc> 
如果mapleader变量没有设置,则用默认的反斜杠代替,因此这个映射等效于: 
:map \A oanother line<Esc> 
意思时输入\A键时,在下一行输入another line并返回到普通模式。 
如果设置了mapleader变量,比如: 
let mapleader = "," 
那么就等效于: 
:map ,A oanother line<Esc> 

<LocalLeader> maplocalleader 
<LocalLeader>和<Leader>类似,只不过它只作用于缓冲区。 
因此在设置mapleader和maplocalleader时最好区分开,不要出现冲突。 

大体上映射的主要部分已经都提到了,还有很多具体的映射相关的内容可以参见:help map

基于STM32的智能手环心率血氧体温监测系统(完整设计) 本文设计了一款基于STM32单片机的多功能智能手环系统,集成心率、血氧、体温实时监测功能,并支持运动数据管理与健康预警。系统采用MAX30102传感器实现心率血氧监测,DS18B20检测体温,ADXL345进行步数统计,通过OLED屏幕显示数据。研究通过低功耗硬件选型与模块化软件架构设计,实现了多参数同步采集、阈值预警及蓝牙数据传输功能。测试结果表明,系统在健康监测精度、续航能力及用户交互体验上均达到预期目标,为个人健康管理提供了实用解决方案。 阅读详情

相关推荐

ICNN实现入侵检测的思路与源码(CIC-IDS-2017)

基于ICNN实现入侵检测,可用于现实网络

t1274171989的博客 8414

【vim 学习系列文章 7-- vim vnormap nnoremap nmap map inoremap 区别】

记住,为了避免映射冲突或无法预料的结果,最好在创建新的键盘映射之前,先使用 unmap 命令来取消任何现有的映射。Vim 的可视模式是 Vim 的三种主要模式之一,另外两种是普通模式和插入模式。在普通模式下按 V 将进入行可视模式,在这个模式下,你可以通过上下移动光标来选择整行文本。在普通模式下按 v 将进入字符可视模式,在这个模式下,你可以通过移动光标来选择文本。在普通模式下按 将进入块可视模式,在这个模式下,你可以通过移动光标来选择一个文本块。在普通模式下将 F2 键映射为保存文件的命令。

CodingCos的博客 2774

大数据实时+离线项目架构----智慧物流大数据平台(超流行框架!)

智慧物流大数据平台 文章目录智慧物流大数据平台一、项目背景二、逻辑架构三、解决方案技术亮点:数据流转四、项目的技术选型4.1流式处理平台4.2 分布式计算平台4.3 海量数据存储框架软件版本总结 一、项目背景 本项目基于一家大型物流公司研发的智慧物流大数据平台。该物流公司是国内综合性快递、物流服务商,并在全国各地都有覆盖的网点。经过多年的积累、经营以及布局,拥有大规模的客户群,日订单达上千万。如此规模的业务数据量,传统的数据处理技术已经不能满足企业的经营分析需求。公司需要基于大数据技术构建数据中心,从而挖

weixin_48143996的博客 6427

vim map

<br />自己边学习边记录的,可能对大家有帮助 <br /><br />有五种映射存在 <br />- 用于普通模式: 输入命令时。 <br />- 用于可视模式: 可视区域高亮并输入命令时。 <br />- 用于操作符等待模式: 操作符等待中 ("d","y","c" 等等之后)。 <br />见下: |omap-info|。 <br />- 用于插入模式: 也用于替换模式。 <br />• 用于命令行模式: 输入 ":" 或 "/" 命令时。 <br /><br />下表是map绑定中,对应的模式代号

bopzhou 1243

记二开金蝶云星空动态表单艰辛历程

整个过程,开发接近一周,期间也有做其他事,遇到不会的第一时间也是找金蝶社区,搜索有无相关的解决问题经历。再就是问同事,最终还不能解决就提工单给供应商。响应一般都要大半天(我们公司是有vip,相对大半天能够响应是算好了),虽然有时候有响应,但是会转到其他研发老师,期间可能会是几天!如果是经常开发云星空的二开功能,熟练了速度回很快,但是对于接触不多的,或者刚入门的,会是个漫长的折磨过程。1、重新生产模块的dll.2、退出客户端3、重启iis4、等待五六分钟5、附加到进程6、登录客户端进去操作。

修炼中 3936

Matplotlib之bar3d画3D柱状图

3D柱状图通常用于展示数据集中不同分类项的数据大小或数量。与普通的柱状图相比,3D柱状图更适合展示数据的三个维度 3D 柱状图 按行/列涂颜色 柱加阴影、描黑边 自定义座标轴名、刻度标签、范围

我走的每一步都算数 1120

VIM cscope nmap不能工作

cscope为*nix平台下的功能强大的本文搜索工具,其按照和使用说明可以很方便的找到,本文所描述的问题为:Ubuntu 14.04不能正常使用vimrc下配置的cscope nmap快捷键的问题。 操作系统版本:Ubuntu 14.04 vim:版本 7.4.52 vim插件:cscope_maps.vim 将cscope_maps.vim中的快件配置拷贝到~/.vimrc中,如

飞翔de刺猬 2184

第十四节《OpenCascade集成Qt》

将 OpenCascade 与 Qt 集成是开发图形界面应用的常见需求。通过将 OpenCascade 的几何建模与 Qt 的图形用户界面(GUI)功能结合,可以创建强大而灵活的 CAD 或建模工具。OpenCascade 提供了与 Qt 的集成接口,允许你在 Qt 应用程序中嵌入 OpenCascade 的视图,执行几何操作,并与用户进行交互。以下是 OpenCascade 与 Qt 集成的详细步骤:首先,确保已安装 OpenCascade 和 Qt。你可以从 OpenCascade 官方网站或通过包管理

yumeiguo的博客 597

VIM - vim的几种模式和map映射之间的联系

VIM - vim的几种模式和map映射之间的联系

陨石䧛的天际 1037

C语言试题三之计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5))

1 、题目 计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5)) 2、部分函数说明 C 库函数 double pow(double x, double y) 返回 x 的 y 次幂。 3、源代码实现 #include <stdio.h> #include <...

码莎拉蒂 4608

【异常】Milvus向量数据库的常见错误“collection not loaded“(集合未加载)

Milvus数据库报错"collection not loaded"分析及解决方案。该错误发生在对未加载的集合执行查询操作时,核心原因是集合创建后需先加载到内存才能使用。解决方案包括:1)确认集合是否存在;2)查询前调用loadCollection接口加载集合;3)处理加载超时或失败情况,可检查加载状态;4)确保Milvus服务正常运行。建议在长期不使用集合时释放内存资源。文末附Java代码示例说明具体操作方法。

奶爸的编程之路,也就一周冷个三天 380

提高 Vim 使用效率的 12 个技巧

本文由 伯乐在线 - Alick 翻译,黄利民 校稿。未经许可,禁止转载! 英文出处:sheerun。欢迎加入翻译小组。 1. 使用空格键做为Leader(热键) Leader是个非常有创意的设计,通过不同按键的顺序操作可以执行各种命令,而不需要通过组合键的方式,自从使用Leader之后我就很少使用ctrl-xxx的这种组合键。 长久以来我都是使用 , 做为Leader,直到我

wzk456的专栏 1091

【ROS2】从yaml文件中读取参数配置

ROS2:从yaml中读取参数,到节点;使用C++演示参数的增、删、改、查、遍历、监听变化

郭老二 1284

【Vim】使用map自定义快捷键

map简介map是一个映射命令,将常用的很长的命令映射到一个新的功能键上。map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。映射的种类有五种映射存在: 用于普通模式: 输入命令时。 用于可视模式: 可视区域高亮并输入命令时。 用于操作符等待模式: 操作符等待中 (“d”,”y”,”c” 等等之后)。 用于插入模式: 也用于替换模式。 用于命

Jason Ding的专栏 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

简单聊聊Vim中的自定义快捷键

摘要: Vim中几个Map命令的区别 分享几个自定义的快捷键 前言 平常在Vim中自定义快捷键,使用的都是map命令,但最近发现自定义快捷键命令还有好多,如noremap, nmap,vmap等等。所以就想写一篇关于Vim中自定义快捷键的文章,来总结一些Vim中的自定义快捷键的命令和他们的命名方式。 与自定义快捷键相关的四个系列命令 map系列命令...

hKY0fB8kZ6xY 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

vim自定义快捷键的键位解释

map命令简介 map是一个映射命令,将常用的很长的命令映射到一个新的功能键上。map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。Vim中有五种映射存在: 1 用于普通模式: 输入命令时。 2, 用于可视模式: 可视区域高亮并输入命令时。 2 用于操作符等待模式: 操作符等待中 (“d”,”y”,”c” 等等之后)。 3 用于插入模式: 也用于替换模式。 4 用于命令行模...

qq_40250122的博客 1281

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【VIM效率翻倍秘籍:map快捷键魔法全解析】

作为"编辑器之神",VIM的魔力不仅在于模式编辑,更在于其高度可定制性。当你还在反复输入:wq时,老手早已通过map将常用操作熔铸成肌肉记忆——今天我们就揭开这个效率利器的神秘面纱!现在,是时候打开你的配置文件,将那些重复到手指发疼的操作,变成优雅的键盘芭蕾了!进阶技巧:用noremap避免递归(比如避免jj映射覆盖原有功能)防冲突原则:避免覆盖y/d/p等核心快捷键。" 可视模式快速注释(需安装注释插件)模式混淆:在插入模式误触普通模式快捷键。" 禅模式写作(隐藏状态栏)" 插入模式秒逃回普通模式。

lu_pete的博客 796

vim之map 映射快捷键

map简介 map是一个映射命令,将常用的很长的命令映射到一个新的功能键上。map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。 映射的种类 有五种映射存在: 用于普通模式: 输入命令时。 用于可视模式: 可视区域高亮并输入命令时。 用于操作符等待模式: 操作符等待中 ("d","y","c" 等等之后)。 用于插入模式: 也用于替换模式。

qwaszx523的博客 1463

vim快捷键的设定

vim快捷键自定义不能定义 Ctrl+q 和Ctrl+s.其他的如:  map  :w map  :make 是enter键 ,其中 的内容被替换为:w    map 可以改为 :map Normal, Visual and Operator-pending:vmap Visual:nmap Normal:omap Operator-pending:map! I

778

[Vim]vim的几种模式和按键映射

Map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。vim里最基本的map用法也就是:map c a 这里把c映射成了a,在map生效的情况下,按下c就等同于按下了a当然,常用的Ctrl,Shift,Alt自然也是支持的。令Ctrl+a对应到a:map a 令Alt+a对应到a:map a 令Ctrl+Alt+a对应到a:map a 到此,我们已经可以做很多事情了。但...

hejisan的专栏 4047

vim的工作模式和按键映射

Map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。 vim里最基本的map用法也就是 :map c a 这里把c映射成了a,在map生效的情况下,按下c就等同于按下了a, 当然,常用的Ctrl,Shift,Alt自然也是支持的。 • 令Ctrl+a对应到a :map a • 令Alt+a对应到a :map a • 令Ctrl+Alt+a对应到

halazi100 502

Vim映射冲突终极指南:使用:map命令快速检测和解决快捷键重叠问题 [特殊字符]

Vim作为一款强大的文本编辑器,其快捷键映射功能让用户可以高度自定义编辑体验。然而,随着自定义快捷键的增加,**Vim映射冲突**问题常常让用户感到困扰。本指南将教你如何使用`:map`命令快速检测和解决这些冲突问题,让你的Vim配置更加清晰高效。✨ ## 什么是Vim映射冲突? **Vim映射冲突**指的是多个快捷键被映射到相同的按键组合,导致预期外的行为。想象一下,当你按下`<leader

gitblog_00589的博客 1072

vim的map功能

Map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。 vim里最基本的map用法也就是 :map c a 这里把c映射成了a,在map生效的情况下,按下c就等同于按下了a 当然,常用的Ctrl,Shift,Alt自然也是支持的。 令Ctrl+a对应到a :map C-a> a

climbs的专栏 1957

vim插件管理器Vundle.vim

下载地址:https://github.com/VundleVim/Vundle.vim git安装 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim git下起来好慢的感觉,可以直接用zip包,下载解压到目录:~/.vim/bundle/Vundle.vim unzip Vundl...

qq_35845964的博客 740

vim/vi的使用(Ubuntu12.04)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33795806的博客 139

vim的几种模式和按键映射

Map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。 vim里最基本的map用法也就是: :map c a 这里把c映射成了a,在map生效的情况下,按下c就等同于按下了a 当然,常用的Ctrl,Shift,Alt自然也是支持的。 令Ctrl+a对应到a :map C-a> a

不二的AI笔记 1863
上一篇: linux下搭建ipv6的pppoe server端
下一篇: 购房切身20问题整理
macrohasdefined
博客等级 码龄15年 44粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值