一、概念解释

何为文本编辑器:文本编辑器是处理纯文本ascii数据,对对数据本身没有任何修饰功能的编辑器。而字处理是有类似特效的东西的,比如加深,更改颜色等。

二、编辑模式

1、命令模式

2、编辑模式

3、末行模式



三、常见命令

打开文件

1、在vi编辑器里,直接读取另一个文件,当前正在编辑的文件会退出,所以要求提前做好保存。

    :e /etc/my.cnf

2、将文件追加到当前编辑的文件光标处。

    :r /etc/my.cnf

保存文件

1、将文件另存到指定位置

    :w /root/newpath.conf

光标移动

       h:向左移动

       l:向右移动

       j:向下移动

       k:向上移动

单词间跳转

  w:下一个单词词首

  b:上一个单词词首

句子间跳转
   ):下一句

   (:前一句

段落间跳转

    }:下一段

    {:前一段

行内跳转

^:行首

$:行尾

行间跳转

   1G:跳到第一行

   #G:指定跳到第几行      


删除命令

x:删除一个字符

 dd:删除光标所在行

#dd:光标所在行及向下#行。

d^:光标所在位置到行首

d$:光标所在位置到行尾

dw:删除一个单词

u:恢复操作

ctrl+r:撤销此前的撤销


练习:


删除命令:


 1,7d:删除1-7行


%d:全文


1,$d:到最后一行



粘贴操作

删除的是整行:

 p:在当前光标所在行的下面粘贴

P:在当前光盘所在行的上面粘贴

复制操作

yy:复制一行

#yy:复制多行

y^:行首

y$:行尾

输入模式

    进入输入模式的方法:

          i (insert):在当前光标所在处切换到输入模式

          o:在当前光标所在行的下面新建一个空白行。

          a(append):在光标后面切换为输入模式。

          I:光标所在行行首

          A:光标所在行行尾

          O:在当前光标上面建立一个新行。

末行模式

 进入末行模式:键入:

 返回到编辑模式:esc

       :w 保存

       :q 退出

       :wq 保存退出

       :q! 不保存退出

    常用命令

1、显示文件的每行行号

    :set number

2、设置支持鼠标定位(视版本而定)

    :set mouse=a

3、开启查找关键字时跳过收尾查找功能

    :set wrapscan

4、查找时忽略大小写

    :set ic(ignorecase)

5、高亮显示查找结果

    :set hlsearch

6、实时追踪正在查找的关键字,也就是说在输入字符的同时,光标就开始了查找关键字。

    :set incsearch

练习:

       1、设定变量file的值为/etc/passwd

       2、一次向/etc/passwd中的每个用户问好,并显示对方的shell ,比如,hello!root,your sehll is /bin/bash

       3、统计一共有多少个用户。

翻屏操作

ctrl+f:向下翻一屏

ctrl+b:向上翻一屏

ctrl+d:向下翻半屏

ctrl+u:向首部翻半屏



vim编辑器的查找和替换功能

搜索文本

/keyword:向下搜索

?keyword:向上搜索

n:下一个

N:前一个

查找替换功能

     格式:

            地址界定s/查找内容/替换内容/[g i]

           &:表示对前面提到的内容的再次引用

            /:作为分隔符,这个字符可以任意定,只要前后的分隔符相同即可。 


1、地址界定符位置为空,表示当前光标所在行,尾部为空表示只替换第一个匹配的字段。

     替换当前行的第一个出现的user为username。

    :s/user/username/

2、区域性查找替换(n,ms)

    将当前行的所有的逗号替换为句号。

    :s/\,/\。/g

    将所有行的a替换为%

    :%s/a/%/g

    替换第3行到第十行的user,替换为tom,(#表示文本的最后一行,3,#表示从第三行到文本的结尾)

    :3,10s/user/tom/g

       删除行首开头的#及后面跟随的空白字符

    : %s/^#[[:sapce:]]*//g

    为空白字符开头的行的行首添加上#,空白字符保留

    :1,9s/^[[:;space]]/#&/g                (&具有保留空白字符的意义)

    要删除这些每行后面多余的空格

          :%s/\s\+$//

    命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符

       

    "%” 范围前缀表示在所有行中执行替换。

    "g” 标记表示替换行中的所有匹配点

    如果最后没有加"g",表示仅仅匹配第一个匹配到的字符。



3、谨慎替换

    当替换的东西较多又需要人工参与的时候,使用询问的方式进行替换,方法是在结尾使用"c"。

    比如:3,10s/#//gc

    询问的处理方式:

    y:直接替换,并查找下一个

    n:不替换,并查找下一个

    a:替换所有的。

    q:退出不执行。

    l:只替换当前查找的第一个字段并退出。




四、窗口操作


vim编辑器可以将vim窗口分成两个,方便对文本的编辑工作。

1、上下分割当前窗口(:split)

    将当前编辑的文本分为上下内容相同的两个部分。

    :split

    也可以在当前窗口直接输入new来同时创建一个新的上下结构的窗口,并新建一个空白文档。

    :new

    在当前文本中打开一个指定的文件

    :new /etc/my.cnf

    同时打开多个文本文件 -o

    vim -o /etc/my.cnf /etc/httpd/conf/httpd.conf /etc/php.ini


2、左右分割当前窗口(:vsplit)


3、切换窗口

在多个窗口间进行切换,可以使用ctrl+w来完成。


4、关闭窗口

同一个窗口的命令是一样的,对于新文件使用wq /path/来保存退出

如果要仅仅保留当前窗口,其他窗口在未修改的情况下直接关闭,使用”only“即可。


5、vim可视化模式:

  visual模式:

                v:选中光标所经过的字符。

                V:选中光标所经过的行,整行选取。

通过键盘操作选择文本,并通过快捷命令删除选择内容。


6、使用shell命令并导入

    在vim的编辑中,如果需要了解系统其他内容,涉及到使用shell命令,可以通过!来完成。

    :!ls /us/local/

    将shell命令的显示结果导入到当前编辑的文本中。

    :r !ls /etc/



五、定制自己的vim编辑器

通过修改vim的配置文件来设置自己的特色vim编辑器,比如高亮显示、显示行号、不区分大小写等。

vim的配置文件

   全局:/etc/vimrc

   局部(个人):~/.vimrc


注意:

双引号"表示注释掉当前行。


六、vim的灾难恢复

vim自身带有由于突发事件造成数据丢失的应急方法,就是创建filename.swp文件,用了保存尚未保存的文件

打开恢复文件

vim -r . a.swp

如果编辑的文件正在被另一个用户使用,或者有数据损失的情况造成swap文件存在的话,就会有以下提示:

o:以只读方式打开。

e:不恢复,继续编辑文本。不建议。

r:恢复上次没有保存的内容,此方法是知道恢复后结果是什么的情况下,谨慎。

q:退出

a:丢弃,和退出类似。

d:删除交换文件,可以确定交换文件没有用的情况下使用。