Vim编辑器

目录

一、简介

二、Vim的基本使用

1.基本模式

2.打开文件

3.模式转换

4.关闭文件

5.光标跳转

三、Vim的编辑命令

1.字符编辑(x)

2.替换命令(r, replace)

3.删除命令(d)

4.粘贴命令(p, put, paste)

5.复制命令(y, yank)

6.改变命令(c, change)

7.其它编辑操作

四、Vim中的末行模式

1.地址定界

2.查找

3.查找并替换

练习

五、其他

1.多文件模式

2.窗口分隔模式

3.定制vim的工作特性

4.获取帮助

练习

参考资料

一、简介

vi:Visual Interface,文本编辑器

文本:ASCII, Unicode

      文本编辑种类:

                  行编辑器:sed

                  全屏编辑器:nano, vi

            VIM - Vi IMproved

二、Vim的基本使用

      vim:模式化的编辑

1.基本模式

            编辑模式,命令模式

            输入模式

            末行模式:内置的命令行接口

2.打开文件

      # vim [OPTION]... FILE...

            +#打开文件后,直接让光标处于第#行的行首

            +让光标在尾行

+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首

3.模式转换

      ①编辑模式 --> 输入模式

            iinsert, 在光标所在处输入

            aappend, 在光标所在处后面输入

            o在当前光标所在行的下方打开一个新行

            I在当前光标所在行的行首输入

            A在当前光标所在行的行尾输入

            O在当前光标所在行的上方打开一个新行

            c

            C

输入模式 --> 编辑模式

            [ESC]

编辑模式 --> 末行模式

            :

末行模式 --> 编辑模式

            [ESC]

P.S. 没有编辑模式转输入模式

4.关闭文件

            :q 退出

            :q! 强制退出,丢弃做出的修改

            :wq 保存退出

            :x 保存退出

            :w /PATH/TO/SOMEWHERE

      命令模式下

            ZZ保存退出

5.光标跳转

      字符间跳转: h, j, k, l

                  h

                  l

                  j下    食指在中指下

                  k上   中指在食指下

                  #COMMAND跳转由#指定的个数的字符

单词间跳转:

                  w下一个单词的词首   word

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

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

                  #COMMAND由#指定一次跳转的单词数

行首行尾跳转:

                  ^跳转至行首的第一个非空白字符

                  0跳转至绝对行首

                  $跳转至绝对行尾

行间移动:

                  #G跳转至由#指定行

                  G最后一行

                  1G, gg第一行

