Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75172
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 434
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-23 09:31
个人简介

天行健,君子以自强不息;地势坤,君子以厚德载物

文章分类
文章存档

2018年(11)

2017年(30)

我的朋友

分类: LINUX

2017-04-26 14:15:48

vim编辑器详解
vim模式:
编辑模式(命令模式)
输入模式
末行模式

模式转换:
    i:在当前光标所在字符的前面,转为输入模式;
    a:在当前光标所在字符的后面,转为输入模式;
    o:在当前光标所在行的下方,新建一行,并转为输入模式;
    
    I:在当前光标所在行的行首,转换为输入模式
    A:在当前光标所在行的行尾,转换为输入模式
    O:在当前光标所在行的上方,新建一行,并转为输入模式;
    
输入——>编辑:ESC
编辑-->末行::
末行-->编辑:ESC,ESC

1、打开文件
    vim /path/to/somefile
        vim +#:定位光标第#行
        vim +:定位光标于文件最后一行
        vim +/PATTERN:打开文件,定位至第一次被PATTERN匹配到的行首
2、关闭文件    
(1)末行模式关闭文件:
    q:退出
    wq:保存并退出
    q!:不保存退出
    w:保存
    w!:强行保存
    x:保存并退出
(2)编辑模式下退出    
ZZ:保存并退出

3、移动光标(编辑模式下)
(1)逐字符移动:
    h:向左
    l:向右
    j:向下
    k:向上
   #h/l/j/k:向左/右/下/上,移动#个字符
(2)以单词为单位移动
    w:移动至下一个单词的词首
    e:跳至当前或下一个单词的词尾
    b:跳至当前或前一个单词的词首
    可以和数字进行组合:如:#w 以#个单词为单位移动之下一处单词的词首
(3)行内跳转:
    0:绝对行首
    ^:行首的第一个非空白字符
    $:绝对行尾
(4)行间跳转
    #G:跳转至#行
    G:跳转至最后一行    
    末行模式下,直接给出行号即可
(5)段落间跳转
    {或[:跳转至当前光标所处段落前
    }或]: 跳转至当前光标所处段落后
4、翻屏
    Ctrl+f:向下翻一屏
    Ctrl+b:向上翻一屏
    Ctrl+d:向下翻半屏
    Ctrl+u:向上翻半屏
5、删除单个字符
    x:删除光标所在处的单个字符
    #x:删除光标所在处及向后的共#个字符
6、删除命令:d
    d命令与跳转命令组合使用,表示删除多少字符
    #dw,#de,#db
    dd:删除当前光标所在行
    #dd:删除包括当前光标所在行在内的#行;
    
    末行模式下:
    StartADD,EndADDd
        如:1,8d:删除第一行到第八行
    .:表示当前行
        如:.,100d:删除当前行到第100行
    $:最后一行
        如:.,$-3d:删除当前行到倒数第三行
    +#:向下的#行
        如:.,+5d:删除当前行及向下的5行;
 7、粘贴命令p
    P:(大写P)如果删除的或复制的为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;
    p:(小写P)如果删除的或复制的为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
8、复制命令y
    复制命令y与删除命令d用法相同
    y命令与跳转命令组合使用,表示复制多少字符
    #yw,#ye,#yb
    yy:复制当前光标所在行
    #yy:复制包括当前光标所在行在内的#行;
    
    末行模式下:
    StartADD,EndADDy
        如:1,8y:复制第一行到第八行
    .:表示当前行
        如:.,100y:复制当前行到第100行
    $:最后一行
        如:.,$-3y:复制当前行到倒数第三行
    +#:向下的#行
        如:.,+5y:复制当前行及向下的5行;
9、修改:先删除内容,再转换为输入模式
    c:与删除命令d相同
10、替换:r(只能替换单个字符)
    R:替换模式(可以替换多个字符)
11、撤销编辑操作u
    u:撤销前一次的编辑操作
        连续u命令可撤销此前的n次编辑操作
    #u:直接撤销最近#次编辑操作
    
    撤销最近一次撤销:Ctrl+r
    
12、重复前一次的编辑操作
.命令:重复前一次的编辑操作

13、可视化模式
    v:按字符选取
    V:按矩形块选取
    *注:在此模式下,用命令移动光标,光标起始位置和当前位置之间的文本将会以高亮显示。这时就可以对这些高亮显示的文本进行整体的操作。例如:在字符可视化模式中,首先用6l命令选中光标右侧的6个字符,然后输入d命令删除高亮显示的文本。
14、查找
    /PATTERN:从文件首部到尾部查找
    ?PATTERN:从当前光标到首部查找
        结合N或n:表示下一个
15、查找并替换
在末行模式下使用s命令
ADDR1,ADDR2s@PATTERN@string@gi:表示在全局模式下且忽略大小写,从ADDR1到ADDR2查找PATTERN并替换成string
1,$:表示从第一行到最后一行
%:表示全文
例:.,$-1s/he/HE/g:在全局模式下,从当前光标所在行到倒数第二行,查找he并替换成HE
16、使用vim编辑多个文件
用法:vim FILE1 FILE2 FILE3
    末行模式下:
        next:切换至下一个文件
        prev:切换至前一个文件
        last:切换至最后一个文件
        first:切换至第一个文件
    退出    
        qa:全部退出
17、分屏显示一个文件
Ctrl+w,s:水平拆分窗口
Ctrl+w,v:垂直拆分窗口

在窗口间切换光标:
Ctrl+w, ARROW键

退出:
    qa:关闭所有窗口
18、分窗口编辑多个文件
vim -o:水平分割显示
vim -O:垂直分割显示

19、将当前文件的部分内容另存为另外一个文件
末行模式下使用w命令
:w
用法:ADDR1,ADDR2w /path/to/somewhere
20、将另外一个文件的内容填充在当前文件中
用法:r /path/to/somefile:在当前光标所处行的下方,添加另外一个文件内容
21、跟shell交互
末行模式下:
! COMMAND:在末行模式下查看另外一个文件
22、高级话题
末行模式下:
1、显示或取消显示行号
set nu:显示行号
set nonu:取消显示行号
2、显示忽略或区分字符大小写
set ic(ignorecase):忽略大小写
set noic(noignorecase):区分字符大小写
3、设定自动缩进
set ai(autoindent):设定自动缩进
set noai :取消自动缩进
4、查找的文本高亮显示或取消
set hlsearch:查找的文本高亮显示
set nohlsearch:查找的文本取消高亮显示
5、语法高亮显示
syntax on:开启语法高亮功能
syntax off:关闭语法高亮功能

23、配置文件
全局:/etc/vimrc:对所有用户生效
局部:~/.vimrc:只对当前用户生效(如果没有可以在家目录下新建该文件)

练习:
将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为
%s@ftp:\/\/instructor\.example\.com\/pub@http:\/\/172.16.0.1/yum@g
阅读(822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~