vim命令

vim(vimsual)是Linux/UNIX系列OS中通用的全屏编辑器
特点:
-vim是个强大的编辑器
-vim非常小
-vim稍微有些难学
vim分为两种状态,即命令状态编辑状态
在命令状态下,所键入的字符系统均作命令来处理,如:q代表退出,而编辑状态则是用来编辑文本资料的。当你进入vim时,会首先进入命令状态。在命令状态下,按”i”(插入)或”a”(添加)可以进入编辑状态,在编辑状态,按ESC键进入命令状态。
命令状态下,有如下一些常用命令:
新增:
        a         从光标后面开始添加文本
        A         从光标所在行的末尾开始添加文本
插入:
        i         从光标前面开始插入文本
        I         从光标所在行的开始处插入文本
删除与修改:
        x         删除光标处的字符
        dd        删除光标所在的整行
        3dd       删除光标所在行以及下面的两行
        D         删除光标到行尾的文本,常用语删除注释语句  (d$)

        u         撤销上次操作
光标移动:
        ^             光标移动到行首
        $             光标移动到行尾
        Ctrl+d        向下翻半页
        Ctrl+f        向下翻一页
        Ctrl+u        向上翻半页
        Ctrl+b        向上翻一页
        gg            光标定位到文档头
        G             光标定位到文档尾
        H             光标定位到当前页首
        L             光标定位到当前页的最后一行的行首
        w             光标往后移一个字
        b             光标往前移一个字
        [n]+          光标向后移动n行,[n]表示一个整数  10+
        [n]-          光标向前移动n行,[n]表示一个整数   10- 
        [n]G          光标定位到第n行行首, [n]表示一个整数 20G
        [n]$          光标定位到第n行行尾
查找与替换:
/[str]    查找字符串str,[str]表示要查找的字符串回车后会加亮显示所有找到的字符串,接着命令 n 移动到下一个找到的字符串,命令 N 移动到上一个找到的字符串 
eg :/hello   (:noh    取消查找到的高亮标记)

部分替换:   (只能替换光标之所在的行,只能替换一个)
:s/[src]/[dst] /i忽略大小写 /g全部匹配 
eg :s/hello/world/i     //替换当前光标所在行的第一个找到的hello为world
:s/hello/world/ig   //光标所在行的所有hello,区分大小写,全部替换为world。
(i只会修改每行找到的第一个,g会全部修改)
:3,6 s/[src]/[dst]/ig(3-6行中找)        
eg  :3,6 s/hello/world/g
(有一个问题,哪怕是一个单词中包含[src]的,也会替换)
:3,$ s/hello/world/g
// 替换第三行到文本最后一行中的所有hello为world
全部替换:
:%s/[src]/[dst]/g    将文档中所有src的字符串替换为dst字符串

:%s/^ //g     将文档每一行的行首的空格去掉

块操作:  
        v          可视化块选择状态,选中块之后,可以对块进行删除(d),复制(y),剪切(x)
        yy         复制光标所在的整行
        [n]yy      从光标开始往下复制n行,[n]表示一个整数
        p          将复制后的文本粘贴到光标处(会换行粘贴)
        u          撤销上次操作
结束编辑: 
      :q         在未修改文档的情况下退出
      :q!        放弃文档的修改,强行退出
      :w         文档存盘
      :wq        文档存盘退出
      :x         文档退出保存
其他:
        :help         命令 查看该命令的帮助提示
        :%!xxd        十六进制模式
        :%!xxd –r     返回文本模式  中间有一个空格的
如果在编辑过程中不小心按了Ctrl+s,vim会处于僵死状态,按 Ctrl+q 可以恢复。

执行  vim +3 main.c        //表示定位到main.c的第3行
执行  vim +/printf main.c  //表示定位到第一个printf处

在命令模式下输入 :new 2.c    //表示再打开一个vim,是横向的
vnew 2.c    //表示再打开一个vim,是纵向的
表示纵向也可以通过: split  vsplit  sp  vsp  //这几个命令都是把当前打开的文件分开,不会创建新的文件
两个窗口之间进行切换的方式:Ctrl+w 接着按  w  切换
在文件间切换:
ctrl+6 左边显示下一个文件(同时打开多个)
:bn 显示下一个文件
:bp 显示上一个文件
在命令模式中输入 gg=G 可以自动对齐

sed: 管道查找替换程序
cat a.txt | sed 's/aa/bb' > b.txt        //将a.txt中的aa替换成bb并重定向输出到b.txt中。

命令行中输入的 '|' 是用来隔开多个命令的,不然前面的命令会把后面的指令当成参数去了

ctrl + p 写代码的时候联想
 
" : %s/^M$//g "     
                        %指匹配整个文件
                        s是置换的意思
                        ^M要用ctrl+v+m 组合键敲入
                        $表示匹配行尾的内容
                        g表示每行中匹配到的内容都要置换
windows中的文件复制到LINUX中每行结尾多一个 ^M  原因是windows中换行是" ",而LINUX中是" ";所以显示一个异常字符,之所以要 ctrl+v+m 这样输入这个字符,是因为这个字符本来表示空;

vim 批量操作:

eg: 批量注释
▶用v进入virtual模式
▶用上下键选中需要注释的行数
▶按Control+v(win下面ctrl+v)进入列模式  (可以直接ctrl+v操作,免了前面两步)
▶按大写"I"进入插入模式,输入注释符"#"或者是"//"
▶然后立刻按下ESC(两下)

删除注释是选中按 d


原文地址:https://www.cnblogs.com/meihao1203/p/8367279.html