美文网首页Linux
简明 vim 入门手册

简明 vim 入门手册

作者: 字母数字或汉字 | 来源:发表于2016-09-27 01:26 被阅读71次

    目标人群:熟悉使用标准文本编辑器的用户;知道常用术语,比如游标;有入门级别的终端操作经验——会安装程序,会运行程序。

    安装与启动

    我假设你已懂得如何安装,或者说,我假设你接触这篇文章前,电脑中已经有了 vim 可以使用。

    启动它,不要急着操作,往下阅读。

    工作模式

    • Normal 正常模式
    • Visual 阅读模式
    • Insert 编辑模式、Replace 替换模式
    • Command-line 命令行模式

    vim 在启动时处在 Normal 模式,这时会有一些功能键可用,也可以跳转到其他模式。

    但我们先不讲完整细节,现在先知道有这么四种,足够了。

    键位描述

    • x 表示按小写的 X,即 X
    • X 表示按大写的 X,即 SHIFT+X
    • <C-x> 表示 CTRL+X
    • <C-X> 表示 CTRL+SHIFT+X
    • <n> 表示数字

    移动游标

    你一定会发现 ←↓↑→ 可以移动游标了,但在 Normal 模式下,你可以使用 hjkl 键(一一对应)实现同样的操作,这是给手指不想离开键盘的人准备的甜点。

    编辑、保存、退出

    Normal 模式下,按 i 键进入 Insert 模式,此时你可以编辑了,输入、删除都是惯常的方式。当你编辑结束,按 ESC 键返回 Normal 模式。

    拓展一下,你有更多的方式来进入 Insert 模式:

    i insert,在光标前插入
    I         在行首插入
    a append,在光标后插入,相当于右移一次光标
    A         在行末插入
    s substitute,删除光标所在的字符,再插入
    S             删除光标所在行,再插入
    o open,在当前行之下新建行,再插入
    O       在当前行之上新建行,再插入
    

    但不必要一开始就记住这么多,先记住 i 就够用了。罗列他们主要是告诉你两点:

    1. vim 大量使用快捷键,通过熟练使用快捷键提高效率
    2. 快捷键大都是有对应含义的,且大小写不同时效果不同

    想保存吗?在 Normal 状态按 : 键,进入 Command-line 模式。尝试以下组合:

    :w  write,保存
    :w [filename] 另存为
    :q  quit,退出
    :wq 保存并退出
    :w! 强行保存(如果文件标识为只读也尝试保存,具体能不能成功那就看权限了)
    :q! 强行退出(不保存却退出)
    

    Command-line 模式,你的命令需要按 <enter> 键执行。

    最基本的操作你已经学会了,现在开始使用它吧,试着熟练。

    好像我们忘了如何读取文件,那就说两个:

    首先,你可以在启动 vim 的时候使用 vim <filename> 来打开某个文件,或者你可以使用 :r [filename] 命令来将文件内容追加到当前行之后

    复制、剪切、粘贴

    现在请回到 Normal 模式(按 ESC),在你欲处理的文本的前后任一端按 v 键进入 Visual 模式。

    然后,移动游标,选中你要处理的文本。

    y yank,提起。复制选定块到缓冲区,并回到 *Normal* 模式
    d delete,删除。剪切选定块到缓冲区,并回到 *Normal* 模式
    

    处理完后,你回到了 Normal 模式,现在可以粘贴了。

    p put,放下。把缓冲区的内容粘贴到游标后
    P 粘贴到游标前
    

    撤销、重做、重复命令

    u  undo,撤销
    U        撤销当前行最近的所有修改
    <C-r> redo,重做
    
    .  repeat,重复最后一条命令
    <n><command> 重复 <command> n次,n 是数字
    

    查找

    • /pattern<enter> 查找
    • n 查找下一个(next)

    打开、另存为、

    • :e <path/to/file> 打开
    • :saveas <path/to/file> 另存为
    • :x 仅在需要时保存,并退出
    • ZZ 保存并退出,不需要输入 <enter>,作用同 :wq

    你可以打开多个文件,并使用以下命令切换:

    • bn 切换到下一个文件,同 :n
    • bp 切换到上一个文件

    基本的快捷键 TODO

    移动游标的进阶快捷键

    行内移动

    0  到本行行首
    ^  到本行第一个非空字符的位置(非空字符包括:空格、制表符、回车、换行等)
    $  到本行行尾
    g_ 到本行最后一个非空字符的位置
    

    行间移动

    gg   到第一行
    <n>G 到第n行
         在 *Command-line* 模式下使用 :<n> 也能实现相同效果
    G    到最后一行,相当于 1G,或者 :1<enter>
    

    词间移动

    e/w/E/W

    小写时一个单词是由字母,数字和下划线组成的字符串(可视为词法记号),大写时一个单词是由空格隔开的字符串。

    w W  word,到下一个单词的开头
    e E  end,到单词的结尾
         如果当前游标不在单词结尾,第一次先跳转到本单词的结尾。
    
    *  匹配当前游标所在单词,移动到下一个
    #  匹配当前游标所在单词,移动到上一个
    

    括号匹配

    将游标移动到括号 (){}[] 上,按 % 键在开闭括号间跳转。

    游标的移动非常有用,因为很多命令支持以下组合:

    <start-position><command><end-position>

    yw  复制从当前位置到下一单词前的内容
    ye  复制从当前位置到本单词尾的内容
    y^  复制从游标前到行首的内容
    y$  复制从游标后到行尾的内容
    yG  复制当前行至文件尾的内容
    y<n>G 复制当前行至第n行的内容
          比如当前行是第四行,则复制第 2-4 行的内容。
    y<n>/<pattern> 复制n个<pattern>之间的字符串。
    以上组合剪切(d)同样支持
    

    前驱为 <n> 时,为了避免语义问题,有时候并不表示重复。

    <n>yG 仍然为复制当前行至第n行的内容
    

    Normal 模式下:

    • J join 合并当前行与下一行,以空格隔开

    复制剪切的进阶快捷键

    需在 Normal 模式下使用。

    yy  复制整行
    yny 复制n行,n为数字,也可以是 nyy
    
    dd  剪切整行(dnd、ndd)
    
    x   剪切游标后字符
    X   剪切游标前字符
    
    gu 变小写
    gU 变大写
    

    花样进入 Visual 模式

    • v 进入普通 Visual 模式,选中若干字符
    • V 进入 Visual Line 模式,选中若干行
    • Ctrl+v 进入 Visual Block 模式,选中一“块”区域

    最后

    更多的内容,写起来太累了,直接 :h xxx 去看吧。

    :h s
    :h :command
    :h 'option'
    :h function()
    :h ctrl-x
    :h i_ctrl-x
    :h subject
    :h foo<Tab>
    :helpgrep foo
    

    还可以在终端打开教程:

    $ vimtutor
    

    相关文章

      网友评论

        本文标题:简明 vim 入门手册

        本文链接:https://www.haomeiwen.com/subject/gnwqyttx.html