日期:2014-05-16  浏览次数:20708 次

unix下vi使用小结以及常用命令

之所以要学习vi,是因为公司的unix服务器只支持vi.个人觉得理解了vi的工作方式,即可基本掌握如何使用vi,而不需要记忆太多的东西.

?

vi的模式

学习vi,最重要的事情是理解vi的模式,以及各个模式下面都能进行哪些操作.想得简单一点,我们可以把vi理解成两种模式即插入模式与命令行模式:

  • 插入模式(Insert Mode):在插入模式下面只能进行文本插入(输入)操作,而且在插入模式下,是不能通过键盘上的上下左右箭头键移动光标的.这一点往往是新手刚进行vi操作的时候最懊恼的事情.想象自己刚刚在vi上成功输入几个字符之后,若想像windows一样,移动光标(通过上下左右键)到别处去,在vi上是行不通的,最终会导致插入一些意外的字符.这时,我们就需要按ESC键进入命令行模式.最后注意在插入模式下Backspace键是不能删除字符的,但是回车跟空格是有效的
  • 命令行模式(Command Mode):在命令行模式下,我们可以进行光标移动,数据删除,数据复制,粘贴.我们可以在命令行模式下通过a,A, i,I,o,O命令进入插入模式.最后在命令行下可以通过:wq!之类的命令进行强制保存(底行模式)

对于一个新手来说做常做的事情是编辑文本,进行插入操作/删除操作.所以就需要不断地在两种模式之间进行切换[ESC, a, i, o]以及内容删除[dd,x,X],所以每当你搞不清楚处于何种模式,或者误插入了你不想要字符的时候,你只要按ESC,就会进入命令行模式,便可以把刚才的误操作给删除掉. 如后再按[a,o,i]进入插入模式,进行文本插入操作.

?

在理解了vi的运行方式之后,我们就可以进行基本的文件编辑工作.再接下去的事情,无非是多记住一些在各种模式下面的常用命令,让我们更好地使用vi.

?

vi常用命令

1.命令行模式下光标移动:

  • h(左),j(下),k(上),l(右)以及方向键:上下左右移动光标
  • 0与$:移动到行开头与结尾
  • G:移动到文件最后一行
  • 20G:移动到文件第20行
  • 20[space]:向右移动20个字符
  • 20[Enter]:光标向下移动20行

2.命令行下查找与替换

  • /string: 向下查找, 按n查找下一个, N查找上一个,这个跟less命令的查找使用方式是一样的
  • ?string:往前查找, 按n查找下一个, N查找上一个
  • :1,$s/src/dest/g 从第一行到最后一行替换src为dest,$代表结尾
  • :1,$s/src/dest/g 从第一行到最后一行替换src为dest,并且每次替换前就行确认
  • :n1,n2s/src/dest/g 从第一行到最后一行替换src为dest

3.命令行下删除复制粘贴:

  • x,X:向前,向后删除一个字符,前面可以加数目
  • d0与d$:删除光标到行第一个字符/最后一个字符
  • dd: 删除整行, 加数字代表删除向下n行
  • yy:复制所在行,加数字代表复制向下n行
  • y0与y$: 复制光标到行头/行尾
  • p:从光标下一行开始粘贴, P的话是从粘贴到光标所在的上一行

4.命令行模式进入插入模式

  • i:光标处插入,之前光标选中的字符会后移
  • 大写i:所在行第一个非空字符处插入
  • a:光标所在下一个字符插入,类似i
  • 大写A:所在行最后一个字符插入
  • o与O:光标所在行上/下一行插入新的一行

5.命令行模式进行保存

  • :q! 强制离开不保存
  • :wq! 强制保存后离开
  • :q 离开,保存否???

6.命令行下其他操作

  • u: 撤销上一个操作,只能撤销最近一次,再撤销,又回去了..会不断循环
  • [ctrl]+r: 重做上一次操作
  • . 就是小数点那个:重复前一个操作,不知道跟Ctrl+r有什么区别

?

?