VIM常用指令

VIM的初步认识

不是很了解VIM的可以先去看看这篇文章Linux字符界面与VI编辑器
你会发现VIM和VI只差了一个M字,是否它们两者有什么关系?对的你们有猜错,它对 Vi 作了 许多 增强: 多层撤销, 多窗口, 多缓冲区(buffer), 高亮度语法显示, 命令行编辑, 文件名匹配, 在线帮助, 可视选定, 等等. 用 ":help vi_diff.txt" 看 Vim 和 Vi 的差别 的 摘要(以上这句话摘自CentOS7 VIM帮助文档,查看这个文档可以在终端界面下输入$ man vim进行查看,要是不知道终端是什么,请查看上面那篇文章)。

VIM的四种模式与VI的三种模式

实际上VIM的模式与VI的模式是一样的,不过VIM比VI多了一种可视模式。不过我个人觉得VI的三种模式比VIM的四种模式在命名更形象一些,所以接下来的文章使用了VI的模式名称。


  • VI的三种模式
    • 指令模式:输入指令以及移动光标时使用
    • 文本输入模式:对文本内容进行编辑
    • 末行模式 :文字编辑辅助功能,比如字符串修改,替代,保存文件等。

  • VIM的四种模式
  • 正常模式:等价于VI的指令模式
  • 文本输入模式:等价于VI的文本输入模式
  • 命令模式:等价于VI的末行模式
  • 可视模式:这是VIM比VI多出来的一种模式,正常模式下输入v进入可视模式,然后移动光标,光标选中的区域会高亮,最后用操作命令对选中的区域进行操作。

VIM常用指令(新手推荐在字符界面下使用$ vimtutor指令,该指令是VIM文本编辑器的教程,帮助快速上手VIM。)

注意:本文编写时没有注意中英文的切换,可能存在中文字母、字符,不建议Ctrl C,Ctrl V。


  • VIM进入和退出
  • vim(字符界面):打开VIM文本编辑器
  • vim 文件名(字符界面):若存在该文件,则打开该文件,若不存在,则创建该文件(注意,创建的文件是先保存在缓存中,编辑完成后输入保存指令,才会保存在磁盘中)
  • :q!:不保存文本,强制退出VIM程序
  • :wq:保存修改并退出
  • :wq a.txt:保存文件,文件名为a.txt
  • :w 文件名:文件另存为

  • 移动指令
  • h:光标左移一位
  • l:光标右移一位
  • j:光标向下移动一行
  • k:光标向上移动一行
  • w:从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符
  • e:从当前光标当前位置直到单词末尾,包括最后一个字符
  • 0:光标返回行首
  • Page Up:向上翻页
  • Page Down:向下翻页
  • ctrl f : 向下翻页
  • ctrl b : 向上翻页

