一、vim简介

  vim是vi的增强版,是一个模式化的编辑器,功能非常的强大。通常,vim共分为3中模式,分别是编辑模式、输入模式、和末行模式
  编辑模式:是vim的默认模式,通过vim打开文件一开始就是编辑模式,可进行删除,复制等操作
  输入模式:又叫插入模式,在该模式下输入的内容都会当做文本内容来使用
  末行模式:即在整个屏幕的最下方,在里面可以键入命令实现一些在编辑模式下无法实现的特性和功能,比如查找替换,行标显示等

  用vim打开文件的格式为:vim [options] /path/to/somefile 
  说明这里的路径可以省略,等文件内容写完在决定保存的路径也是可以的


 二、模式转换

  编辑模式-——>输入模式:
  i:insert,实现在当前光标所在处转换为输入模式
  a:append,实现在当前光标所在处字符后面转换为输入模式
  o:实现在当前光标所在行的下方新建一个空白行并转换为输入模式
  I:在当前光标所在行的行首转为输入模式
  A:在当前光标所在行的行尾转为输入模式
  O:在当前光标所在行的上方新建一行,并转换为输入模式

  输入模式——>编辑模式转换
   按下Esc键
  编辑模式——>末行模式
   键入“:”
  末行模式——>编辑模式
  一般要按两次Esc,Esc
  说明:输入模式到末行模式是无法直接实现的,只能先转换为编辑模式,然后在转换为末行模式


 三、光标跳转

  字符间跳转:


  h:向左
  l:向右
  j:向下
  k:向上
  在他们之前加上数字就可以实现向某个方向移动多少位,如:5h就表示向左侧跳5个字符,这些操作都是在编辑模式下实现的


 单词间跳转:

  w:跳至后一个单词的词首
  e:跳至当前或下一个单词词尾
  b:跳至当前或者前一个单词的词首
 句子间跳转:
  ):跳至下一句
  (:跳至前一句
 段落间跳转:
  }:跳至后一段
  {:跳至前一段
 行间跳转:
  1G:跳到第一行
  G:跳到最后一行
  #G:跳到某一行


 行内跳转:

  ^:跳到行首,跳到行首第一个非空白字符
  $:跳到行尾,绝对行尾
  0:跳到行首,绝对行首

四、文件处理

 

 关闭文件:
  在末行模式下进行
  :w 保存
  :q 退出
  :! 强制
  :wq 保存退出
  :q! 强制退出不保存
  :x 保存并退出
  :qall全部退出
  :w!强制保存
  :wall所有的都保存
  :wqall所有的保存退出
 在编辑模式下:
  ZZ:保存退出

 打开文件:
  vim [options] /path/to/file
  vim +# /path/to/file 打开文件光标直接定位到#行
  vim + /path/to/file 只有一个“+”号,打开文件光标直接定位到最后一行

 打开多个文件:
 格式:vim 文件1 文件2 文件3...
 多文件间跳转在末行模式下进行:
  :next下一个
  :last最后一个
  :first第一个
  :prev 前一个
 下面选项可实现多文件分割窗口格式为:vim [Option] 文件1 文件2 文件3...
  -O:垂直分割窗口
  -o:水平分割窗口
  文件间切换敲击ctrl+w然后按上下左右箭头


 编辑命令:
  x:删除单个字符
  #x:删除光标所在处向右几个字符
  删除命令d;
  dw:删除当前光标到单词尾的所有字符
  db:删除当前光标之前的单词
  de:删除光标之后的单词
  d^:删除光标到行首的所有字符
  d$:删除光标到行尾的所有字符
  dd:删除光标所在行
  #dd;删除光标所在行及向下#行

 在末行模式下使用d命令
  末行模式支持地址定界:
  用法: 起始地址,结束地址
    $:最后一行
    .:当前光标所在行
    %:全文
   1,7d:第一行到第七行删除
   %:表示全文
   1,$:也表示全文
   1,+6:第一行在向下数6行
   1,$-2:第一行到倒数第三行
   .,+3:当前行在向下3行

 编辑操作可撤销:
  u:默认会保存最近50次的操作,u命令可逐一撤销此前编辑的操作
  撤销此前的撤销:ctrl+r

 粘贴操作:
  p:
  删除的是整行:
   p:在当前光标所在行的下方粘贴
   P;大写P,在当前光标所在行的上方粘贴
  删除的不是整行;
   p:在当前光标所在处字符的后面粘贴
   P:大写P,在当前光标所在处字符的前面粘贴
 复制:用y键
  yy:复制一行
  #yy:复制#行
  y$:复制光标到行尾
  y^:复制光标到行首
  复制的是整行:
   p:在当前光标所在行的下方粘贴
   P;大写P,在当前光标所在行的上方粘贴
  复制的不是整行;
   p:在当前光标所在处字符的后面粘贴
   P:大写P,在当前光标所在处字符的前面粘贴
  通过vimtutor命令可以帮助学习vim 

 翻屏:
  ctrl+f;向文件尾部翻一屏
  ctrl+b:向文件首部翻一屏

  ctrl+d:向文件尾部翻半屏
  ctrl+u:向文件首部翻半屏

 文本搜索:
  /keyword:从当前光标所在处向文件尾部查找
  ?keyword:从当前光标所在处向文件首部查找
  n:下一个,跟查找命令相同的方向
  N:前一个,跟查找命令相反的方向
  说明:文本搜索支持模式匹配,也即支持正则表达式的匹配
  例如:字母d中间有两个字母后跟n的单词/\<d[[:alpha:]]\{2\}n\>

 编辑命令
    cc:删除当前光标所在行并转化为输入模式
    #cc:删除当前光标所在行向下#行并转化为输入模式
    c$:删除当前光标所在处到行尾并转化为输入模式
    c^:删除当前光标所处到行首并转化为输入模式
    c0:删除至行首并转化为输入模式
 vim支持可视化模式
  v:选中光标划过的字符
  V:选中光标划过的行,整行选取
  按Esc即可返回到编辑模式


 同一文档窗口分割:
  ctrl+w,s;水平分割
  ctrl+w,v:垂直分割
  ctrl+w,箭头

 窗口属性定义:
  显示行号:
   set number,set nu
   set nonumber,set nonu
  自动缩进
   set autoindent,set ai
   set noai
  不区分字符大小写
   set ingorecase,set ic
   set noic

  获取帮助
   set 敲enter键
  显示匹配括号
   set showmatch,set sm
   set nosm
  语法着色:
   syntax on
   syntax off

  搜索高亮显示
   set hlsearch
   set nohlsearch


vim的配置文件
 全局 /etc/vimrc 只有管理员才有权限修改配置,修改之后对所有用户都有效
 个人:~/.vimrc  这个文件实际不存在自己创建即可,修改之后只对当前用户自己有效对其他用户无效

查找替换在末行模式下
 格式为 :地址定界s/查找模式/替换成的内容不能使用模式/gi
 也可以 :地址定界s@查找模式@替换成的内容不能使用模式@gi
 查找模式可以使用正则表达式
     global全局替换
  ignorecase 查找时不区分大小写
  %表示全文搜索