关于vim:Y-分钟速成-vim

4次阅读

共计 2267 个字符,预计需要花费 6 分钟才能阅读完成。

源代码下载:LearnVim-cn.txt

Vim
(Vi IMproved) 是 Unix 上的风行编辑器 vi 的克隆版本。这个文本编辑器
是为性能和晋升效率而设计的,并且在大多数基于 unix 的零碎上普遍存在。
它有大量的快捷键可用来疾速导航到文件的特定地位,以便进行疾速编辑。

Vim 导航根底

    vim <filename>   # 在 Vim 中关上 <filename>
    :q               # 退出 Vim
    :w               # 保留以后文件
    :wq              # 保留文件并退出 Vim 
    :q!              # 退出 Vim 并且不保留文件
                     # ! * 强制 * 执行 :q,因而没有保留就退出 Vim
    :x               # 保留文件并且退出 Vim,是 :wq 的简写版本

    u                # 撤销
    CTRL+R           # 重做

    h                # 左移一个字符
    j                # 下移一行
    k                # 上移一行
    l                # 右移一个字符

    # 在行内挪动

    0                # 移到行首
    $                # 移到行尾
    ^                # 移到行内的第一个非空白字符处

    # 在文本中查找

    /word            # 光标之后的所有该词都高亮显示
    ?word            # 光标之前的所有该词都高亮显示
    n                # 查找后将光标移到该词的下一个呈现地位
    N                # 光标移到该词的上一个呈现地位

    :%s/foo/bar/g    # 将文件每一行上的所有 'foo' 都改成 'bar'
    :s/foo/bar/g     # 将以后行上的所有 'foo' 都改成 'bar'

    # 跳到字符处

    f< 字符 >         # 向前跳移到 < 字符 > 上
    t< 字符 >         # 向前跳移到 < 字符 > 的左侧

    # 例如,f<               # 向前跳移到 < 上
    t<               # 向前跳移到 < 的左侧
    
    # 按词挪动
    # 默认一个单词由字母,数字和下划线组成

    w                # 挪动到下一个词首
    b                # 挪动到前一个词首
    e                # 挪动到下一个词尾
    

    # 挪动的其它命令

    gg               # 移到文件顶部
    G                # 移到文件开端
    :NUM             # 移到第 NUM 行 (NUM 是任意数字)
    H                # 移到屏幕顶部
    M                # 移到屏幕两头地位
    L                # 移到屏幕开端

模式:

Vim 基于 模式 这个概念。

命令模式 – Vim 启动后就处于这个模式,用于导航和操作命令
插入模式 – 用于在你的文件中进行批改
可视模式 – 用于高亮文本并对它们进行操作
Ex 模式 – 用于跳到底部的 ‘:’ 提示行上输出命令

    i                # 在光标地位前,将 Vim 切换到插入模式
    a                # 在光标地位后,将 Vim 切换到插入模式
    v                # 将 Vim 切换到可视模式
    :                # 将 Vim 切换到 ex 模式
    <esc>            # 无论你以后处于什么模式,都返回到命令模式

    # 复制和粘贴文本

    y                # 复制所选的内容
    yy               # 复制以后行
    d                # 删除所选的内容
    dd               # 删除以后行
    p                # 在以后光标地位后粘贴复制的文本
    P                # 在以后光标地位前粘贴复制的文本
    x                # 删除以后光标地位处的字符

Vim 的 ‘ 语法 ’

Vim 能够被认为是按 ‘ 动词 - 修饰词 - 名词 ’ 格局编排的一组命令:

动词 – 你的动作
修饰词 – 你如何执行你的动作
名词 – 你的动作所作用于的对象

对于 ‘ 动词 ’,’ 修饰词 ’,和 ‘ 名词 ’ 的几个重要例子:

    # '动词'
    
    d                # 删除
    c                # 批改
    y                # 复制
    v                # 可视化抉择

    # '修饰词'

    i                # 外部的
    a                # 四周的
    NUM              # 数字 (NUM 是任意数字)
    f                # 查找文本并位于其上
    t                # 查找文本并停于其后面
    /                # 从光标处开始查找字符串
    ?                # 在光标前查找字符串

    # '名词'

    w                # 词
    s                # 句子
    p                # 段落
    b                # 块
    
    # 示例 '语句' 或命令

    d2w              # 删除 2 个词
    cis              # 批改段落内的内容
    yip              # 复制段落内的内容 (复制你所在的段落)
    ct<              # 批改直到括号开启处
                     # 对你的以后地位直到下个括号开启处的内容进行批改
    d$               # 删除直到行尾

一些快捷键和技巧

    <!--TODO: Add more!-->
    >                # 将所选内容缩进一级
    <                # 将所选内容勾销缩进一级
    :earlier 15m     # 将文档还原到 15 分钟前的状态
    :later 15m       # 逆转上述命令
    ddp              # 相邻行替换地位,先 dd 再 p
    .                # 反复之前动作

宏基本上来说就是可录制的动作。
当你开始录制宏时,它会记录你应用的 每个 动作和命令,
直到你进行录制。当调用宏时,它会将这个完全相同的动作和命令序列
再次利用于所选文本之上。

    qa               # 开始录制一个叫 'a' 的宏
    q                # 进行录制
    @a               # 重播宏

配置 ~/.vimrc

.vimrc 可用于在启动时对 Vim 进行配置。

这里是一个示例 ~/.vimrc 文件:

"示例 ~/.vimrc" 2015.10 

" 须要 Vim iMproved 版本
set nocompatible

" 依据文件名检测文件类型,以便能进行智能主动缩进等操作。filetype indent plugin on

" 开启语法高亮
syntax on

" 更好的命令行补全
set wildmenu

" 除了当应用大写字母时应用大小写无关查找
set ignorecase
set smartcase

"当新开一行时,如果没有开启文件特定的缩进规定," 则缩进放弃与你以后行统一
set autoindent

" 在左侧显示行号
set number

"缩进选项,依据集体偏好进行批改" 每个 TAB 的可视空格数
set tabstop=4

" 编辑时 TAB 对应的空格数
set softtabstop=4

" 当应用缩进操作 (>> 和 <<) 时缩进的空格数
set shiftwidth=4

" 将 TAB 转换成空格
set expandtab

" 为缩进和对齐开启智能化的 TAB 和空格切换性能
set smarttab

参考

Vim | Home

$ vimtutor

A vim Tutorial and Primer

What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)

Arch Linux Wiki


有倡议?或者发现什么谬误?在 Github 上开一个 issue,或者发动 pull request!

原著 RadhikaG,并由 0 个好心人批改。
© 2022 RadhikaG
Translated by: Jiang Haiyun
本作品采纳 CC BY-SA 3.0 协定进行许可。

正文完
 0