文本编辑指令


  • 文本插入指令
    • i:在光标前插入文本,指令模式下输入i会进入文本输入模式
    • I:与i一样
    • A:在光标所在行的末尾插入内容,指令模式下输入A会进入文本输入模式
    • a:在光标后插入文本,指令模式下输入a会进入文本输入模式
    • o:在光标所在行的下方插入一行,指令模式下输入o会进入文本输入模式
    • O:在光标所在行的上方插入一行,指令模式下输入O会进入文本输入模式

  • 文本删除指令
    • x:删除光标位置的字符
    • d motion:删除操作符d,需要配合动作(motion)一起使用,下面试动作,使用方法例如:dw、de
      • w:从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符
      • e:从当前光标当前位置直到单词末尾,包括最后一个字符
      • $:从当前光标当前位置直到当前行末
    • dd:删除整行

  • 撤销类指令
    • u:撤销上一次的操作
    • U:撤销对整行的操作
    • Ctrl+R :撤销掉撤销命令

  • 置换类指令
    • p:将最后一次删除的内容置入光标之后
    • r+字符:将光标当前位置的字符,用新输入的字符去替换
    • R :指令模式下输入R,进入替换模式,可以连续替换多个字符,直到ESC退出该模式

  • 更改类指令c(与删除类操作符d一样,语法c motion(动作))
    • cw:从光标开始,改变文本直到一个单词的末尾(我练习的时候体会不出cw和ce的区别,望知道的朋友告知一下)
    • ce:从光标开始,改变文本直到一个单词的末尾
    • c$:从光标开始,改变文本直到该行末尾

  • 替换指令(末行模式)
    • :s/old/new:替换所在行第一个匹配串,第一个old被new替换
    • :s/old/new/g:替换全行的匹配串,全行的old被new替换
    • :#,#s/old/new:其中 #,# 代表的是替换操作的若干行中首尾两行的行号。
    • :%s/old/new/g:替换整个文件中所有匹配串
    • :%s/old/new/gc:找到全文所有的匹配串,并逐一询问是否替换

  • 使用计数指定动作(所有动作指令前都可指定数字,表示该动作执行的次数)
  • 简单的例如h、l、j、k操作前加数字。2h-光标左移两位。2j-光标下移两行
  • d number motion:如d2e,删除从光标开始到单词末尾,该操作执行两次
  • c number motion:如c2e,更改从光标开始到单词末尾,该操作执行两次

  • 定位及文件状态
  • Ctrl+g:显示文件名以及光标的位置
  • G:光标跳转到文件最后一行
  • gg:光标跳转到文件第一行
  • 行数 + G:光标跳转到输入的行数

  • 搜索类命令
  • /(命令模式下) +需要搜索的字符:如/error,正向搜索error字符
  • ?+需要搜索的字符:逆向搜索字符
  • n:下一个相同的字符
  • N:上一个相同的字符
  • :set ic(Ingore Case):设置搜索时忽略大小写选项
  • :set noic:设置搜索时禁用忽略大小写选项
  • :set hls(hlsearch):设置所有匹配项高亮选项
  • :set nohls:关闭所有匹配项高亮
  • :set is(incsearch):输入/指令后,输入字符直接匹配内容(边输字符边查找)
  • :set nois:输入/指令,并且输入字符按下回车键后才匹配字符(输入完毕后再查找)
  • Ctrl+o:光标回退到之前的位置
  • Ctrl+i:光标跳转到较新的位置
  • %:用来查找相配对的括号,需要将光标停留在括号上,例如光标在(上,输入%,光标会自动跳到与之相对应的)上

  • 在VIM内调用外部命令的方法(末行模式下)
  • :!+外部命令:例如:! ls,列举当前目录

  • 提取和合并文件
  • :r 文件名:例如r a.txt,在当前文本光标后插入a.txt文本的内容
  • :r ! 外部命令:例如 :r ! ls,在光标后插入外部命令返回的结果

  • 可视模式的命令(指令模式下输入v进入可视模式)
  • 截取部分内容保存到另一个文件中
1.  按 v 键进入可视模式,移动光标。您会注意到光标之间的文本被高亮了。
2.  然后按 : 字符。您将看到屏幕底部会出现 :'<,'> 。
3.  现在请输入 w TEST,其中 TEST 是一个未被使用的文件名。确认您看到了:'<,'>w TEST 之后按 <回车> 键。
4.  这时 Vim 会把选中的行写入到以 TEST 命名的文件中去。使用 :!dir 或 :!ls确认文件被正确保存。
  • 复制粘贴文本
1.  指令模式下输入v进入可视模式
  1. 移动光标,使得需要复制的内容高亮
  2. 输入y,复制选中内容
  3. 移动光标到需要粘贴的位置,输入p粘贴

  • 启用VIM特性
    Vim 的功能特性要比 Vi 多得多,但其中大部分都没有缺省启用。为了使用更多的
    特性,您得创建一个 vimrc 文件。

    1. 开始编辑 vimrc 文件,具体命令取决于您所使用的操作系统:
      :edit ~/.vimrc 这是 Unix 系统所使用的命令
      :edit $VIM/_vimrc 这是 MS-Windows 系统所使用的命令
    2. 接着读取 vimrc 示例文件的内容:
      :r $VIMRUNTIME/vimrc_example.vim
    3. 保存文件,命令为:
      :write

    下次您启动 Vim 时,编辑器就会有了语法高亮的功能。
    您可以把您喜欢的各种设置添加到这个 vimrc 文件中。
    要了解更多信息请输入 :help vimrc-intro


  • VIM补全功能
    1. 指令模式下输入:e(不要按回车)
    2. Ctrl+d,显示所有以e开头的选项
    3. Tab切换选项

  • VIM帮助
  • :help:帮助命令
  • F1:帮助
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345

推荐阅读更多精彩内容

  • Vim几句话介绍Vim是Unix系统上的文本编辑软件(你该不会不知道什么是文本编辑软件吧!),在windows上也...
    何必遠方阅读 3,124评论 0 3
  • vi(vim)可以说是linux中用得最多的工具了,不管你配置服务也好,写脚本也好,总会用到它。但是,vim作为一...
    梁世勇阅读 1,563评论 2 12
  • 自我总结篇: 对文件的操作技巧: vim文件一个有三种状态:命令(浏览/输入命令转变末行模式),文本(添加/编辑/...
    小知大知阅读 789评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,720评论 0 10
  • 本文摘自https://www.cnblogs.com/yangjig/p/6014198.html 感谢原作者的...
    荣子3507阅读 322评论 1 0