vim编辑器

vim编辑器    模式化编辑器                                           #vimtutor    vim自带练习教程 !

基本模式:
        1.命令模式 2.插入模式 3.扩展模式
  
#vim filename
    +#  打开文件后 让光标处于#行的行首
    +/PATTERN    打开文件并使光标处于第一个匹配到的行的行首
    +  file    直接打开file,光标在最后一行
    -b file    二进制方式打开文件
    -m file    只读打开文件

    -d file1 file2…   比较多个文件

 锁定和解锁:CTRL+s,Ctrl+q

===基本操作:

 1.模式转换:
    命令模式(默认)==> 插入模式
  
     i:     insert 光标所在处输入
     I:    光标所在行行首输入
    a:    append 光标所在处后方输入
    A:    光标所在行行尾输入
    o:    光标所在下方新建一行
    O:    光标所在上方新建一行

  插入模式–>命令模式:
    ESC

  插入模式–>扩展模式:
    :

  扩展模式–>命令模式:
    ESC
 
 2.保存退出文件:
    命令模式下
        ZZ:保存并退出 
        ZQ:不保存退出
  
   扩展模式下:
        :q  退出
        :q! 强制退出  不会保存编辑操作
        :wq 保存并推出
        :x  保存并退出
            :w  /PATH 另存为
 
 
 3.光标跳转:    命令模式下:
  字符间跳转:
        h左  j下  k上  l右  #前可加数字# 表示跳转#个单位

  单词间跳转:
        w 下一个单词 词首
        b 前一个单词 词首   若不在 当前单词词首 则先跳转到当前单词词首
        e 下一个单词 词尾   同上
        #前可加数字# 表示跳转#个单词

  行首行尾跳转:
        ^ 跳转至行首 第一个 非空白字符处
        0 跳转至行首 TAB除外
        $ 跳转至行尾

  行间跳转:
        #G 跳转至#号行
        1G|gg    第一行
        G   跳转至最后一行
   
  句间跳转: 支持加数字
        )
        (
  段间跳转: 支持加数字
        }
        {
  
  当前页跳转:
        H:页首
        M:页中间行
        L:页底 
   
 4.翻屏:
        ctrl+f 向文件 尾部 翻一屏
        ctrl+b 向文件 首部 翻一屏
  
        ctrl+d 尾部 半屏
        ctrl+u 首部 半屏
  
        enter:按行向后翻
  
  

=== vim命令模式下:

 1.字符编辑
        x 删除 光标所在处 字符       向后
        #x  删除 光标所在处 向后#个字符
 
        xp 交换 光标所在处 与其后一个字符 的位置
  
        ~ 转换大小写

 2.替换
        r  CHAR  替换光标所在处字符
        R    切换成REPLACE模式
 
 3.删除(delete)
        d 删除 可结合光标跳转字符
        dd 删除 光标所在行       #dd 加数字 删除共#行
        d$:  删除 光标所在处到 行尾的字符
        d^:  删除 光标所在处到 行首的字符
        d0:  删除 光标所在处到 "行首"的字符
        D:从当前光标位置一直删除到行尾,留空行,等同于d$
   
        dG 删除 当前光标位置到 尾行
         dg 删除 当前光标位置到 首行
     
        dw  |
        de  | 结合 跳转字符 选定区域
        db  |
   删除的内容保留在缓冲区 可粘贴最后一个

 4.复制(yank)
        y 复制,
        Y 复制整行
        yy 复制整行
        y$
        y^
        y0

  类似d删;   
        ye  |
        yb  | 结合 跳转字符 选定区域
        yw  |

 5.粘贴(paste)
    小写p 粘贴缓冲区(包括d最后删除的行) 中的内容如果为 整行粘至 光标所在行 下一行,
        否则粘贴到 光标所在处 后方
    大写P   粘贴缓冲区(包括d最后删除的行) 中的内容如果为 整行粘至 光标所在行 上一行,
        否则粘贴到 光标所在处 前方

 6.改变(change)   编辑模式–>插入模式
        c 对 选定区域 执行操作后,进入 插入模式
        cc  删除 整行并进入 插入模式
        c$
        c^
        c0
   
        cb   |
        ce   | 结合 跳转字符 选定区域
        cw   |
  
 7.可视化模式(visualization)   类似 鼠标选定 效果; 选定区域后可执行操作
        v 按 字符 选定
        V 按 行   选定
        ctrl v  块选定
  
      结合编辑命令 d,p,c 执行相应操作
 
 8.撤销(undo)
        u 撤销上一步操作    可连续执行  默认50个
        #u 撤销此前 #次操作   结合数字    3u:撤销最近3次操作
        U 撤销光标所在行所有动作
  
 9.恢复(recovery);    撤销 之前的撤销
        Ctrl+r
 
 10.重复执行上一步操作  点号
        "."
        #.    #次

= 100izhou [ESC] 粘贴 zhou 100次
 
 <start position>   CMD  <end position>
 Command: y 复制、d 删除、gU 变大写、gu 变小写
 例如 0y$ 命令意味着: 拷贝全文
  ye 从当前位置拷贝到本单词的最后一个字符
  
=  26个命名寄存器和 1个无命名寄存器,
 存放不同的 剪贴版内容,可以不同会话间共享。
 用a,b,…,z表示,用“寄存器表示,放在数字和命令之间
  如:3"tyy 表示复制3行到t寄存器中
  "tp  表示将t寄存器内容粘贴
 

=== vim扩展模式:     内建的命令行接口;

  命令模式下     ":" 进入

 1.定位
        #[,#]
        .             当前行
         %         全文
        # 特定第#行           :5     第5行
        #,# 指定范围行      :3,7   3到7行
   
        #,+#   指定起始行 及偏移量       
                 :4,+6   4到10行   :.,$  当前行到最后一行
     
        /pat/: 从光标所在处起始 向文件尾部第一个被匹配到的行
        /pat/,$  从光标起始 向文件首部
    
        /pat1/,/pat2/  从光标处起始,第一次pat1匹配到的行 到 第一次pat2匹配到的行
   
   选定区域 可结合编辑命令使用
        c 修改
        d 删除
        y 复制
        w /PATH  另存为
        r /PATH  将指定文件中的文本 读取插入指定位置
 
 
 2.查找
        /str          从光标处 向文件尾部 查找匹配的字符串
        ?str         从光标处 向文件首部 查找匹配的字符串
        n:         下一个,与命令方向相同
        N:        上一个,与命令方向相反
   
   
 3.查找并替换
        :s/要查找内容/替换为的内容/修饰符
            "要查找的内容": 可使用正则标表达式
            "替换的内容": 不能使用正则表达式    可引用
            "要查找的内容"使用了 分组,在"要替换的内容"中可后向引用
        s/pat/&str/g 未使用分组,可直接引用全部内容  &
  修饰符:
        i 忽略大小写
        g 全行替换    因为默认只匹配每行的第一个
 

:!command 不退出vi  执行某个命令
:r!command 读cmd的stdout到当前位置

==

 = 以二进制方式打开文件
   vim –b binaryfile
  扩展命令模式下,利用xxd命令转换为可读的十六进制
        :%!xxd  编辑二进制文件
  扩展命令模式下,利用xxd命令转换回二进制
        :%!xxd -r
 
 
= 同时打开多个文件: 
  vim FILE1 FILE2 FILE3 …
        :next 下一个
        :prev 前一个
        :first 第一个
        :last 最后一个
        :wall 保存所有
        :qall 退出所有
        :wqall 保存所有
   
 = 多文件分割 vim  -o|-O   FILE1 FILE2 …
        -o: 水平分割
        -O: 垂直分割
    在窗口间切换:Ctrl+w, 方向键
 
 = 单文件窗口分割:
        Ctrl+w,s: split, 水平分割
        Ctrl+w,v: vertical, 垂直分割
        ctrl+w,q:取消相邻窗口
        ctrl+w,o: 取消全部窗口
       :wqall 退出
   
***配置vim工作特性:

 配置文件:永久有效
    全局:/etc/vimrc
    个人:~/.vimrc

 (1) 行号
    显示:set number        简写为set nu
    取消显示:set nonumber  简写为set nonu
  
 (2) 括号成对匹配
    匹配:set showmatch, 简写为set sm
    取消:set nosm

 (3) 自动缩进
    启用:set ai
    禁用:set noai
  
 (4) 高亮搜索
    启用:set hlsearch
    禁用:set nohlsearch

 (5) 语法高亮
    启用:syntax on
    禁用:syntax off
  
 (6) 忽略字符的大小写
    启用:set ic
    不忽略:set noic
  
 (7) 文件格式
    启用:set fileformat=unix
    不忽略:set fileformat=dos
  
 (8) 设置文本宽度
    :set textwidth=65 (vim only)  从左起
    :set wrapmargin=15  从右起
  
    :set all 查看可用设置  :set
    :help 帮助文档
 
  
  
 例   :%s/zjj/Zjj/ig  
    全文中zjj  z改为大写,
    查找时不区分大小写
    一行中匹配的多个全部替换
    
 例   分隔符///可替换  @@@ ###
   :1,40s#/etc/passed#/etc/shadow#i
    1到40行内 /etc/passwd  替换为 /etc/shadow
    查找时不区分大小写
    每行只替换第一个被匹配到的
  
 例   %s@\<t\([[:alpha:]]\+\k)\>@T\1@g
    全文中 小写t开头的单词  全部换位大写T

=== 当查找完后,想去除 匹配的 高亮,与之对应有两种常用的方法:

        1. 命令模式下,匹配一个更长或内容上没有的内容,使之覆盖原有匹配.

        2.  扩展模式下,输入noh,此时屏幕上原来的匹配已取消.

原创文章,作者:Jasper,如若转载,请注明出处:http://www.178linux.com/31903

(0)
JasperJasper
上一篇 2016-08-10 10:27
下一篇 2016-08-10 10:27

相关推荐

  • 硬链接与软链接

    引言: 链接,一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。 Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。 Inode译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。 Block:存放档案内容数据的地方。 &n…

    Linux干货 2016-10-20
  • LINUX用户建立秘钥认证实现SHELL脚本管理,分发,部署

    环境介绍 SSH Server [root@vm1 ~]# ifconfig |awk '/broadcast/{print $2}' 192.168.99.241 SSH Client [root@vm2 ~]# ifconfig |awk '…

    Linux干货 2017-01-05
  • 马哥教育N22期第七周作业

    1、创建一个10G分区,并格式为ext4文件系统; [root@localhost xuc]# cat /proc/partitions  major minor  #blocks  name    8   &…

    Linux干货 2016-10-24
  • sed 高级用法(1) 之 n N

    前言 我在参考其它多个Blog中发现,有些Blog中sed的功能介绍和实际有出入,这可能和版本有关系,正如sed文档中所说“might change in future versions”,所以本文sed是以4.2.1为例。如果以后sed更新版本了,有可能会不一样。 好记性不如烂笔头! sed的工作原理 sed维护着两个数据的缓冲空间,一个是模式空间(pat…

    Linux干货 2015-07-03
  • 网络接口Bonding以及网络组

    网络接口Bonding就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 网络组 :网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量。网络组不同于旧版中bonding技术,提供更好的性能…

    Linux干货 2016-11-23
  • nginx反向代理负载均衡集群配置详解

    反向代理负载均衡集群配置详解 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时站在服务器角度来看,代理服务器对外就表现为一个反向代理服务器。 对反向代理服务器的攻击并不会使得后端内网Web服务器上网页信息遭到…

    Linux干货 2016-11-07