vim命令汇总
文章首发:http://www.cnblogs.com/sprying/p/3864631.html
上一次学习vim还是快一年了,倒腾了一个月之后就没碰过。现在重新汇总下vim命令。
1、有些命令回车后才有效果
2、vim编辑有三个状态:Normal、Insert、Visual
打开文件
Normal模式下
:e:vi
保存关闭文件
:w:q:wqZZ保存和退出:q!放弃修改并退出:qa!强制退出所有打开的文件:close:close[!]最后一个窗口不关闭:hide最后一个窗口不关闭,可以关闭当前屏幕窗口。:on[ly][!]除了当前窗口所有其他窗口都关闭。
缓存操作
:ls显示缓存:b [filename]打开缓存文件:bn(n a number) move to nth buffer 打开指定数字的缓存:bpprevious buffer 打开上一个缓存:bnnext buffer 打开下一个缓存
移动光标
w下一个词的首字母W下一个词(跳过标点)b当前词的首字母B前一个词(跳过标点)e当前词的尾端E当前词的尾端(跳过标点)
注意: w e 是以字母、数字、_组成的为单词, 若要以blank空格符,用大写

h左移一字符l右移一字符j下移一行k上移一行gd调到光标所在词定义位子go definegg到文档顶部G到文档底部xggxG:x到第x行(x是行号)10%移动到文件大约10%的行位置Ctrl + d下翻半屏Ctrl + u上翻半屏Ctrl + f下翻一屏Ctrl + b上翻一屏Ctrl + g查看文件url、行数信息H命令移动光标到视野内的第一行,M移动到视野内的中部,L移动光标到视野内的最后一行。
移动屏幕
光标所在的行位不变
Ctrl + e上滚一行Ctrl + y下滚一行zt命令将光标所在行移动到屏幕的顶部,zz命令将光标所在行移动到屏幕的中部,zb将光标移动到屏幕的底部。nz回车,将第n行滚动至屏幕顶部
插入
i光标位置前插入I行首字符前插入a光标位置后插入A本行末尾插入o向下插入一行O向上插入一行
删除
xdl光标下的字符Xdh删除光标前字符dw删除当前光标下的词,由光标位置起,不包括光标位字符dbdednl向右删除n个字母dnh向左删除n个字母d$D删除光标到行尾dd删除当前行dnj向下删除n行dnk向上删除n行dG从当前光标位置一直删除到文件的末尾dgg从当前光标位置一直删除到文件的开始6dw删除6个worddiw删除光标上的单词(不包括空格)daw删除光标上的单词(包括空格)df从当前光标位置上的字符一直删除到指定的字符(包括指定字符)dt从当前光标位置删除到指定字符的前一个字符J删除换行符,合并两行%s/\s\+$//删除全文行尾空格,%表示作用于整个文件,//表示替换的是空白%s/^\s\+//删除全文行首空格
撤销和重做
u撤销Uctrl + r恢复撤销
自动提示
在Insert模式下,输入字符,Ctrl p或Ctrl n代码提示
修改
cl(s) ch c3w cb ciw caw df dt cc(S) c$(C) cG
复制粘贴
yyY复制当前行yw复制当前光标下的词yG拷贝到文件的末尾ygg拷贝到文件的开头0y$y2/foo拷贝2个foo之间的字符串p粘贴P粘贴在当前位置之前Go
替换
| 预定义类 | 含义 |
|---|---|
:s/old/new |
将当前行中查找到第一个字符”old”串替换为”new” |
:s/old/new/g |
将当前行中查找到的所有字符串”old”替换为”new” |
:#,#s/old/new/g |
在行号”#,#”范围内替换所有的字符串”old”为“new” |
:%s/old/new/g |
在整个文件范围内替换所有的字符串”old“为”new” |
:s/old/new/c |
在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认 |
r输入字符替换光标下的字符,然后返回Normal模式, 如果光标选中一段字符,输入的一个字符会替换选择。nr输入字符会替换光标起的n个字符R会一直替换,按delete还原。 如果选中几个字符,则会进入visual模式,删除当前行,进入Insert模式。:s/p1/p2/g当前行中所有p1均用p2替代:n1,n2s/p1/p2/g将第n1至n2行中所有p1均用p2替代g/p1/s//p2/g将文件中所有p1均用p2替换
搜索
/XXXX搜索xxxx,可以用n下一个,N上一个,2n下第二个/di可查找到media/^di只匹配行首/di$只匹配行未/^di$仅仅匹配包括di的行并不带空格/d.i匹配第一个字符是d,第二个字符任意,第三个是i的字符串/di\.匹配带特殊字符.的字符串di.#向前搜索光标当前所在的字,向后查找当前光标的第2个单词,可以输入”2#“*向后搜索光标当前所在的字fa查找当前行光标所在位置的下一个f(ind) a,这里f可用tFa查找当前行光标所在位置的上一个a
标记和宏(macro)
ma将当前位置标记为a,26个字母都可以作为标记,mb、mc等等‘a跳转到a标记的位置qa将之后的操作都记录下来,直到继续按q@a执行刚刚记录在a里面的键盘操作@@执行上一次的macro操作Ctrl a 数字加1 qaYp<C-a>q 1. qa开始录制
2. Yp 复制行.
3. \<C-a\> 增加1.
4. q 停止录制.
5. @a → 在1下面写下 2
6. @@ → 在2 正面写下3 现在做100@@ 会创建新的100行,并把数据增加到 103.
高效编辑
di*光标在""之前或之中,则删除""之间的内容yi{光标在{}之前或之中,则复制{}之间的内容vi[光标在[]之前或之中,则选中[]之间的内容i代表inner,可编辑的光标有'、"、()、[]、{}、<>,i可替换成a,就连配符号一起操作dtx删除字符直到遇见光标之后的第一个x字符ytx复制字符直到遇见光标之后的第一个x字符:n1,n2 co n3将n1行到n2行之间的内容拷贝到第n3行下:n1,n2 m n3将n1行到n2行之间的内容移至到第n3行下:n1,n2 d将n1行到n2行之间的内容删除:n1,n2 w!command将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入:r!command将命令command的输出结果放到当前行5w相当于按五次w键;6j下移6行,相当于按六次j;3J大写J,本来是将下一行与当前行合并,加上数量,就是重复操作3次;6dwd6w结果是一样,就是删除6个word;
剩下的无数情况,自己类推吧
显示页码
:set nu:set nonu
其它
~修改选中的字符的大小写,原来大写的转换成小写,原来小写的转成大写。在Visual模式和Normal模式下都能生效。 注意,只有tiledeop设置后,这个才能成为一个操作命令,才可用该命令与其他光标移动的命令组合使用。g~ 修改选中的字符的大小写操作命令,原来大写的转换成小写,原来小写的转成大写。gu修改选中的字符为小写操作命令。gU修改选中的字符为大写操作命令。!过滤警告操作命令gq选中文本格式化,文本拼接组合成句子或段落命令。在Normal模式和Visual模式下都能生效。>选中文本向右Tab缩进。在Normal模式和Visual模式下都能生效。<选中文本向左Tab缩进。在Normal模式和Visual模式下都能生效。=操作:选中文本自动缩进。 按v进入visual状态,选择多行,用>或<缩进或缩出
vim命令汇总的更多相关文章
- linux下vim命令汇总
一. 进入vi的命令 vi filename : 打开或新建文件,并将光标置于第一行首 vi +n filename : 打开文件,并将光标置于第n行首 vi + filename : 打开文件,并将 ...
- vim常用命令汇总
vim常用命令汇总: http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html 定位 本行第一个字符 ctrl+$ ...
- [svc][op]vim常用命令汇总
vim常用命令汇总: 定位 本行第一个字符 ctrl+$ 本行最后一个字符 0gg 文章首行 ctrl+G 文章行尾 u 撤销(Undo) 删除 D 从当前位置删除到行尾 ("d$" ...
- 20145222《信息安全系统设计基础》Linux常用命令汇总
学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ...
- 73条日常Linux shell命令汇总,总有一条你需要!
转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...
- 常用Git命令汇总
常用Git命令汇总 跟着R哥来到了新公司(一个从硬件向互联网转型中的公司),新公司以前的代码基本是使用SVN做版本控制,甚至有些代码没有做版本控制,所以R哥叫HG做了一次Git分享,准备把公司所有的代 ...
- 【Linux】Linux 常用命令汇总
查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包:dpk ...
- linux命令汇总1
允许非root用户使用“sudo” root身份登录系统,执行“visudo”,根据示例添加新的一个规则(记住输入的密码是当前用户密码,而不是root密码)#不需要密码执行sudo命令hadoop ...
- [转帖]Linux企业运维人员最常用150个命令汇总
Linux企业运维人员最常用150个命令汇总 https://clsn.io/clsn/lx998.html 基本上都用过了. 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的 ...
随机推荐
- 浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)
一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等. ...
- laravel中的验证及利用uploadify上传图片
$rules = [ 'password'=>'required|between:6,20|confirmed', ]; $message = [ 'password.required'=> ...
- 使用 FireMonkey 构建优秀专业 Android 应用的10点提示
原文链接:http://www.firemonkeyx.com/ten-tips-for-building-stunning-professional-android-apps-with-firemo ...
- Session概述
session即HttpContext.Session 属性,命名空间System.Web 我们都知道,Cookie信息全部存放于客户端,Session则只是将一个ID存放在客户端做为与服务端验证的标 ...
- 跨DLL操作fopen的返回值导致出错
在设置成/MD或/MDd不会导致出错 设置成/MT或/MTd的情况下会导致出错 看了CRT的实现,估计是因为fopen创建了CriticalSection来保护文件,但是在/MT的情况下,一个DLL里 ...
- 【Selenium专题】FAQ_浏览器_ChromeDriver版本导致报错
报错信息 Started ChromeDriver port=31984 version=23.0.1240.0 log=C:\workspace\test\chromedriver.log [063 ...
- 动态添加select的option [转载]
动态给select标签添加option,结合前人经验以及自己经验,现在总结三种方法供大家参考,一起交流学习!首先是定义的select元素://根据ID获得select元素 var mySelect = ...
- 面对对象二,super......反射
一.super() super() : 主动调用其他类的成员 # 单继承 # 在单继承中 super,主要是用来调用父类的方法的. class A: def __init__(self): self ...
- 点击按钮添加一行,和本行的删除功能,序号变动,name属性更改
<!--html结构--> <div> <input type="button" value="添加一行" onclick=&qu ...
- UItextfield各个通知和回调的顺序
成为第一响应者之前,调用delegate的textFieldShouldBeginEditing(_:)方法 成为第一响应者 发送通知UIKeyboardWillShow和UIKeyboardDidS ...