Vim文本编辑器实用入门

vi简介

vi:Visual Interface,是一种功能强大的文本编辑器,工作在字符模式下,它可执行输出、输出、查找、替换、块等众多文本操作,不需要图形界面,因此执行起来效率会非常高,主要用来编辑纯文本文件,常见的编码有,ASCII,Unicode等等。 

文本编辑器的种类:

    行编辑器:逐行来对文本进行处理的工具,如sed

    全屏编辑器:占据整个屏幕进行编辑,如nano,vi

vim工作模式

    输入模式:在文本文件当中输入内容

    命令模式:可执行一些编辑命令

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

vim的使用

打开文件

    vim [OPTIONS] FILE...

    +#:打开文件光标处在第#行

    +:打开文件光标处在最后一行

    +/pattern:打开文件光标处在第一次被pattern所匹配到的行

    -b:二进制方式打开文件

    -d:比较两个文件的不同之处

    -m:制度方式打开文件

模式转换

    默认为命令模式

 命令模式 --> 输入模式

        -i:在当前光标处输入

        -a:在当前光标后方输入

        -o:在当前光标下方新建一行转为输入

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

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

        -O:在当前光标上方新建一行转为输入

 锁定和解锁:

        ctrl+s:锁定

        ctrl+q:解锁

    输入模式 --> 命令模式

    编辑模式 --> 末行模式

        :

    末行模式 --> 编辑模式

        Esc、Esc

        注意:输入模式需要先转为命令模式然后再转为末行模式

关闭保存文件:

 命令模式

        ZZ:保存并退出

        ZQ:不保存退出

 末行模式:

        w:保存文本不退出

        q:不保存退出

        wq:保存并退出

        wq!:强制保存并退出

        x:保存并退出

        w /PATH/TO/SOMEFILE:将文件内容保存至指定文件中

        r /PATH/TO/SOMEFILE:将指定文件的内容读取至当前文件中

        ! COMMAND:可临时执行shell命令

        r! COMMAND:将命令的执行结果添加至当前光标下方

