vim初步——基础命令

来源:互联网 发布:网络教育毕业统考 编辑:程序博客网 时间:2024/05/16 04:42

    linux最常见常用的编辑器肯定是vi了,这个编辑器的历史可以追溯到上个世纪Unix的年代。

    VIM的意思是Vi IMproved,显然,是从vi发展过来的了,所以输入方式相当的接近(并不完全一致)。这里介绍的命令是基于VIM 7.3的版本。


    1. VIM的模式

     VIM是分成各种各样的模式的,各有各的作用,最常见的包括:普通模式,命令模式,插入模式,可视模式等

     普通模式不用介绍了,就是打开文件时的模式,可以阅读不能编辑,VIM提供了一大堆快捷键帮助你控制光标,让你可以快速的定位位置以及跳来挑去。

      插入模式就是开始编辑,VIM默认你是在阅读并非是编写,你必须主动通知它你要开始输入他才会跳到编辑模式(否则哪里有那么多快捷键好使呢),这点很多习惯windows下的IDE编辑的人刚转到VIM是不习惯的,这个只能靠多使用来熟悉了。

      命令模式是指在编辑器最下面一行可以输入命令,让编辑器做各种各样的事情(你甚至可以运行shell命令),切换到这个命令需要输入:,一般都是先狂按ESC键然后输入:来输入命令。

       可视模式是指输入v之后进入的模式,这个可以方便的用来选中你需要的块内容。


    2. 各个模式下的常用命令

    2.1 普通模式

          这个模式下快捷键最多了,VIM提供了相当强大的各种各样的方法让你阅读代码。

          hjkl这四个是标准键,用来控制光标上下左右移动的,所有用vi的人都应该知道,如果你不习惯你应该多使用使用,没其他的方法。这里补一句,虽然网上的文章从没看到过推荐,但上下左右键本身确实也可以控制光标,如果实在不习惯,那么。。。
          )移动光标到下一个句子
          (移动光标到上一个句子


         x 删除当前字符,可以使用数字来修饰实现多个字符删除
         X 删除光标左边的一个字符
         D 删除到行尾
         C 修改到行尾
         s 修改一个字符
         S 修改一整行
         dd 删除一行
         cc 剪切当前行并进入插入模式
         yy copy当前行
         r 替换当前字符
         R 进入替换模式,直到ESC结束
         . 重复最后一次的修改操作
         u  撤销上次操作       U 撤销本行的所有操作
         CTRL_R 恢复上次操作

         w   跳到下一个单词的第一个字符
         b   跳到上一个单词的第一个字符
         e   跳到下一个单词的最后一个字符
         ge  跳到上一个单词的最后一个字符
         $   跳到行末尾
         ^   跳到行头(第一个非空格字符)
         0   跳到行头(第一个字符)

         f?  向后搜索?字符,光标在?字符处
         F?  向前搜索?字符,光标在?字符处
         t?  向后搜索?字符,光标在?字符前
        T?  向前搜索?字符,光标在?字符前

        %   匹配括号,如果有数字,比如:50%,则意思是跳到文章的50%的地方
        G   跳到文件尾,如果有数字,比如:33G,则意思是跳到33行
        gg  跳到文件头
        H   光标跳转到屏幕上面
        M   光标跳转到屏幕中间
        L   光标跳转到屏幕下面

        CTRL_G 显示当前编辑信息,在ruler关闭的情况下特别有用
        CTRL_U 向上翻半屏
        CTRL_D 向下翻半屏
        CTRL_E 向上滚动一行
        CTRL_Y 向下滚动一行 (windows下不是这个意思)
        CTRL_F 向上翻一屏
        CTRL_B 向下翻一屏

        CTRL_O 跳转到较老的一个地方
        CTRL_I 跳转到较新的一个地方

        zz 当前光标行移动屏幕中间

        * 当前光标的字符串向下搜索,编程很有用
        # 当前光标的字符串向上搜索,编程很有用


    2.2 命令行模式

          命令行的命令都会在最下面一行显示出来,可以输入会被解释成并执行的文本
          :w   写文件
          :q   退出
          :ZZ  退出
          :q!  强制退出,没有保存的内容将被抛弃
          / ?  搜索,其中/是向后搜索,?是向前搜索,搜索到后,n是继续搜下一个,N是搜上一个

          :set 这个可以设置一系列的参数,用来实现各种各样的功能
           set number/nonumber                  显示/取消行号,也可以简写成set nu/nonu
           set ruler/noruler                            显示/取消状态显示
           set hlsearch/nohlsearch               搜索内容高亮
           set incsearch                                递增式搜索
           set showmode                              显示当前所处的模式
           set ignorecase/noignorecase       忽略大小写/不忽略大小写
           set nowrapscan                            搜索到达文件末尾后停止,不再从头搜起
           set list                                           显示TAB键
           set tabstop=4                                TAB占用4个字符宽度
           set expandtab                               不使用TAB,使用空格代替TAB
           set cinoptions=:N                         使得自动缩进时swithc和case在同一列上,个人爱好,可以不设

          :edit                                                编辑另一个文件
          :next/previous                                 下一个/上一个文件
          :first/last                                          第一个/最后一个文件
          :args                                                文件列表,当前文件会有[]提示
          :split                                                分割窗口
          :close                                              关闭文件


    2.3 可视模式

           这个其实和普通模式没有太大区别,往往进入可视模式是为了选中一段区域,后续可以剪切/复制/粘贴。

           进入可视模式后,操作光标时,从起始点到当前光标点的内容会被高亮显示,此时:

           d:剪贴选择的内容到剪贴板。
           y:拷贝选择的内容到剪贴板。
           c:剪贴选择的内容到剪贴板并且进入插入模式。
           o:可视模式下,o是移动到选中的另一端

           选中之后的粘贴命令:

           p:粘贴
           P:粘贴,但贴到光标前面

           需要特别指出的是CTRL_V是按块选择,可以选择一个矩形块并且矩形块内文本会高亮,粘贴也是成块的,这个功能在复制表格时非常强大


    2.4 插入模式

            i:在当前光标之处开始插入,当前光标处的字符会向后移动
            I:在当前行首插入
            a:在当前光标之后开始插入,当前光标处的字符是不移动位置的
            A:在当前行尾插入
            o:在当前光标的下一行创建一个新行,并进入插入模式
            O:在当前光标的上一行创建一个新行,并进入插入模式
            ~:修改光标下字符的大小写,并移动到下一个字符。
            c{motion}:删除 motion 命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。
            d{motion}:和上面差不多,但是不进入插入模式。
            y{motion}:和上面差不多,不过是拷贝


    3. 其他

         VIM除了按步就班之外,还有不少方便灵活的小功能。

    3.1  书签

         书签可以比较方便的记录位置供日后跳转,并且在VIM中没有GUI上的显示,VIM中书签是单个小写字母a~z
         ma: 标记书签a,其中a为书签的名字,可以是a~z
        `a:跳转到书签
        'a: 跳转到书签所在行
        `.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。
        :marks取得所有的标记


       另外还有一些特殊的标记,包括:
        '       跳转前的位置
        "       最后编辑的位置
        [       最后修改的位置的开头
        ]       最后修改的位置的结尾
        这样的书签只能在本文件编辑时使用,如果想在文件中标记跳转,那么需要使用大写的书签,比如mA


    3.2 寄存器

        很多编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器(Registers)
        :reg         列出当前定义的所有寄存器名和内容
        使用寄存器的命令为双引号 ",比如:我们要拷贝当前行到寄存器 k。你应该按 "kyy。然后可以使用命令 "kp 来粘贴寄存器 k 里面的内容到你想要的位置


    3.3 录制宏

        有时候,你会发现你自己在文章的每段或者每行都重复相同的一系列动作。VIM 允许你记录一个宏来完成你的特殊需要。
        这个录制分成3步走:
        1. "q{register}" 命令启动一次击键记录,结果保存到 {register} 指定的寄存器中。
            寄存器名可以用 a 到 z 中任一个字母表示。比如 qa,将会记录并且把宏存在寄存器 a 里面。
        2. 输入你的命令
        3. 键入 q(后面不用跟任何字符)命令结束记录。
        @register:使用存在寄存器 register 的宏。比如 @a,将会使用存在寄存器 a 里面的宏


    3.4 键盘映射

        映射可以使你把一系列 Vim 命令绑定为一个单键。假设你要用一个大括号将一个特定的单词括起来。例如,把 "amount" 变成 "{amount}"。用 ":map" 命令,就可以让 F5 来完成这个工作。命令如下:
        :map <F5> i{<Esc>ea}<Esc>
        在这个例子中,触发器是一个单键;它还可以是任何字符串。但若你使用一个已经存在的 Vim 命令,该命令将不在有效。所以你最好避免出现这种情况。
        一个可用于映射的键是反斜杠。因为你很可能想定义多个映射,那就加上另一个字符。你可以映射 "\p" 为在单词两端加园括号,而映射 "\c" 为加花括号,例如:
        :map \p i(<Esc>ea)<Esc>
        :map \c i{<Esc>ea}<Esc>
       你需要在敲入\后,立即敲入p,以便 Vim 知道它们组成一个命令。
        ":map" 命令(无参数)列出当前已定义的映射,至少会包括普通模式下的那些。

    3.5 插件

        Vim 可以通过插件增强功能。插件其实是一个当 Vim 启动的时候能被自动执行的脚本。
        简单地把插件放到你 Vim 的 plugin 目录中就可以使它生效。Unix下插件目录是~/.vim/plugin/

    3.6 分割窗口

        这是VIM一个很强大的特性,使用起来非常非常的酷,参照文件内容编码时尤其有用
        :split           分割窗口,这个是水平分割窗口的
        :vsplit         分割窗口,这个是竖直分割窗口的
        :close        关闭窗口
        :only          仅编辑一个窗口
        CTRL-W w 命令可以用于在窗口间跳转。
        要扩大窗口:
            CTRL-W +
        要缩小窗口:
            CTRL-W -

        CTRL-W h        跳转到左边的窗口
        CTRL-W j         跳转到下面的窗口
        CTRL-W k        跳转到上面的窗口
        CTRL-W l         跳转到右边的窗口

        CTRL-W t         跳转到最顶上的窗口
        CTRL-W b        跳转到最底下的窗口


    当然,VIM还有非常丰富的内容,有很多的插件可以挑选,完成各种各样的功能,如果挑选一下使用熟练的话,编辑起来必然事半功倍。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鼻塞有一个月了怎么办 感冒一直流清水鼻涕怎么办 孩子受凉流清水鼻涕怎么办 一遇冷空气就打喷嚏流鼻涕怎么办 打喷嚏鼻塞流清鼻涕怎么办 哺乳期鼻子不通气有鼻涕怎么办 宝宝热伤风流清鼻涕怎么办 哺乳期感冒流鼻涕怎么办最有效 小孩睡觉太晚了怎么办 孩子晚上睡觉不安稳怎么办 月子里宝宝睡觉不安稳怎么办 月子宝宝睡觉不安稳怎么办 孩子老是流黄鼻涕怎么办 孕妇流黄鼻涕怎么办速效办法 孕妇感冒流黄鼻涕怎么办 孕妇有黄痰和黄鼻涕怎么办 孕妇感冒了流黄鼻涕怎么办 怀孕感冒了怎么办鼻塞流鼻涕 怀孕初期感冒了怎么办鼻塞流鼻涕 怀孕9个月流鼻涕怎么办 怀孕5个月流鼻涕怎么办 小孩老是流黄鼻涕口臭怎么办 狗狗有食欲流黄鼻涕拉稀怎么办 小孩流黄鼻涕咳嗽怎么办 小狗感冒了一直打喷嚏怎么办 眼干眼屎多模糊怎么办 宝宝眼睛上火眼屎多怎么办 眼睛发干眼屎多怎么办 三个月宝宝眼睛流泪有眼屎怎么办 小孩眼睛流泪有眼屎怎么办 宝宝上火眼睛有好多眼屎怎么办 宝宝眼睛流泪还有眼屎怎么办? 新生儿眼睛上火眼屎多怎么办 铁耳屎在最里面怎么办 婴儿鼻屎特别深怎么办 鼻子干呼吸就疼怎么办 儿童鼻子里总有好多鼻屎怎么办 小孩鼻子里有鼻屎呼吸不通怎么办 鼻子不通通气鼻屎粘在鼻子怎么办 鼻子里面干燥长鼻屎怎么办 鼻孔里干的难受怎么办