目錄:
  1. 插入模式(insert-mode)
    1. 插入模式下的说明及技巧
      1. 寄存器的简单使用
        1. 输入特殊字符
        2. 可视模式(visual-mode)
          1. 命令行模式(ex-mode)
            1. print及相似命令的使用
              1. copy和move的使用
                1. ex命令补全
                  1. ex技巧
                    1. 命令行窗口
                      1. 执行shell命令
                        1. 示例

                    vim实用技巧学习笔记2-插入模式、可视模式、命令行模式

                    閱讀時間:全文 1010 字,預估用時 6 分鐘
                    創作日期:2018-02-21
                    文章標籤:
                    上篇文章:Hexo源码阅读
                     
                    BEGIN

                    插入模式(insert-mode)

                    插入模式下的说明及技巧

                    • 插入模式下可执行部分命令以提高效率
                    • 插入-普通模式: 插入模式下执行命令后回到原来位置继续输入.
                    按键操作用途
                    <C-h>删除前一个字符
                    <C-w>删除前一个单词
                    <C-u>删除至行首
                    <Esc>切换到普通模式
                    <C-[>切换到普通模式
                    <C-o>切换到插入-普通模式

                    寄存器的简单使用

                    1. (jq15)黏贴寄存器中的文本: <C-r>0
                    2. (jq16)利用表达式寄存器做运算: <C-r>=

                    输入特殊字符

                    键值含义
                    <C-v>{digit}以十进制字符编码插入字符
                    <C-v>u{digit}以十六进制字符编码插入字符
                    <C-v>{notdigit}按原意插入非数字字符
                    <C-k>{char1}{char2}插入以二合字母表示的字符
                    • <C-v>使用文档: :h i_CTRL-V_digit
                    • ga命令查看字符的编码值
                    • 查看二合字符对应表: :h digraph-table

                    可视模式(visual-mode)

                    键值含义
                    v激活面向字符的可视模式
                    V激活面向行的可视模式
                    <C-v>激活面向块的可视模式
                    gv重选上次的高亮选区
                    o切换高亮选区的活动端

                    命令行模式(ex-mode)

                    操作及含义: :{start},{end}{command}

                    • 公用操作符及含义
                    操作符含义
                    %全文
                    .光标所在行
                    $文件的最后一行
                    0虚拟行,表示第一行的上一行
                    \m`包含位置标记m的行
                    '<高亮选区的开始行
                    '>高亮选区的结束行
                    @:重复上一次ex命令
                    @@重复执行@:命令

                    print及相似命令的使用

                    命令(command)及含义

                    命令简写对应普通模式含义
                    printp-打印
                    deleteddd删除
                    joinjJ多行合并一行
                    substitutes-用于替换文本,如:%s/xxx/yyy/g
                    normalnorm{start},{end}normal command对多行执行普通模式命令
                    操作含义
                    :1,3p打印1至3行
                    :.,$p打印光标所在行到结束行
                    :1+,1+5p打印2至6行
                    :%p打印全文
                    :/<html>/,/<\/html>/p打印光标所在行之后匹配到的内容

                    copy和move的使用

                    命令(command)及含义

                    命令简写对应普通模式含义
                    copytyy复制文本
                    movemddp移动文本
                    操作含义
                    {start},{end}t{target}将指定行文本复制到target行下面
                    :6t.将第6行复制到光标行下面
                    :t6将当前行复制到第6行下面
                    :t.为当前行创建一个副本,相当于普通模式的yyp
                    :t$复制当前行到文本结尾
                    '<,'>t0将选择的行复制到文本开头

                    ex命令补全

                    tab按键用于补全命令,用于显示所有补全项.

                    若vim的默认补全方式不喜欢可以选择如下设置:

                    1. bash shell的补全方式: set wildmode=longest,list
                    2. zsh的补全方式:
                    set wildmenu
                    set wildmode=full

                    ex技巧

                    1. 将光标所在单词复制到命令行: <C-r><C-w>
                    2. 将光标所在行复制到命令行: <C-r><C-a>

                    命令行窗口

                    命令动作
                    q/打开历史查找命令的命令行窗口
                    q:打开历史ex命令的命令行窗口
                    <Ctrl-f>从命令行模式切换到命令行窗口

                    执行shell命令

                    在vim命令行中执行shell命令, 其中[range]{start},{end}:

                    1. 命令行中执行: :!{cmd}
                    2. 进入shell窗口: :shell 可以用<Ctrl-z>将运行中的程序存入后台,fg命令继续前台运行,jobs命令查看在后台的所有程序
                    3. :read !{cmd}: 在shell中执行{cmd},并把其标准输出插入光标下方
                    4. :[range]write !{cmd}: 在shell中执行{cmd},以[range]作为其标准输入
                    5. :[range]!{filter}: 使用外部程序{filter}过滤指定的[range]
                    6. 将多条ex命令放入文件中,然后通过:source filename.vim运行每条ex命令
                    7. 多文件运行vim脚本: 当缓存区有多个文件时执行:argdo source filename.vim

                    示例

                    将下方文本通过last name进行排序

                    # 执行前
                    first name,last name,email
                    john,smith,john@example.com
                    drew,neil,drew@vimcasts.org
                    jane,doe,jane@example.com

                    执行命令: :3,$!sort -t',' -k2, 其中2,$表示第2行到最后一行, sort为shell命令, -t','指定分割符, -k2指定用以排序的文本

                    # 执行后
                    first name,last name,email
                    jane,doe,jane@example.com
                    drew,neil,drew@vimcasts.org
                    john,smith,john@example.com
                    FINISH
                    上篇文章:Hexo源码阅读

                    隨機文章
                    人生倒計時
                    default