句间移动:

                  )     下一句

                  (     上一句

段落间移动:

                  }     下一段

                  {     上一段

      括号匹配:

                  %

三、Vim的编辑命令

1.字符编辑(x)

                  x:删除光标处的字符         叉叉

                  #x:删除光标处起始的#个字符

                  xp:交换光标所在处的字符及其后面字符的位置

2.替换命令(r, replace)

                  r:替换光标所在处的字符

3.删除命令(d)

                  d:删除命令,可结合光标跳转字符,实现范围删除

                       d$:删除光标到绝对行尾

                       d^:

                       d0:

                       dw

                       de

                       db

#COMMAND

                       e.g 3dw

      d#COMMAND

      e.g. d3w 删除光标起的3个单词

                  dd:删除光标所在的行

                  #dd:多行删除

4.粘贴命令(p, put, paste)

p(小写):缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面

P(大写):缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

5.复制命令(y, yank)

                  y:复制,工作行为相似于d命令

                       y$

                       y0

                       y^

                        ye

                       yw

                       yb

                  #COMMAND

                       yy:复制行

                       #yy:复制多行

6.改变命令(c, change)

                  c:修改

                             编辑模式 --> 输入模式

                       c$

                       c^

                       c0

                       cb

                       ce

                       cw

                  #COMMAND

                       cc:删除并输入新内容

                       #cc:

7.其它编辑操作

      可视化模式:

                  v:按字符选定

                  V:按行行定

Note:经常结合编辑命令:d, c, y

撤消此前的编辑u(undo):

                       #u:撤消指定次数的操作

撤消此前的撤消:

                       Ctrl+r:恢复

重复前一个编辑操作:

                       .

      翻屏操作:

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

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

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

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

P.S. vim自带的练习教程:vimtutor

四、Vim中的末行模式

内建的命令行接口

1.地址定界

:start_pos,end_pos

            #:具体第#行,例如2表示第2行

            #,#:从左侧#表示行起始,到右侧#表示行结尾

            #,+#:从左侧#表示的行起始,加上右侧#表示的行数

            .:当前行

            $:最后一行

                  .,$-1

            %全文, 相当于1,$

/pat1/,/pat2/:从第一次被pat1模式匹配到的开始,一直到第一次被pat2匹配到的结束

                  #,/pat/

                  /pat/,$

使用方式:后紧跟一个编辑命令

            d

            y

            w /PATH/TO/SOMEWHERE将范围内的行另存至指定文件中

            r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容

2.查找

      同less的查找用法

      /PATTERN:从当前光标所在处向文件尾部查找

      ?PATTERN:从当前光标所在处向文件首部查找

      n:与命令同方向

      N:与命令反方向

3.查找并替换

      s:在末行模式下完成查找替换操作

            s / 要查找的内容 / 替换为的内容 / 修饰符

                  要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容

                       修饰符:

                             i:查找时忽略大小写

                             g:全局替换;默认情况下,每一行只替换第一次出现

      e.g. 1,$s/r\(..\)t/R\1T/g

      e.g. 1,$s/linux/&er/g

      e.g. 1,$s/ \ /etc\ /fstab / \ /var \ /log 地址中的/需要转义

P.S. 要给出地址定界

                       查找替换中的分隔符/可替换为其它字符,例如

                             s@ 要查找的内容 @ 替换为的内容 @ 修饰符

                             s# 要查找的内容 # 替换为的内容 # 修饰符

练习

复制/etc/grub2.cfg至/tmp/目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符

            %s/^[[:space:]]\+//g

复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号

            :%s/^[[:space:]]/#&/

            :1,$s@^[[:space:]]@#&@g

五、其他

1.多文件模式

      可以方便地在多个文件中进行复制粘贴删除等操作

vim FILE1 FILE2 FILE3 ...

                  :next 打开下一个文件

                  :prev 前一个

                  :first 第一个

                  :last 最后一个

            :wall 保存所有

            :qall 退出所有

            :wqall 保存并退出所有

2.窗口分隔模式

      vim -o|-O FILE1 FILE2 ...

                  -o:水平分割

                  -O:垂直分割

            在窗口间切换:Ctrl+w, 箭头( h, j, k, l )

            单文件窗口分割:

                  Ctrl+w, s:split,       水平分割

                  Ctrl+w, v:vertical, 垂直分割

3.定制vim的工作特性

      配置文件:永久有效

                  全局:/etc/vimrc

                  个人:~/.vimrc  需要自己创建

            末行:当前vim进程有效

            ①行号

                       显示:set number, 简写为set nu

                       取消显示:set nonumber, 简写为set nonu

            ②括号匹配

                       匹配:set showmatch, 简写为set sm

                       取消:set nosm

            ③自动缩进

                       启用:set ai

                       禁用:set noai

            ④高亮搜索

                       启用:set hlsearch

                       禁用:set nohlsearch

            ⑤语法高亮

                       启用:syntax on

                       禁用:syntax off

            ⑥忽略字符的大小写

                       启用:set ic

                       不忽略:set noic(默认no ignore case)

4.获取帮助

                  :help

                  :help subject

            问题:如何设置tab缩进为4个字符?

                        set ts=4

set expandtab

练习

复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log

$s@/etc/sysconfig/init@/var/log@g

%s@/etc/sysconfig/init@/var/log@g

删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号

      1,$s@^#\([[:space:]]\+\)@\1@g

        %s@^#\([[:space:]]\+.*\)@\1@g

 

参考资料:

马哥随堂笔记

注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值