一、文本编辑器

1、文本编辑器类别

全屏文本编辑器:

       nano

       vi,vim

       emacs

行文本编辑器:

         sed


2、vim介绍

vim是功能增强版的vi

模式化的编辑器:          #有多种不同模式

       编辑模式       也叫命令模式

       输入模式       也叫插入模式

       末行模式

              vim有许多内置命令,此模式即为其命令的接口


二、vim的使用

1、打开文件

vim [OPTIONS]  [FILE]...

       +N                        快速定位至第N行

       +                           快速定位至最后一行

       +/PATTERN            快速定位至被模式第一次匹配的行


2、模式间转换

默认为编辑模式--->输入模式:

i:insert,在当前光标处,转换为输入模式

I:在当前光标所在行行首,转换为输入模式

a:append,在当前光标所在处字符后方,转为为输入模式

A:在当前光标所在行行尾,转换为输入模式

o:在当前光标所在行的下方新建一个空白行,并转换为输入模式

O:在当前光标所在行的上方新建一个空白行,并转换为输入模式  

输入模式--->编辑模式:按ESC键

编辑模式--->末行模式:  :

末行模式--->编辑模式:按ESC键


3、退出vim

末行模式:

       q     退出

       w    另存为    w /tmp/test

       q!    强制退出,不保存编辑的内容直接退出

       wq   保存退出

        x     保存退出

    wq!或x!     强制保存退出

编辑模式:

       ZZ      保存退出


三、编辑模式

1、光标移动

字符间移动:

                 k

            h         l

                 j

hjkl:左下上右   

N[h,j,k,l]:一次移动N个字符间距

单词间移动:

       w   下一个单词的词首

       e    当前或下一个单词的词尾

       b    当前或前一个单词的词首    

   N[w,e,b]:一次跳N个单词

行首行尾间跳转:

       0:跳转至绝对行首

       ^:行首的第一个非空白字符

        $:跳转绝对行尾

行间快速跳转:

       #G   第#行  末行模式:# 跳转至第#行

         G   文尾

        gg   文首

        末行模式下直接输入行号就可以直接跳到该行

句间移动:

           )   下一个句子的句首

          (     前一个句子的句首

段落间移动:

           }    下一段段首

           {    上一段段首


2、编辑操作

x:删除光标所在出字符  

Nx:删除光标所在处及向后的N个字符


d:删除      在末行模式中也可以用来删除指定的行

dd:删除光标所在行 

Ndd:删除光标所在行及下的共N行,

与跳转命令一同使用:

     d$:删除光标所在处至行尾的内容, 相当于D,ND删除光标所在处的行及下的共N行,但不包括当前光标所在处至行首的内容

     d0,d^

     [N]dw,[N]db,[N]de,


r:替换命令   

R:开始替换光标之后的字符,知道退出按ESC推出该模式

   

p:粘贴,     

   行级别:

         p:粘贴在光标所在行下方

     P(大写):粘贴在光标所在行上方

 小于行级别:

         p:粘贴在光标所在出的后方

    P(大写):粘贴在光标所在出的前方


y:复制命令        在末行模式中也可以用来复制指定的行

   yy:删除光标所在行 相当于Y

   Nyy:删除光标所在行及下的共N行

与跳转命令一同使用:

    y$:删除光标所在处至行尾的内容

    y0,y^

    yw,yb,ye

     

c:修改    删除后进入输入模式,和d的用法一样

    C,cc,c$,c^,c0,[N]cw,[N]cb,[N]ce

  

u:撤销   

Nu:一次撤销最近的N次操作  #vim最多保存前50次的操作

ctrl+r:撤销此前的撤销

.  重复前一条命令 


3、可试化模式

v:选择光标所在行的光标左侧的内容

V:光标所在行整行都被选定


4、编辑模式下的翻屏命令

   Ctrl+f:向文件尾部翻一屏

   Ctrl+b:向文件首部翻一屏

  Ctrl+d:向文件尾部翻半屏

   Ctrl+u:向文件首部翻半屏


四、末行模式

1、文本查找   

            支持正则表达式

/PATTERN  向尾部进行 n,N

?PATTERN  向首部进行 n,N


2、地址定界

        有部分内置命令用于编辑操作,此时可使用地址定界法进行

startline[,endline]

       #:第#行

       .:当前行

        $:最后一行

       %:全文

相对定界:

      +#:从指定位置向下#个行  10,+5

      -#:从指定位置向上#个行  10,-5


3、文本替换

s

s/要查找的内容/替换为的内容[/修饰符]           #默认区分大小写,不全局匹配

      /:用作分隔符,用于分割“要查找的内容”和“替换为的内容”, 

           此分隔符可使用其他符号如:@,#。

     要查找的内容,可使用正则表达式,可以在后面“替换为的内容”部分使用“&”全部引用

     替换为的内容,不可使用正则表达式,一般为正常文本但可以使用正则表达式中\1,\2...保存的内容

     修饰符:

               i:查找时不区分字符大小写

               g:全局替换,vim默认只替换某行第一次匹配到的内容

注意:使用s替换如果不定界那没只在当前行查找,所以先定界再替换,


4、在vi中执行命令和导入文件

在末行模式下:  

       导入文件:  r FILENAME

       执行命令:  !COMMAND

       导入执行命令的结果:   r!COMMAND


5、定义快捷键和替换

在末行模式下:

     替换:ab mymail magedu@qq.com    #文中后面所写的所有mymail将被替换为mageedu@qq.com

   快捷键: map CRTL+p  I#     #按Ctrl+p键就会在光标所在行行首插入#并返回编辑模式 


五、多文件模式

vim [OPTIN]... [FILE]...        

多文件:

       末行模式:

               next(下1个文件),prev(上1个),first,last

       保存并退出所有文件:

               wqall,wall,qall

多窗口:

       -o:上下分割窗口

      -O:左右分割窗口

      Ctrl+w再ARROW(上下左右的箭头)

注意:单个文件也可以分割为多个窗口进行查看

      Ctrl+w再按s       上下分割

      Ctrl+w再按v       左右分割


六、界面显示特性

1、末行模式

显示行号:          #默认关闭

      set number          #简写set nu

      set nonumber      #简写set nonu

语法高亮:        #默认开启         

       syntax on

       syntax off

搜索高亮:       #默认开启

       set hlsearch

       set nohlsearch

自动缩进:       #默认关闭

      set autoindent            #set ai

      set noauntoindent      #set noai

区分字符大小写:      #默认区分

     set ignorecase            #set ic     忽略大小写

     set noignorecase        #set noic  不忽略大小写

高亮显示匹配的符号对儿     #默认开启

      set showmatch         #set sm

      set noshowmatch    #set nosm

       

2、vim的配置文件

全局:/etc/vimrc

个人:~/.vimrc


wKioL1hCsGOxUljmAAGsITQOLvA735.png

 

附:

     VimTutor中文版

wKioL1hCwb_STqG0AAGwzPdWnXQ650.png