光标跳转:

 字符间跳转:

        h:左

        j:下

        k:上

        l:右

        #COMMAND:跳转#个字符

 单词间跳转:

        w:跳转至下个单词的词首

        e:跳转至下个单词的词尾

        b:跳转至上个单词的词首

        #COMMAND:跳转#个单词

 行尾行首跳转:

        ^:非空白字符行首

        0:绝对行首

        $:跳转至行尾

 当前页面跳转

        H:页首

        M:页中

        L:页尾

 行间跳转:

        #G:跳转至第#行

        G:跳转至尾行

        gg:跳转至首行

 句间跳转:以.为分隔

        ):跳转下一句

        (:跳转上一句

 段落跳转:以空行为分隔符

        }:跳转至下一段落

        {:上一段落 

翻屏操作:

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

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

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

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

    Enter:逐行向后翻

命令模式操作:

 字符编辑:

        x:删除光标处的字符

        #x:删除光标以右的#个字符

        xp:当前光标所在处的字符与光标后的字符做交换

        ~:转换大小写

 替换命令:

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

        R:开启替换模式

 删除命令:

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

        d^:删除当前光标所在行以左的所有字符

        d$:删除当前光标所在行以右的所有字符

        dw:删除当前光标所在处下一个单词

        de:删除当前光标所在处的下一个单词

        db:删除当前光标所在处的上个单词

        dd:删除光标所在处的一整行

        #dd:删除光标所在行开始向下#行

        D:等于d$

 复制命令:

        y:复制,可结合光标跳转字符

        y$:复制光标所在行以右的所有字符

        y^:复制光标所在行以左的所有字符

        yw:复制光标所在处下个单词

        ye:复制光标所在处下个单词

        yb:复制光标所在处上个单词

        y0:复制光标所在行以左的所有字符,包含空白字符

        yy:复制当前光标所在行

        #yy:复制光标所在行向下#行

        Y:复制光标所在行

   粘贴命令:

        p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,粘贴至当前光标所在处的后方

        P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,粘贴至当前光标所在处的前方

 改变命令:

        c:编辑模式 --> 输入命令,实现删除操作

        c$:删除光标所在处以右的所有字符并转为输入模式

        c^:删除光标所在处以左的所有字符并转为输入模式

        c0:删除光标所在处以左的所有字符并转为输入模式,包含空白字符

        cw:删除光标所在处下一个单词并转为输入模式

        ce:删除光标所在处下一个单词并转为输入模式

        cb:删除光标所在处上一个单词并转为输入模式

        cc:删除光标所在行并转为输入模式

        #cc:删除当前光标所在行向下#行并转为输入模式

        C:删除当前光标至行尾并转为输入模式

 一次性复制粘贴多次内容:

        100i zhai Esc:zhai可粘贴100次

可视化模式:

    v:按字符选定

    V:按行选定

    可结合编辑命令:d,c,p,y

    Ctrl+v:面向块

撤销操作:

    u:撤销前一次操作

    #u:撤销前#次操作

    U:撤销光标所在行所有此行的更改操作

    .:重复前一次操作

    n.:重复前n次操作

末行模式:

 地址定界

        :start_line,end_line

        #:指定的单个行

        #,#:从左侧的#行开始,到右侧之间的所有行

        #,+n:从左侧的#行开始向后加n行

        .:当前行

        $:最后一行

        $-1:表示倒数第二行

        %:表示全文,相当于1,$

        /pat1/,/pat2/:第一次被pat1所匹配到的行到第一次被pat2所匹配到的行结束,之间的所有内容

        #,/pat/:从指定的行开始到被第一次被pat匹配到的行结束,之间的所有内容

        /pat/,#:从第一次被pat匹配到的行开始到第#行结束,之间的所有内容

 后面可跟编辑命令:

        d:删除

        y:复制

        w /PATH/TO/FILE:将范围内���行保存至指定文件中

        r /PATH/TO/FILE:将指定文件的内容插入指定的所有行处

 查找:

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

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

        n:光标跳转至下一个被查找到的内容

        N:与n相反

vim寄存器:

    有26个命名寄存器和1个无命名寄存器,存放至不同剪切板中

    a,b,...,z用"寄存器表示,存放在数字和命令之间

    如:3"ayy表示复制3行达到a寄存器中

    "ap:表示将a寄存器中的内容粘贴

编辑二进制文件:

    vim -b BINFILE

    扩展命令模式下,利用xxd命令转换为可读的十六进制

    :%!xxd

    编辑二进制文件

    扩展命令模式下,利用xxd命令转换回二进制

    :%!xxd –r

多文件模式:

    vim FILE1 FILE2 FILE3 ...

    :next 下一个文件

    :prev 上一个文件

    :last 最后一个文件

    :first 第一个文件

    :wall 保存所有

    :qall 不保存退出所有

    :wqall 保存所有并退出

使用多窗口:

 多文件分割

        vim -o|O FILE1 FILE2 FILE3 ...

        -o:水平分割

        -O:垂直分割

        在窗口间切换:Ctrl+w,左右箭头

 单个文件:

        Ctrl+w,s:水平分割

        Ctrl+w,v:垂直分割

        Ctrl+w,q:取消相邻窗口

        Ctrl+w,o:取消全部窗口

        :qall 退出所有

定义vim工作特性:

 配置文件:永久有效

        全局:/etc/vimrc

        用户:~/.vimrc


    扩展模式:当前vim进程有效

 (1)行号

            显示行号:set number可简写为set nu

            取消行号:set nonumber可简写为set nonu

 (2)括号成对匹配

            匹配:set showmatch可简写为set sm

            取消匹配:set noshowmatch可简写为set nosm

 (3)自动缩进

            缩进:set ai

            取消:set noai

 (4)高亮搜索

            启用:set hlsearch

            禁用:set nohlsearch

 (5)语法高亮

            启用:syntax on

            禁用:syntax off

 (6)忽略字符大小写

            启用:set ic

            禁用:set noic

 (7)文件格式

            启用:fileformat=unix

            禁用:fileformat=dos

vim内置帮助

    :help

    vimtutor

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • 1. 关于Vim vim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我...
    Dyworldhua阅读 1,328评论 0 2
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,033评论 9 467
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,713评论 3 48
  • 自我总结篇: 对文件的操作技巧: vim文件一个有三种状态:命令(浏览/输入命令转变末行模式),文本(添加/编辑/...
    小知大知阅读 786评论 0 0
  • vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下: v 从光...
    超__越阅读 1,288评论 0 0