硕彦博创周记VI编辑器与Shell脚本

**

一、关于VI编辑器

**
vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。

  • vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;

  • vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。 vim会依据文件扩展名或者是文件内的开头信息,
    判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。

  • vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。
    这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。
    鉴于后期所有的C、C++代码函数的实现都是在vi编辑器中实现和完成,VI编辑器的熟练使用就显得非常重要。也是本周双休的关键任务。 至于Shell脚本,由于语法的贯通性只要能狗遵循基本的Shell语言语法规则就不难掌握关于Shell脚本的编写。

什么是vi/vim编辑器?

  1. vi是visual interfact的缩写,即可视化接口
  2. vim即vi improv,vi的加强版。
  3. 二者不完全等同,vim向下兼容vi,但vim的部分指令vi不一定可用。

vi的三种模式

vi虽然功能强大,但是也仅有三种大的模式(命令模式、输入模式,底行模式),每种模式下都有各不相同的功能区域。三种模式下可以互相转化。
三种模式的转换:
在这里插入图片描述
①三种模式

命令模式(默认):刚进入vim的时候,默认就是 命令模式,可以复制行,删除行等。
   输入模式:可以输入内容。(仅有输入内容)
   末行模式:在最下边,除编辑模式,可以输入诸多管理员命令
注:三种模式的切换时要注意输入法,中文模式下vi不会读取到任何切换相关的指令。(要切换模式时,尤其是命令模式转底行模式输入法一定不可为中文模式)

②模式转换
当进入vi时默认的模式是命令模式;
命令模式→输入模式:
i:在当前光标左侧输入内容
I:在当前光标所在行最左侧输入内容
a:在当前光标的右侧输入内容
A:在当前光标所在行的最右侧输入内容
o:在当前光标的下一行新建一行输入内容
O:在当前光标的上一行新建一行输入内容
s:删除光标处的支付,并转为输入模式
S:删除光标所在行,并转为输入模式
r:替换光标所在字符一次
R:替换光标所在字符,直到按下Esc键为止。
注:有且不仅有以上转换方式,目前并不完善。a/i/o/s/r每一个字符的大小写的功能都不相同,要牢记各自的作用,并熟练掌握。
输入模式→命令模式:
Esc
命令模式→底行模式:
:(注意中文模式下不可转换)
底行模式→命令模式:
Esc
使用vim如何打开文件?
① vim /path/to/somefile :vim后跟文件路径及文件名 ,如果文件存在,则打开编辑文件窗口,如果文件不存在,则创建文件(如果不加路径则会在当前文件目录下查找或创建)
② vim + # /path/filename:打开文件,并定位到第#行,#代表数字
在这里插入图片描述
③输入命令“vi +3 test”则会在当前目录下查找test文件,并在vi中打开定位到第三行;
在这里插入图片描述
注:如果不加数字,则会直接跳到最后一行的行首
在这里插入图片描述
④vim +/zhu:打开文件,定位到第二次被zhu匹配到的行的行首(有其他网友博主说是第一行,但根据少量测试结果为第二次匹配到的行首)
在这里插入图片描述
关闭文件:
底行模式下:
   w:保存
   q:退出
   wq 或 x:保存退出,wq 和 x 都是保存退出
 q!:强制退出
   w!:强制保存,管理员才有权限
命令模式下:
ZZ:保存退出。(比较好用推荐)
光标的移动:
由于Vi/vim中鼠标不能移动光标,所以对于光标移动的操作尤为重要,熟练掌握不同的功能移动键会大大节省代码的完成效率,以下是部分移动光标的指令键
命令模式下:

①以字符为单位:
h:向右移动一个字符
l:向左移动一个字符
j:向下移动一行
k:向上移动一行
#h/j/k/l (#代表数字,如:3h代表向左移动三个字符。2j代表向下移动2行)
②以单词为单位:
w:光标移动到下一个单词的开头
b:光标移动到上一个单词的开头
e:光标移动到下一个单词的末尾
(没有移动到上一个单词的末尾的指令也很奇怪)
#b/e/w (#代表数字,如:2w代表移动到第二个单词的开头)
③行内跳转
     0:绝对行首
     ^:行首第一个非空白字符
     $:绝对行尾
④行间跳转
     #G:跳转到第#行
     G:最后一行

底行模式下:
行间跳转:
行号+回车即可
翻屏:
  命令模式下
    Ctrl+f :向下翻一屏
    Ctrl+b:向上翻一屏
    Ctrl+d:向下翻半屏
    Ctrl+u:向上翻半屏
删除:
    ①删除单个字符:
      x:删除光标所在处单个字符
      #x:删除光标所在处及向后共#个字符
    ②删除命令:d
      d命令跟 跳转命令组合使用 如:dw 表示删除光标所在位置到下一个单词词首所有字符
      #dw,#de,#db :#dw表示 删除当前光标所在处及向后第#个单词词首所有字符
      dd:删除当前光标所在行
      #dd:删除包含当前光标所在行内的#行
复制:
用法同d命令  
  命令模式下:
    yy:复制当前行
    yw (y#w,ye,y#e,yb,y#b):复制光标当前位置到下个单词词首内容.#代表数字
    y#G:复制当前位置当#行处的所有内容

末行模式
    StartADD,EndADDy:复制StartADD到EndADDd位置的所有行,例如:10,15d:复制10到15行所有内容
    +3y:复制当前位置向下3行
粘贴:

  • p(小写p):如果删除的或复制的为整行内容,则粘贴到光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面
  • P(大写P):如果删除的或复制的为整行内容,则粘贴到光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面

修改:
 先删除内容,在转换为输入模式
c:用法同d
替换
r:替换光标所在处的字符
R:替换模式持续替换:知道按下Esc才退出替换模式
撤销:
u:撤销上一次的操作
查找:

末行模式: 
    /PATTERN:从当前位置向后查找
    ?PATTERN:从当前位置向前查找
高级话题:
在末行模式下
①显示或取消行号
set nu(set number):显示行号
set nonu:取消显示行号
②显示忽略或区分字符大小写
set ic (set ignorecase):忽略大小写
set noignorecase:区分大小写
③设定自动缩进
set ai(set autoindent):自动缩进
set noai:取消自动缩进
④查找到的文本高亮或取消高亮显示
set hlsearch:高亮显示搜索到的文本
set nohlsearch:取消高亮显示搜索到的文本
⑤语法高亮
syntax on:打开语法高亮显示
syntax off:关闭语法高亮显示

猜你喜欢

转载自blog.csdn.net/weixin_43670872/article/details/84671851