vi和vim编辑器基本操作

一般来说,vi命令有如下的特别:

  • 字母大小写有区别.
  • 在输入时不会显示在屏幕上.
  • 不需要在命令后加上Enter键.

基本命令:

  1. 文件与系统基本操作
  • vi[filename]
  • :q离开,:q!代表强制离开.
  • 按下esc键会强制进入命令模式
  • ZZ离开并保存编辑结果
  • 也可以用ex命令保存编辑结果,输入:w是保存文件但不离开vi,若无编辑动作,可输入:q退出,输入:wq,则是保存编辑结果并离开vi(:wq与ZZ相等).
  • :e!恢复上一次存储的文件内容.:q!消除所有编辑结果然后离开vi.
  • !df查看磁盘剩余空间.
  • :w newfile可以在没有权限时,暂时将缓冲区写入一个新的文件.
  • :!rm junkfile删除一些大文件,空出一些空间.
  • :w! file会在文件已经存在时覆盖现有文件.
  1. 简单的文本编辑
  • 进入插入模式方法:按下i.
  • 移动光标:h,j,k,l这4个位于键盘中心的键可以移动光标.h向左一个字符,j向下一行,k向上一行,l向右一个字符.
  • 设置与右边界的距离.以便自动插入换行符.这个选项是wrapmargin(简写为wm),例如设置为10个字符换行.:set wm=10.
  • 移到一行的开头0,移到一行的结尾$.
  • 显示行编号,:set nu.
  • w命令使光标移动一个单词,符号和标点也算是一个单词.W大写的使光标移动到下一个单词,没有算入标点和符号.bB则相反.G可以移动到指定的行.如42G可移动到42行.
  • 文本内容修改命令.i表示插入,a表示添加,c表示更改,d表示删除.
  • 移动:先用d做删除,再用p进行放置.
  • 复制:先用y做”拖曳”的动作,再用p进行放置.
  • 附加文本:a.ai用法几乎相同,除了前者是在光标后面插入文本,后者是在光标之前插入文本.
  • 更改文本:c.将c与光标移动命令一起使用,定义有多少文本需要更改.如:cw从光标到这个单词的结尾,c2b从光标往前2个单词.c$从光标到本行末尾.c0从光标到本行开头.
  • 更改整行文本.cc.
  • 修改单个字符,使用r命令.例如:r-:使用r命令加上要更改的字符-.
  • 更改字符大小写.~.
  • 删除文本.d.例如,删除单词dw,删除一行ddD.
  • 删除整行.dd.D命令会删除从光标所在位置到本行结束间的文本(Dd$的简写).
  • p放置命令会将缓冲区的文本放在光标后,大写的p命令则会把文本放置在光标前.

  • ctrl F 往前滚动一整屏

  • ctrl B 往后滚动一整屏
  • /字符串 按下enter会高亮你要搜索的字串
  • ?字符串 按下enter相反方向搜索字串
    因为之前的搜索串还在缓存中,继续输入n,N 或者/ ?加enter键继续重复搜索.
    • ctrl g 显示总行数,现在行数在页面的大致位置
      输入50G 会移动到第50行
  1. 越过基础的藩篱
  • 打开file并前进到特定的位置.
    vi +n file:在第n行打开file.
    vi + file:在最后一行打开file.
    vi +/pattern file:在第一个出现pattern的地方打开file.如果你的pattern中包含空格,则需要用单引号或双引号括起整个模式.+/'you make'或者用反斜线将空格转义+/you\ make.

  • 用只读模式显示文件vi -R file或者view file.

  • 全局搜索.
    :g/pattern:寻找文件中最后一次出现pattren的地方.
    :g/pattern/p:寻找并显示文件中所有包含pattern的行.
    :g!/pattern/nu:寻找并显示文件中所有不包含pattern的行,也显示所有找到的行号.
    :60,124g/pattern/p:寻找并显示第60行与第124行之间包含pattern的行.

  • 替换:
    :s/old/new/:将当前这一行中第一个出现的模式old改为new.
    :s/old/new/g:将当前行每一个出现的old更换成new.(g会影响一行中的每一个模式,而:g会影响文件中的每一行.).
    :50,100s/old/new/g:将第50行到第100行之间每一个出现的old更改为new.
    :1,$s/old/new/g:将整个文件中的old更改为new.
    也可以用%代替1,$.:%s/old/new/g也会替换整个文件中的old为new.
    替换全局偶尔会出错,因此可以在每次替换之前做确认,可以在替换命令的结尾加上c以确认本次替换.如:1,30s/his/the/gc.这样如果确认替换,必须输入y(代表yes之意),再按下enter如果不想替换只需按下enter.

热评文章