zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    POJ2395 Out of Hay
    POJ2421 Constructing Roads
    POJ2031 Building a Space Station
    POJ1751 Highways
    [NOIP2007] 提高组 洛谷P1099 树网的核
    [NOIP2007] 提高组 洛谷P1005 矩阵取数游戏
    [NOIP2007] 提高组 洛谷P1097 统计数字
    [NOIP2007] 提高组 洛谷P1098 字符串的展开
    [NOIP2007] 普及组
    洛谷 通天系列 P1760 P1757 P1759
  • 原文地址:https://www.cnblogs.com/meihao1203/p/8367279.html
Copyright © 2011-2022 走看看