VIM编辑器

vim编辑器

  文本编辑器:
      文本:纯文本,ASCII text,Unicode ;【word不是纯文本处理 工具,有各种格式】
  文本编辑器种类:
      行编辑器:sed
      全屏编辑器:nano,vi

      vi:visual interface
      vim:vi improved 即vi的增强版

vim:格式 化的编辑器
        基本模式:
            编辑模式,即命令模式  
            输入模式,即插入模式
            末行模式:
                内置的命令行接口。

    打开文件:
      vim [options] [file ..]
       默认打开光标在首行
        +:只带+这一个参数,光标显示在尾行行首
        +# :打开文件后,让光标处于#行的行首
        +/pattern:打开文件后,直接让光标处于第一个被 pattern匹配的位置行的行首【例如到达文件中lisa的位置,vim /path/to/file +/lisa即可
  
   模式转换:
        编辑模式:默认模式
             编辑模式 --> 输入模式:
                i:insert 在光标所在处输入;
               a:append,在光标处后方输入;
               o:在光标所在处下方打开一个新行,会把原来处于下行的数据整体下移;
                I:【大写的i】在光标所在的行的行首输入;
                A:在光标所在行的行尾进行输入;
                O:在光标所在处的上方打开一个新行。
            
          输入模式 -->编辑模式:
              ESC

          编辑模式  -->末行模式【内置命令行】:
              :冒号
          末行模式 -->编辑模式:
                ESC

        关闭文件:
              ZZ:保存并退出【编辑模式下】
              :w 保存
              :q退出
              :q! 强制退出,不保存此前的编辑        
              :wq 保存并退出
              :x 保存并退出
              :w /path/to/file 另存为/path/to/file

        光标跳转:
                字符间跳转
                  h,l向左和向右一个字符跳转
                  j,k向下和向上一行跳转
                如果在这四个字母前面加上一个数字,则表示往此方向跳转此数字个字符
                单词间跳转
                    w:跳到下一个单词的词首;
                    b:当前或前一个单词的词首;
                    e:当前或后一个单词的词尾      
                    也可以在字母前加数字表示跳转单词的个数

                行首行尾跳转
                    ^:跳转至行首的非空白字符;
                   0:跳转至绝对行首,包括空字符;
                   $:跳至绝对行尾

                行间跳转
                   #G: 跳转至#行行首
                    1G或gg:跳转至第一行
                    G:跳转至最后一行

                句间跳转:
                      ):下一句
                      (:前一句
                        前面可以加数字

                段间跳转 
                    }下一段
                    {上一段

      翻屏:
              CTRL+f :向文件尾部翻一屏
              CTRL+b:向文件首部翻一屏
              CTRL+d:向文件尾部翻半屏
              CTRL+u:向文件首部翻半屏
              回车键:向后翻行

   vim的编辑命令:
        字符编辑
              x:删除光标所在处的字符,#x 删除光标处所在处起始的#个字符
              xp:交换光标所在处的字符与其后面的字符的位置

          
        替换命令(replace)
            r:替换广播所在处的字符
                r之后输入将要替换后的字符

        删除命令
            d:删除命令
                d$ 删除当前光标所在处至行尾
                d^:删除当光标至行首【非空行首】
                d0:删除当光标至绝对行首
                dw:删除至下一个单词行首
                de:删除至当前单词结尾
                db:删除至当前单词行首
                dd:删除整行
              以上命令前添加数字即可对数字倍数的目标数据进行删除 ,删除后的结果会保存在缓冲区,即剪切的功能 

        粘贴命令(p,put,paste):
              p:缓冲区的内容如果是整行,则粘贴在当前光标所在行的下方,否则粘贴至当前光标所在处的后方
             P:缓冲区的内容如果是整行,则粘贴在当前光标所在行的上方,否则粘贴至当前光标所在处的前方

            dd命令的复制的都是行数据,其他的都是非行数据.


        复制命令(yank,y):
                y:复制,工作行为相似于d命令
                y$
                y^
                y0
                ye
                yw 
                yb
                 yy 复制一整行
                  #command 复制#个/行数据

      改变命令(change,c):
           编辑模式 --> 输入模式,实现删除操作 ;
                c$
                c^
                c0 

                cb
                ce
                cw
        
                cc 删除光标所在行,并且转换为输入模式
                        #command删除#个,并转换为输入模式

       可视化模式(visual):
              移动上下左右即可进行范围内选中
              v:按字符选定
              V:按行选定
             结合编辑命令:d,c,y

      撤销操作(undo):
              u:最多可以撤回50步
                    #u 撤销此前的#步操作
      撤销此前的撤销:
              CTRL + r 

      执行重复前一个编辑操作:
              .小数点

       vim 自带教程:vimtutor命令

  vim末行模式:
      内建的命令行接口
      
      1、地址定界
            :start_pos,[end_pos]
                 #:特定的第#行
                 #,#:指定行范围起始-结束;
                 .:小数点表示当前行;
                 $:表示最后一行;
                 #,+#:指定行范围,做错为起始行绝对编号,右侧为相对左侧行号的偏移量,例如3,+7表示第三行和后面的7行
                %:全文
                  /pattern/:从光标所在处起始向文件尾部,第一次被模式所匹配的行
                /pattern1/,/pattern2/:从广播所在其实向文件尾部,第一次由pattern1匹配到的行开始,到第一次由pattern2匹配到的行结束之间的所有行。
       一般同编辑命令一同使用,实现编辑操作:
        d删除
        y复制
        c删除并输入

        例如:1,$d即删除全文
  
      w /path/to/file :将范围内的 文本另存为;
      r /path/to/file:将指定的文本读取并插入至当前文本的指定位置 

    2、查找
          /pattern:从当前光标处所在处往文件尾部查找能够被当前模式匹配道德所有字符串;
         ?pattern:从当前光标处所在处往文件首部查找能够被当前模式匹配道德所有字符串;
            n:下一个,与查找方向相同;
           N:上一个,与查找方向相反。
  
    3、查找并替换
          s:末行模式的命令,使用格式:
              s/要查找的内容/替换为的内容/修饰符
                  要查找的内容:可使用正则表达式;
                  替换为的内容:不能使用正则表达式,但是可以引用(如果要查找的内容福分在模式中使用分组符号,使用\1,\2...后向引用;或者可以直接引用查找模式匹配的全部文本,使用&符号)
                   修饰符:
                        i:忽略大小写;
                       g:全局替换,意味着一行中如果匹配到多次,则均替换【默认是只替换一行中第一次出现的】
      
          可把分隔符/替换为其他分隔符,可以使用@或#,因为/有时候是文本内的内容。

      实例:
          把文档中的所有以t开头的单词转换为首字母大写,即T开头:
              :%s@\<t\([[:alpha:]]\+\)\>@T\1@g

          把文档中的所有以t开头的单词转换为此单词后加er:
              :%s@\<t([[:alpha:]]+\)\>@er@g

  vim的多文件功能:
      vim  file1 file2 ...
            在文件间切换:
                  :next
                  :prev
                  :first
                  :last
          退出所有文件:
                  :wqall 保存并退出所有文件;
                  :wall 保存所有文件
                  :qall  退出所有文件
        多窗口显示:
                  -o:水平分割窗口
                  -O:垂直分割窗口

                 CTRL+w 松开后按上下左右键切换
                  当前单文件也可以分割为多个窗口查看:CTRL+w 松开后按s水平分割,CTRL+w,松开后按v垂直分割窗口

      定制vim的工作特性:
           在末行模式下的设定,仅对当前vim进程有效
           永久有效:
                全局:/etc/vimrc
                用户个人:~/.vimrc
          1、行号
                显示:set number,简写为set nu
                取消显示:set nonumber简写为set nonu
          2、括号匹配高亮【但是经验证,好像没那么有效,即设置不起作用,默认都是会匹配的】
                  匹配:set showmatch,set sm
                  取消:set nosm
          3、自动缩进
                  编辑一行缩进到一定位置,回车后自动缩进。
                set ai /noai :ai 即auto indent
         4、高亮搜索
                启用:set hlsearch
                禁用:set nohlsearch

        5、语法高亮
                启用:syntax on
                禁用:syntax off

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