Vim的常用操作

来源:互联网 发布:js判断是否在数组中 编辑:程序博客网 时间:2024/05/10 09:21

        使用Vim也有一段时间了,虽然平时开发也会用到IDE,但是在Linux上进行系统的日常维护还是要经常使用Vim的,而且开发的时候能使用Vim也尽量使用Vim。废话不说了,下面总结一下自己经常使用的Vim的功能。

        一、基本操作

        一般模式切换到编辑模式
        i ,I→ i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。
        a,A→a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。
        o,O→o 为『在目前光标所在的下一行处插入新的一行』, O 为在目前光标所在处的上一行插入新的一行。
        r,R→r 只会取代光标所在的那一个字符一次,R会一直取代光标所在的文字,直到按下 ESC 为止。

        一般模式切换到指令列模式
        :w→将编辑的数据写入文件中。
        :saveas <path/to/file>→另存为<path/to/file>。
        :q→离开Vim。
        :q!→强制离开不储存文件。
        :wq→保存后离开。
        :set nu→显示行号。
        :set nonu→取消行号。

        一般模式下的常用操作
        hjkl→移动光标(←↓↑→),强烈推荐使用其来移动光标,使用多了就条件反射了。
        :help <command>→ 显示相关命令的帮助。
        Ctrl-f→屏幕『向下』移动一页,相当于 [Page Down]按键。
        Ctrl-b→屏幕『向上』移动一页,相当于 [Page Up] 按键。
        Ctrl-d→屏幕『向下』移动半页。可以这么记:键盘上d在f的左边,所以向下移动半页。
        Ctrl-u→屏幕『向上』移动半页。
        0→数字零,到行头。
        $→到本行行尾。
        ^→到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)。
        g_→到本行最后一个不是blank字符的位置。
        gg→到第一行。
        G→到最后一行。
        /word→向光标之下寻找一个名称为 word 的字符串。例如要在文件内搜寻hello world这个字符串,就输入/hello world即可。
        ?word→向光标之上寻找一个字符串名称为 word 的字符串。
        n→这个n通常配合/word或?word使用。代表『重复前一个搜寻的动作』。举例来说, 如果刚刚我们执行/hello world去向下搜寻hello world这个字符串,则按下 n 后,会                 向下继续搜寻下一个名称为hello world的字符串。如果是执行 ?hello world的话,那么按下n则会向上继续搜寻名称为hello world的字符串。
        N→与n刚好相反,为『反向』进行前一个搜寻动作。 例如 /hello world后,按下 N 则表示『向上』搜寻hello world。
        :1,$s/word1/word2/gc→从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认 (confirm) 是否需要取代。
        x→删除当前光标所在的一个字符。
        dd→剪切当前行,并把删除的行存到剪贴板里。
        yy→复制游标所在的那一行。
        p,P→p为将已复制的整行数据在光标下一行贴上,如果复制的不是整行,则在光标之后贴上。P则为贴在游标上一行或之前。
        u→撤销(undo)。
        Ctrl-r→反撤销(redo)。
        cw→替换从光标所在位置后到一个单词结尾的字符。
        gU→变大写。
        gu→变小写。
        dt"→删除所有的内容,直到遇到双引号"。

        二、进阶操作

        区块选择和块操作
        v→字符选择,会将光标经过的地方反白选择。
        V→行选择,会将光标经过的行反白选择。
        Ctrl-v→区块选择,可以用长方形的方式选择。
        y→将反白的地方复制起来。
        d→将反白的地方剪切掉。
        在所有行之前加东东: 0 <Ctrl-v> <Ctrl-d> I-- [ESC]
                                                 ^→到行头
                                                 <Ctrl-v>→开始块操作
                                                 <Ctrl-d>→向下移动 (也可以使用hjkl来移动光标,或是使用%,或是别的)
                                                 I-- [ESC]→I是插入,插入“--”,按ESC键来为每一行生效。
       在所有行之后加东东: <C-v> <C-d> $ A
                                                <C-v>→开始块操作
                                                <Ctrl-d>→向下移动 (也可以使用hjkl来移动光标,或是使用%,或是别的)
                                                $ 到行最后
                                                A 输入字符串,按ESC。

        多文件编辑
        1.vim还没有启动的时候:
        在终端里输入vim file1 file2 ... filen    便可以打开所有想要打开的文件。此时:
        :n→编辑下一个文件。
        :N→编辑上一个文件。
        :files→列出目前这个vim所开启的所有文件。

        2.vim已经启动后:
        输入:e file    便可以再打开一个文件,并且此时vim里会显示出file文件的内容。此时:
        :bn→编辑下一个文件。
        :bp→编辑上一个文件。
        :files→列出目前这个vim所开启的所有文件。

        多窗口编辑
        :sp→创建分屏(:vsp创建垂直分屏)。
        <Ctrl-w><dir>: dir就是方向,可以是hjkl或是←↓↑→中的一个,其用来切换分屏。
        <C-w>_ ( 或 <C-w>| ): 最大化尺寸(<C-w>| 垂直分屏)。
        <C-w>+ ( 或 <C-w>- ): 增加尺寸。

        光标移动
        光标移动的操作都是在一般模式下进行的。
        w→到下一个单词的开头。
        e→到本单词的结尾。
        如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成。
        如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。

        

        为程序员量身定做的光标移动:
        % : 匹配括号移动,包括 (, {, [
        * 和 #: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

        以上操作可以覆盖平时Vim基本操作的80%了,只要勤加练习,即可熟练掌握了。
原创粉丝点击