1. 退出VIM,在shell下编译&&运行程序

:wq
[root@fsjohnhuang ~]# gcc main.c -o main
[root@fsjohnhuang ~]# ./main

  2. 在VIM的命令行模式下编译&&运行程序

:!gcc % -o main
:!./main

  3. 快捷键绑定一键编译&&运行程序

:map <F5> <ESC>:w<CR> <ESC>:!gcc % -o %< && ./%<<CR>

以后我们只需在命令模式下按<F5>即可实现程序的编译&&运行了!

  现在我们知道通过:map我们可以自定义快捷键,那仅知道这些就足矣了吗?如果不是那请继续看下文吧!

  通过ESC进入VIM的命令模式,这里我们可以输入VIM命令(以:开头,如:map)和外部命令(以:!开头,如:!ls)。

绑定快捷键

    :map命令就是将一连串操作绑定到指定的快捷键,语法格式: :map <快捷键> <命令组>

    <快捷键>,各功能键和组合键均可作为快捷键,并且均可通过VIM内置的键盘映射来指定(如上面提到的<ESC>则是Escape键的映射,<CR>则是回车键的映射,<C-Esc>代表Ctrl-Esc和<S-F1>表示Shift-F1等)。具体的键盘映射信息可通过在命令模式下执行 :h key-notation 查看。

    

    <命令组>,按下<快捷键>后依次执行的命令组。其中%占位符用于表示当前操作的文件全称,而%<占位符表示当前操作的文件名称(不带扩展名)。

 查看已绑定的快捷键  :map

  

上图我们看到x,s,o,n,v等字母,这些是啥意思呢?

  还记得VIM的几个工作模式(Normal,Visual,Select,Command-line,Operator pending, Insert only)吗?而上面的x,s,o等就是指出所属行的快捷键仅作用于某模式下。

标记                             模式

    <space>       常规模式,可视化模式,运算符模式

n                             常规模式

v                            可视化模式

o                           运算符模式

!                     插入模式,命令行模式

i                              插入模式

c                            命令行模式

那么如何列出指定模式下的已有快捷键呢?

 
:nmap - Display normal mode maps
:imap - Display insert mode maps
:vmap - Display visual and select mode maps
:smap - Display select mode maps
:xmap - Display visual mode maps
:cmap - Display command-line mode maps
:omap - Display operator pending mode maps
 

  也就是可通过 :nmap , :map! 等来在指定的工作模式绑定快捷键。

 解除快捷键绑定  :unmap <快捷键>

  :iunmap <快捷键> 仅解绑插入模式下的快捷键,如此类推

 解除所有快捷键绑定(用户定义的和系统默认的) :mapclear

Thanks                          

http://www.pythonclub.org/linux/vim/map

http://www.pythonclub.org/linux/vim/map

http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_%28Part_1%29

vim 快捷键绑定的更多相关文章

  1. Vim魔法堂:认识快捷键绑定

    Brief 习惯在VS上按<F5>来编译运行程序,刚用上VIM上就觉得无比的麻烦,而随着对VIM的学习我们分阶段的简化这一操作 1. 退出VIM,在shell下编译&&运行 ...

  2. [No00004F]史上最全Vim快捷键键位图(入门到进阶)

    史上最全Vim快捷键键位重磅来袭!!学习Linux的朋友看过来啦,你是不是觉得Linux编辑器Vim操作复杂,步骤繁琐呢?Linux工程师是不是想大幅度提升自己的工作效率呢? 经典版        下 ...

  3. vim快捷键总结

    直接上图 原图地址:vim快捷键

  4. vim快捷键笔记【原创】

    Vim zR  全部展开 zM全部合并 vim  快捷键 shift   +  i      (‘I’)    进行编辑 shift   +  4     (‘$’)    跳到行尾 shift   ...

  5. VIM快捷键(转)

    VIM快捷键:光标移动:四个方向   kh 0 l   j  ctrl+f, ctrl+b                 向下翻页,向上翻页  ctrl+d, ctrl+u              ...

  6. 必须熟悉的vim快捷键操作

    转载请表明出处http://www.dabu.info/?p=801 Vim/Vi 没有菜单,只有命令 Vim/Vi 工作模式介绍:插入模式 和  命令模式 是vi的两个基本模式.——插入模式 ,是用 ...

  7. Linux vim快捷键

    1  替换    r  替换  先按r再按要替换的内容 2  按yy复制当前行  按p是粘贴 3 # add at 18-10-25 #-------------------------------- ...

  8. 转: Vim快捷键分类

    Vim快捷键分类 http://www.cnblogs.com/jikey/archive/2011/12/28/2304341.html  一. 移动:    h,j,k,l: 左,下,上,右.   ...

  9. [No00004F]史上最全Vim快捷键键位图(入门到进阶)vim常用命令总结

    在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行.你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format.使 ...

随机推荐

  1. hdu 2955 Robberies (01背包)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 思路:一开始看急了,以为概率是直接相加的,wa了无数发,这道题目给的是被抓的概率,我们应该先求出总的 ...

  2. opencv 仿射变换

    import cv2 as cv import numpy as np img = cv.imread('../images/face.jpg') h, w = img.shape[:2] mat_s ...

  3. Configure new Nagios clients

    安装rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmrpm -Uvh http:// ...

  4. Android 2019最新面试实战总结

    Android: 今日头条屏幕适配的原理? 1:首先计算出 density,计算公式:当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = densitydensity 的意思就是 1 ...

  5. Hdoj 1312.Red and Black 题解

    Problem Description There is a rectangular room, covered with square tiles. Each tile is colored eit ...

  6. 查看Ubuntu的显卡信息

    lspci -vnn|grep VGA -A 12 查看openGL信息: sudo apt install mesa-utils glxinfo|grep OpenGL -A 12

  7. nio再学习之通道channel

    通道(Channel):用于在数据传输过程中,进行输入输出的通道,其与(流)Stream不一样,流是单向的,在BIO中我们分为输入流,输出流,但是在通道中其又具有读的功能也具有写的功能或者两者同时进行 ...

  8. redis执行lua文件

    1.编写lua文件 还lua表示循环插入1-100的键为1-100值为1-100的键值对到redis中 for i=0,100 do redis.call("set",i,i) e ...

  9. PKUWC2019滚粗记

    真的不想说些什么了,还是自己太菜了,水平低啊.深深感受到NOIP2017以后的那种绝望,这最好的签约清北的机会,就这样白白错过了.本以为自己的应该有NOIAg的实力,运气好是前120吧,没想到自己还是 ...

  10. 第三篇-Django建立数据库各表之间的联系(下)

    中篇介绍的是添加,下篇主要介绍查询 通过一个Book表的书的信息查询Publish表中出版社的信息 def addbook(request): # Book.objects.create(name=& ...