不要再说自己不懂IT/一分钟带你了解VIM的前世今生

  在一些关于文本编辑器的问题中,我都会提到Vim在文本编辑方面是无编辑器能出其右的,包括Vim的宿敌Emacs,在这方面都无法望Vim项背。
  
  前
  
  世
  

  经过这几天的学习,大家应该知道,linux是一个跟文本文件打交道的系统,那么如何去跟这样一个系统打交道呢?我们就要学会如何去新建文件、删除文件、修改文件等等,那么做这些操作就需要一个文本编辑工具。而在linux中最经典最流行的文本编辑工具就是vi/vim;本文将会给大家详细讲述如何在linux操作系统下使用vi/vim 文本编辑器,一分钟了解vi/vim的前世今生。
  
  首先我们要知道的是vi/vim是什么?

不要再说自己不懂IT/一分钟带你了解VIM的前世今生
  
  
  
  绍

  
  vi编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
  
  vi编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
  
  Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
  
  
  
  点

  
  对vim已经有了基础了解的你们,肯定也想知道它的特点吧!它有三个大众所能了解到的特点!
  
  vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体
  
  vi/vim只是一个文本编辑工具,它只能对文本的内容进行操作
  
  vi是一个全屏幕的文本编辑器,在编辑文本时它将占据整个屏幕
  
  虽然不能像Word文档一样调整字体、改变大小但是优势却也是显而易见的
  
  1.全键盘操作、快捷键的组合,使效率大大提高
  
  2.启动快,轻便快捷
  
  3.扩展多,足够用
  
  在linux vi/vim 文本编辑器里有三种模式:命令模式,输入模式和末行模式。这三者模式的区别是什么呢?

 不要再说自己不懂IT/一分钟带你了解VIM的前世今生 

  
  
  式

  
  命令模式:是vi/vim 编辑器进入后的默认模式,比如说你想编辑文件,那么就需要输入“i”,让当前模式变为插入模式或者输入模式,这样你就可以编辑这个文本了。还可以让用户执行命令,比如复制行、粘贴行。
  
  输入模式:顾名思义就是要对本文做输入的操作,也就是说可以对文件做出更改操作。
  
  末行模式:用于查找文本、保存修改。
  
  其中我们需要重点了解到的是他们之间的转换模式,这可不简单
  
  命令模式-->输入模式-->命令模式
  
  命令模式-->末行模式-->命令模式
  
  命令模式-->输入模式
  
  i:insert,在当前光标所在字符的前面,转为输入模式
  
  I:大写的i,在当前光标所在行的行首转换为输入模式
  
  a:append,在当前光标所在字符的后面转换为输入模式
  
  A:在当前光标所在行的行尾转换为输入模式
  
  o:open,在当前光标所在行的下方新建一行并转为输入模式
  
  O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式
  
  输入模式-->命令模式
  
  ESC
  
  命令模式-->末行模式
  
  :
  
  末行模式-->命令模式
  
  ESC ESC

  不要再说自己不懂IT/一分钟带你了解VIM的前世今生
  示意图▲
  
  了解完它的几大模式和三大特点后,我们就开始进行操作了!文本编辑方式正确打开的姿势你有Get到吗?(多图预警!!!)
  
  打开文件方式:文件打开后默认处于命令模式下
  
  vim filename//打开文件
  
  vim +n filename//打开文件并定位到第n行
  
  vim +/pattern filename//打开文件并定位到第一次被/pattern匹配到的内容行首
  
  关闭文件方式:末行模式关闭文件
  
  命令>意义
  
  q>退出 wq>保存并退出
  
  q! >不保存退出 w>保存但不退出
  
  w! >强行保存 wq!>强行保存并退出
  
  x>强行保存并退出
  
  命令模式关闭文件:ZZ
  
  移动光标
  
  逐字符移动
  
  h:向左移动一个字符
  
  l:向右移动一个字符
  
  j:向下移动一个字符
  
  k:向上移动一个字符
  
  #h:向左移动#个字符
  
  #l:向右移动#个字符
  
  #j:向下移动#个字符
  
  #k:向上移动#个字符
  
  以单词为单位移动
  
  w:移动到下一个单词的词首
  
  e:跳至当前或下一个单词的词尾
  
  b:跳至当前或上一个单词的词首
  
  #w:以当前光标为起点跳至第#个单词的词首
  
  #e:以当前光标为起点跳至第#个单词的词尾
  
  #b:以当前光标为起点跳至第#个单词的词首
  
  行内跳转
  
  0:数字0,跳转到绝对行首
  
  :跳转到行首的第一个非空白字符
  
  $:跳转到绝对行尾
  
  行间跳转
  
  gg:跳转到第一行
  
  G:跳转到最后一行
  
  #gg:跳转到第#行
  
  #G:跳转到第#行
  
  句子间跳转
  
  (:左小括号,跳转到上一个句子
  
  ):右小括号,跳转到下一个句子
  
  段落间跳转
  
  {:左大括号,跳转到上一个段落
  
  }:右大括号,跳转到下一个段落
  
  翻屏
  
  ctrl+f:向下翻一屏
  
  ctrl+b:向上翻一屏
  
  ctrl+d:向下翻半屏
  
  ctrl+u:向上翻半屏
  
  字符编辑
  
  编辑命令<意义
  
  x<删除光标所在处的单个字符
  
  #x<删除光标所在处及其向后共#个字符 xp<交换光标所在处的字符及其后面字符的位置
  
  删除命令:d
  
  命令模式下d命令常与跳转命令组合使用,如
  
  d$:表示删除当前光标所在位置到行尾的内容
  
  d:表示删除当前光标所在位置到第一个行首非空白字符位置的内容
  
  d0:表示删除当前光标所在位置到绝对行首的内容
  
  #d跳转符:删除跳转符指定范围内的#个,例如 #dw #de #db
  
  dd:删除当前光标所在行整行
  
  #dd:删除包括当前光标所在行在内的#行
  
  D:删除当前光标所在行的内容,保留空行
  
  末行模式下d命令的使用
  
  语法::StartADD,EndADDd
  
  这里的StartADD与EndADD是指一个范围,例如:
  
  1,5d:表示删除第1到第5行
  
  范围表示方法:
  
  表示方法<意义
  
  .<光标所在当前行 $<最后一行
  
  +#<光标所在行往后#行
  
  $-#<倒数第#行 %<全文
  
  复制命令:yy
  
  粘贴命令:p
  
  p:小写p
  
  若删除或复制的为整行内容,则粘贴至光标所在行的下方
  
  若删除或复制的为非整行,则粘贴至光标所在字符的后面
  
  P:大写p
  
  若删除或复制的为整行内容,则粘贴至光标所在行的上方
  
  若删除或复制的为非整行,则粘贴至光标所在字符的前面
  
  替换:r
  
  R:替换模式,替换多个字符
  
  r#:将当前光标的字符替换为#,这里的#可以是任何字符
  
  撤销编辑:u
  
  u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
  
  #u:直接撤销此前的#次编辑操作
  
  ctrl+r:还原最近一次的撤销操作
  
  重复前一次编辑操作:.
  
  可视化模式:
  
  可视化模式下可以对选取的内容进行前面讲的所有编辑操作
  
  v:按字符选取内容
  
  V:按矩形块(行)选取内容
  
  文本查找:
  
  /pattern:从上往下查找匹配的内容
  
  ?pattern:从下往上查找匹配的内容
  
  n:从上往下查找匹配到的内容的下一条
  
  N:从下往上查找匹配到的内容的下一条
  
  查找并替换:s
  
  s命令只能在末行模式下使用
  
  语法:
  
  ADDR1,ADDR2 s/pattern/string/gi
  
  1,5 s/abc/def/g:
  
  表示把第一行到第五行的所有abc替换为def
  
  末行模式下显示或取消显示行号:
  
  set nu:显示行号
  
  set nonu:取消显示行号
  
  VIM Text Editor
  
  最经典实用的上古神器

不要再说自己不懂IT/一分钟带你了解VIM的前世今生
  
  如果你是一位 IT 界人士,需要或将要与 Linux 系统打交道,那么学习好 Vim 的操作绝对能让你的工作轻松百倍!!因为很多时候, Linux 作为服务器是不会开启图形界面,当需要远程操作时,你只能利用 SSH“命令字符式”的 Shell 界面对其进行操作,这时如果你需要修改服务器上的网页代码或配置文件,VI 或 VIM 命令就是你最佳最方便也是最强大的伙伴了!相信我,学好 数理化 VIM,走遍天下也不怕……

文章来源:运维工程师培训(http://www.runtimewh.com/xwzx/hydt/3138.html)

猜你喜欢

转载自blog.51cto.com/13946595/2168352