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

基本模式:
  1.命令模式 2.输入模式 3.末行模式

    输入模式-->命令模式:
       ESC


    命令模式-->末行模式:
       :


    末行模式-->命令模式:
       ESC



基本操作:

vim filename

 +#  打开文件后 让光标处于#行的行首
 +/PATTERN    打开文件并使光标处于第一个匹配到的行的行首
 
 1.模式转换:
     默认命令模式-->输入模式
  i   insert 光标所在处输入
  a   append 光标所在处后方输入
  O   光标所在 上方新建一行
  o   光标所在 下方新建一行
  I   光标所在行 行首输入
  A   光标所在行 行尾输入
  

 2.关闭文件:
  ZZ:保存并退出  命令模式下
  
  :q   退出
  :q!  强制退出  不会保存编辑操作
  :wq  保存并推出
  :x   保存并退出
  
  :w  /PATH 另存为 
 
 3.光标跳转:
  字符间跳转:
   h左  j下  k上  l右  #前可加数字# 表示跳转#个单位字符
  单词间跳转:
   w 下一个单词 词首
   b 前一个单词 词首   若不在 当前单词词首 则先跳转到当前单词词首
   e 下一个单词 词尾   同上
        #前可加数字# 表示跳转#个单词
  行首行尾跳转:
   ^ 跳转至行首 第一个 非空白字符处
   0 跳转至行首 TAB除外
   $ 跳转至行尾
  行间跳转:
   #G 跳转至#号行
   1G|gg    第一行
   G   跳转至最后一行
   
  句间跳转: 支持加数字
   )
   (
  段间跳转: 支持加数字
   }
   {
   
   
 4.翻屏:
  ctrl+f 向文件 尾部 翻一屏
  ctrl+b 向文件 首部 翻一屏
  
  ctrl+d 尾部 半屏
  ctrl+u 首部 半屏
  
  enter:按行向后翻




 
*** vim命令模式下:


 1.字符编辑符
  x 删除 光标所在处 字符       向后
  #x  删除 光标所在处 向后#个字符
 
  xp 交换 光标所在处 与其后一个字符 的位置
 
 2.替换
  r+CHAR  替换光标所在处字符
 
 3.删除(delete)
  d 删除 可结合光标跳转字符
  dd 删除 光标所在行       #dd 加数字 删除共#行
   d$:  删除 光标所在处到 行尾的字符
   d^:  删除 光标所在处到 行首的字符
   d0:  删除 光标所在处到 "行首"的字符
     
   dw  |
   de  | 结合 跳转字符 选定区域
   db  |
   删除的内容保留在缓冲区 可粘贴最后一个



 4.复制(yank)
  y 复制,
  yy 复制整行
   y$
   y^
   y0
  类似d删;   
   ye  |
   yb  | 结合 跳转字符 选定区域
   yw  |



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


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




*** 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 全行替换    因为默认只匹配每行的第一个
   
   
   
   
   
 例   :%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,此时屏幕上原来的匹配已取消.