vim编辑器

vim编辑器    模式化编辑器                                           #vimtutor    vim自带练习教程 !

基本模式:
        1.命令模式 2.插入模式 3.扩展模式
  
#vim filename
    +#  打开文件后 让光标处于#行的行首
    +/PATTERN    打开文件并使光标处于第一个匹配到的行的行首
    +  file    直接打开file,光标在最后一行
    -b file    二进制方式打开文件
    -m file    只读打开文件

    -d file1 file2…   比较多个文件

 锁定和解锁:CTRL+s,Ctrl+q

===基本操作:

 1.模式转换:
    命令模式(默认)==> 插入模式
  
     i:     insert 光标所在处输入
     I:    光标所在行行首输入
    a:    append 光标所在处后方输入
    A:    光标所在行行尾输入
    o:    光标所在下方新建一行
    O:    光标所在上方新建一行

  插入模式–>命令模式:
    ESC

  插入模式–>扩展模式:
    :

  扩展模式–>命令模式:
    ESC
 
 2.保存退出文件:
    命令模式下
        ZZ:保存并退出 
        ZQ:不保存退出
  
   扩展模式下:
        :q  退出
        :q! 强制退出  不会保存编辑操作
        :wq 保存并推出
        😡  保存并退出
            :w  /PATH 另存为
 
 
 3.光标跳转:    命令模式下:
  字符间跳转:
        h左  j下  k上  l右  #前可加数字# 表示跳转#个单位

  单词间跳转:
        w 下一个单词 词首
        b 前一个单词 词首   若不在 当前单词词首 则先跳转到当前单词词首
        e 下一个单词 词尾   同上
        #前可加数字# 表示跳转#个单词

  行首行尾跳转:
        ^ 跳转至行首 第一个 非空白字符处
        0 跳转至行首 TAB除外
        $ 跳转至行尾

  行间跳转:
        #G 跳转至#号行
        1G|gg    第一行
        G   跳转至最后一行
   
  句间跳转: 支持加数字
        )
        (
  段间跳转: 支持加数字
        }
        {
  
  当前页跳转:
        H:页首
        M:页中间行
        L:页底 
   
 4.翻屏:
        ctrl+f 向文件 尾部 翻一屏
        ctrl+b 向文件 首部 翻一屏
  
        ctrl+d 尾部 半屏
        ctrl+u 首部 半屏
  
        enter:按行向后翻
  
  

=== vim命令模式下:

 1.字符编辑
        x 删除 光标所在处 字符       向后
        #x  删除 光标所在处 向后#个字符
 
        xp 交换 光标所在处 与其后一个字符 的位置
  
        ~ 转换大小写

 2.替换
        r  CHAR  替换光标所在处字符
        R    切换成REPLACE模式
 
 3.删除(delete)
        d 删除 可结合光标跳转字符
        dd 删除 光标所在行       #dd 加数字 删除共#行
        d$:  删除 光标所在处到 行尾的字符
        d^:  删除 光标所在处到 行首的字符
        d0:  删除 光标所在处到 "行首"的字符
        D:从当前光标位置一直删除到行尾,留空行,等同于d$
   
        dG 删除 当前光标位置到 尾行
         dg 删除 当前光标位置到 首行
     
        dw  |
        de  | 结合 跳转字符 选定区域
        db  |
   删除的内容保留在缓冲区 可粘贴最后一个

 4.复制(yank)
        y 复制,
        Y 复制整行
        yy 复制整行
        y$
        y^
        y0

  类似d删;   
        ye  |
        yb  | 结合 跳转字符 选定区域
        yw  |

 5.粘贴(paste)
    小写p 粘贴缓冲区(包括d最后删除的行) 中的内容如果为 整行粘至 光标所在行 下一行,
        否则粘贴到 光标所在处 后方
    大写P   粘贴缓冲区(包括d最后删除的行) 中的内容如果为 整行粘至 光标所在行 上一行,
        否则粘贴到 光标所在处 前方

 6.改变(change)   编辑模式–>插入模式
        c 对 选定区域 执行操作后,进入 插入模式
        cc  删除 整行并进入 插入模式
        c$
        c^
        c0
   
        cb   |
        ce   | 结合 跳转字符 选定区域
        cw   |
  
 7.可视化模式(visualization)   类似 鼠标选定 效果; 选定区域后可执行操作
        v 按 字符 选定
        V 按 行   选定
        ctrl v  块选定
  
      结合编辑命令 d,p,c 执行相应操作
 
 8.撤销(undo)
        u 撤销上一步操作    可连续执行  默认50个
        #u 撤销此前 #次操作   结合数字    3u:撤销最近3次操作
        U 撤销光标所在行所有动作
  
 9.恢复(recovery);    撤销 之前的撤销
        Ctrl+r
 
 10.重复执行上一步操作  点号
        "."
        #.    #次

= 100izhou [ESC] 粘贴 zhou 100次
 
 <start position>   CMD  <end position>
 Command: y 复制、d 删除、gU 变大写、gu 变小写
 例如 0y$ 命令意味着: 拷贝全文
  ye 从当前位置拷贝到本单词的最后一个字符
  
=  26个命名寄存器和 1个无命名寄存器,
 存放不同的 剪贴版内容,可以不同会话间共享。
 用a,b,…,z表示,用“寄存器表示,放在数字和命令之间
  如:3"tyy 表示复制3行到t寄存器中
  "tp  表示将t寄存器内容粘贴
 

=== vim扩展模式:     内建的命令行接口;

  命令模式下     ":" 进入

 1.定位
        #[,#]
        .             当前行
         %         全文
        # 特定第#行           :5     第5行
        #,# 指定范围行      :3,7   3到7行
   
        #,+#   指定起始行 及偏移量       
                 :4,+6   4到10行   :.,$  当前行到最后一行
     
        /pat/: 从光标所在处起始 向文件尾部第一个被匹配到的行
        /pat/,$  从光标起始 向文件首部
    
        /pat1/,/pat2/  从光标处起始,第一次pat1匹配到的行 到 第一次pat2匹配到的行
   
   选定区域 可结合编辑命令使用
        c 修改
        d 删除
        y 复制
        w /PATH  另存为
        r /PATH  将指定文件中的文本 读取插入指定位置
 
 
 2.查找
        /str          从光标处 向文件尾部 查找匹配的字符串
        ?str         从光标处 向文件首部 查找匹配的字符串
        n:         下一个,与命令方向相同
        N:        上一个,与命令方向相反
   
   
 3.查找并替换
        :s/要查找内容/替换为的内容/修饰符
            "要查找的内容": 可使用正则标表达式
            "替换的内容": 不能使用正则表达式    可引用
            "要查找的内容"使用了 分组,在"要替换的内容"中可后向引用
        s/pat/&str/g 未使用分组,可直接引用全部内容  &
  修饰符:
        i 忽略大小写
        g 全行替换    因为默认只匹配每行的第一个
 

:!command 不退出vi  执行某个命令
:r!command 读cmd的stdout到当前位置

==

 = 以二进制方式打开文件
   vim –b binaryfile
  扩展命令模式下,利用xxd命令转换为可读的十六进制
        :%!xxd  编辑二进制文件
  扩展命令模式下,利用xxd命令转换回二进制
        :%!xxd -r
 
 
= 同时打开多个文件: 
  vim FILE1 FILE2 FILE3 …
        :next 下一个
        :prev 前一个
        :first 第一个
        :last 最后一个
        :wall 保存所有
        :qall 退出所有
        :wqall 保存所有
   
 = 多文件分割 vim  -o|-O   FILE1 FILE2 …
        -o: 水平分割
        -O: 垂直分割
    在窗口间切换:Ctrl+w, 方向键
 
 = 单文件窗口分割:
        Ctrl+w,s: split, 水平分割
        Ctrl+w,v: vertical, 垂直分割
        ctrl+w,q:取消相邻窗口
        ctrl+w,o: 取消全部窗口
       :wqall 退出
   
***配置vim工作特性:

 配置文件:永久有效
    全局:/etc/vimrc
    个人:~/.vimrc

 (1) 行号
    显示:set number        简写为set nu
    取消显示:set nonumber  简写为set nonu
  
 (2) 括号成对匹配
    匹配:set showmatch, 简写为set sm
    取消:set nosm

 (3) 自动缩进
    启用:set ai
    禁用:set noai
  
 (4) 高亮搜索
    启用:set hlsearch
    禁用:set nohlsearch

 (5) 语法高亮
    启用:syntax on
    禁用:syntax off
  
 (6) 忽略字符的大小写
    启用:set ic
    不忽略:set noic
  
 (7) 文件格式
    启用:set fileformat=unix
    不忽略:set fileformat=dos
  
 (8) 设置文本宽度
    :set textwidth=65 (vim only)  从左起
    :set wrapmargin=15  从右起
  
    :set all 查看可用设置  :set
    :help 帮助文档
 
  
  
 例   :%s/zjj/Zjj/ig  
    全文中zjj  z改为大写,
    查找时不区分大小写
    一行中匹配的多个全部替换
    
 例   分隔符///可替换  @@@ ###
   :1,40s#/etc/passed#/etc/shadow#i
    1到40行内 /etc/passwd  替换为 /etc/shadow
    查找时不区分大小写
    每行只替换第一个被匹配到的
  
 例   %s@\<t\([[:alpha:]]\+\k)\>@T\1@g
    全文中 小写t开头的单词  全部换位大写T

=== 当查找完后,想去除 匹配的 高亮,与之对应有两种常用的方法:

        1. 命令模式下,匹配一个更长或内容上没有的内容,使之覆盖原有匹配.

        2.  扩展模式下,输入noh,此时屏幕上原来的匹配已取消.

原创文章,作者:Jasper,如若转载,请注明出处:http://www.178linux.com/31903