[Linux] VIM Practical Note

Practical Vim

    1. 文件
      1.1. 管理多个文件
      1.1.1. 缓冲区
      • :ls
      • 查看缓冲区列表
      • :bprev
      • 前一项
      • :bnext
      • 后一项
      • :bfirst
      • 第一项
      • :blast
      • 最后一项
      • :bdelete 删除缓冲区项
      • :bdelete N1 N2 N2
      • :N,M bdelete
      • :args 缓冲区参数列表
      • :args {arglist}
      • :args code/files
      • :args index.html app.js
      • :args cat .chapters
      • :args Glob
      • :args .
      • :args **/*.js
      • :args **/.
      • 退出时,处理隐藏缓冲区的方式
      • :write
      • :edit!
      • :qall!
      • :wall!
      1.1.2. 分割窗口
      • Ctrl - w
      • Ctrl - v
      • :split {file}
      • 水平切分
      • :vsplit {file}
      • 垂直切分
      • Ctrl-w h|j|k|l
      • 切换到 左下上右窗口
      • Ctrl-w w
      • 切换窗口
      • :close
      • 关闭活动窗口
      • :only
      • 只保留活动窗口,关闭其他所有窗口
      • :lcd {path}
      • 设置当前窗口的本地工作目录
      1.1.3. 标签页将窗口分组 :h tabpage
      • :windo lcd {path}
      • 为标签页的所有窗口,设置本地工作目录
      • :tabedit {filename}
      • 在新标签页打开文件
      • :Ctrl-w T
      • 把当前窗口移到一个新标签页
      • :tabclose
      • 关闭当前标签页及其所有窗口
      • :tabonly
      • 只保留活动标签页,关闭所有期他标签页
      • :tabnext {N}
      • :tabnext
      • :tabprevious
      • :tabmove [N]
      • 0:移到开头 省略N :移到结尾
      1.2. 打开及保存文件
      1.2.1. :edit
      1.2.2. :edit %:h Tab
      1.2.3. :edit {path}
      1.2.4. :find
      1.2.5. :edit .
      1.2.6. :Explore
      • 打开文件管理器
      1.2.7. Ctrl-^
      • 从文件管理器,切换回刚才编辑的文件
      1.2.8. Ctrl-g
      • 显示当前文件的文件名及状态
      1.2.9. :!mkdir -p %:h
      1.2.10. :w !sudo tee % > /dev/null
      • 以超级用户使用tee保存文件
    1. 移动及跳转
      2.1. 用动作命令移动
      2.1.1. 行移动
      • h j k l
      • 左 下 上 右 移动g一个实际行
      • gj gh gk gl
      • 左 下 上 右 移动一个屏幕行
      • 0
      • 移动到实际行的行首
      • g0
      • ^
      • 移动到实际行的第一个非空白字符
      • g^
      • $
      • 移动到实际行的行尾
      • g$
      2.1.2. 单词移动
      • w
      • 正向移到到下一单词开头
      • b
      • 反向移动到当前单词/上一单词的开头
      • e
      • 正向移动到当前单词/下一单词的结尾
      • ge
      • 反向移动到上一单记词的结尾
      • W、B、E、GE
      • 大写表示操作字符串
      2.1.3. 查找字符
      • f {char}
      • 正向移动到下一个字符所在之处
      • F {char}
      • 反向移动到上一下字符所在之处
      • t {char}
      • 正向移动到下一个字符所在之处的前一个字符上
      • T {char}
      • 反向移动到上一个字符所在之处的后一个字符上
      • ;
      • 重复上次的字符查找命令
      • ,
      • 反转方向查找上次的字符查找命令
      2.1.4. 精确的文本对象选择选区
      • 分隔符文本对象
      • a) 或 ab
      • a+符号:表示选择一对符号间的内容,包含符号在内
      • a} 或 aB
      • a]
      • a>
      • a'
      • a"
      • a• at • 一对XML标签 • i + ) } ] > ' " t
      • i + 符号:表示选择一对符号内部,不包含符号
      • 范围文本对象
      • iw
      • 当前单词
      • iW
      • 当前字串
      • aw
      • 当前单词及一个空格
      • aW
      • 当前字串及一个空格
      • is
      • 当前名子
      • as
      • 当前名子及一个空格
      • ip
      • 当前段落
      • ap
      • 当前段落及一个空行
      2.1.5. 位置标记
      • m{a-zA-Z}
      • 设置位置标记,小写用于当前缓冲区,大写用于全局
      • '{mark}
      • 跳到位置标记所在行, 光标置于第一个非空白字符 上
      {mark} • 跳到位置标记所在行, 光标置于位置所在之处,同时恢复行和列位置 • 自动位置标记 • `` • 当前文件中上次跳转动作之前 的位置 •.
      • 上次修改的地方
      ^ • 上次插入的地方 •[
      • 上次修改或复制的起始位置
      ] • 上次修改或复制的结束位置 •<
      • 上次高亮选区的起始位置
      > • 上次高亮选区的结束位置 2.2. 文件间跳转 2.2.1. 遍历跳转列表 • Ctrl - o • 跳转列表后退 • Ctrl - i • 跳转列表前进 2.2.2. 遍历改变列表 h: changelist • :changes 查看改变列表 • g; 或 g, • 正向或反向遍历改变列表 2.2.3. gi • 转到上次插入位置,并进入插入模式。 ( 恢复^光标位置,并进入插入模式)
      2.2.4. gf
      • 跳转到光标下的文件
    1. 寄存器
      3.1. :reg
      3.1.1. 查看寄存器内容
      3.2. 复制与粘贴
      3.2.1. ""
      • 无名寄存器
      3.2.2. "0
      • 复制专用寄存器
      3.2.3. "_
      • 黑洞寄存器
      3.2.4. "+
      • 系统剪贴板
      3.2.5. "*
      • 选择专用寄存器
      3.2.6. "=
      • 表达式寄存器
      3.2.7. "%
      • 当前文件名
      3.2.8. "#
      • 轮换文件名
      3.2.9. ".
      • 上次插入的文本
      3.2.10. ":
      • 上次执行的Ex命令
      3.2.11. "/
      • 上次查找的模式
      3.3. 宏
      3.3.1. q
      • 录制和停止宏按钮
      3.3.2. qa 或 qA
      • 录制宏到寄存器a 或 大写字母 追加内容到寄存器a
      3.3.3. q{register}
      • 录制宏到寄存器
      3.3.4. @{register}
      • 执行寄存器内的内容
      3.3.5. @@
      • 重复最近调用过的宏
      3.3.6. [n]@a
      • 加次数执行宏
      3.3.7. [range] normal @a
      • 指定范围内执行宏
      3.3.8. :argdo normal @a
      • 对参数列表的所有缓冲区执行宏@a
      • 提前设置 hidden
    1. 模式
      4.1. 按模式匹配及按原义匹配
      4.1.1. :set ignorecase
      • 全局设置大小写敏感性
      4.1.2. \c \C
      • 每次查找时设置大小写敏感性
      4.1.3. \v
      • (very magic)来统一正则表达式所有特殊符号的无则
      4.1.4. \V
      • 原则文本开关
      4.1.5. ()
      • 捕获子匹配
      4.1.6. <>
      • 界定单词边界
      4.1.7. \zs \ze
      • 界定匹配的边界
      4.1.8. • 转义问题字符
      • 反向查找时转义?号
      4.2. 查找
      4.2.1. / 或 ?
      • 正向或反向查找
      4.2.2. n 或 N
      • 跳转到下一处 或 上一处匹配,保持查找 方向与偏移不变
      4.2.3. gn 或 gN
      • 进入面向字符的可视模式,并选中下一外或上一处匹配
      4.2.4. :h incsearch
      • 在执行查找前预览每一处匹配
      4.2.5. //e
      • e标记,将光标偏移到查找匹配的结尾
      4.2.6. :%s//"\1"/g
      • 用上次查找模式查找
      4.2.7. :%s///gn
      • substitute 统计匹配数目,不修改
      4.2.8. :vimgrep //g %
      • 统计匹配总数
      4.3. 替换
      4.3.1. :[range] s[ubstitute]/{pattern}/{string}/[flags]
      • 查找替换
      • g flag
      • 全局范围内执行
      • c
      • 确认或拒绝每一处修改
      • n
      • 抑制正常的替换行为
      • e
      • 屏蔽错误提示
      • &
      • 重用上一次flag
      4.3.2. 替换域中特殊字符
      • \r
      • 插入换行符
      • \t
      • 制表符
      • \
      • 反斜杠
      • \1
      • 插入第1个匹配
      • \2
      • 插入第2个匹配
      • \0
      • 插入匹配模式的所有内容
      • &
      • 同\0
      • ~
      • 使用上次调时的{string}
      • ={vim script}
      • 执行{vim script}表达式;并将结果作为替换{string}
      4.3.3. g&
      • 在整个文件范围内重复面向行的替换操作
      • :%s//~/& 等于 g&
      4.3.4. :[range]&&
      • 重新执行替换
      • g& 是:%&&的快捷方式
      4.3.5. :%s//=submatch(0)-1/g
      • submatch(0) 可得到当前匹配的内容
      4.3.6. :%s//={"dog":"man", "man":"dog"}[submatch(1)]/g
      • 用字典映射替换匹配的内容
      4.3.7. 在整个工程范围内查找
      • 1. :vimgrep // **/*.txt
      • 2. :cfdo %s//string/gc
      • 设置 hidden
      • :cfdo %s//string/g | update
      4.4. global
      4.4.1. :[range] global[!] /{pattern}/ [cmd]
      • 在某个指定模式的所有匹配行上运行Ex命令
    1. 工具
      5.1. ctags
      5.1.1. Ctrl - ]
      • 跳转到定义处
      5.1.2. g Ctrl - ]
      • 如果多处匹配,提示用户指定一处进行跳转
      5.1.3. Ctrl - t
      • 后退按钮
      5.1.4. :tag {kewword}
      5.1.5. :tjump {keyword}
      5.1.6. :pop 或 Ctrl -t
      • 反向遍历标签历史
      5.1.7. :tag
      • 正向遍历标签历史
      5.1.8. :tnext
      5.1.9. :tprev
      5.1.10. :tfirest
      5.1.11. :tlast
      5.1.12. :tselect
      5.2. Quickfix列表
      5.2.1. :cnext
      5.2.2. :cprev
      5.2.3. :cfirst
      5.2.4. :clast
      5.2.5. :cnfile
      5.2.6. :cpfile
      5.2.7. :cc N
      5.2.8. :copen
      5.2.9. :cclose
      5.2.10. :cdo {cmd}
      5.2.11. :cfdo {cmd}
      5.3. 工程内查找
      5.3.1. grep
      5.3.2. vimgrep
      5.4. 自动补全
      5.4.1. 调出命令
      • Ctrl - n
      • 普通关键字
      • Ctrl -x Ctrl - n
      • 当前缓冲区关键字
      • Ctrl -x Ctrl - i
      • 包含文件关键字
      • Ctrl - x Ctrl - ]
      • 标签文件关键字
      • Ctrl - x Ctrl - k
      • 字典查找
      • Ctrl - x Ctrl - l
      • 整行补全
      • Ctrl - x Ctrl - f
      • 文件名补全
      • Ctrl - x Ctrl - o
      • 全能(Omni)补全
      5.4.2. 弹出菜单使用
      • Ctrl - n
      • 使用下一匹配项
      • Ctrl - p
      • 使用上一匹配项
      • Down
      • UP
      • Ctrl - y
      • 确认使用当前选中的匹配项
      • Ctrl - e
      • 还原最早输入的文本
      • Ctrl - h
      • 从当前匹配项中删除一个字条
      • Ctrl - l
      • 从当前匹配项中增加一个字符
      • {char}
      • 中止自动补全并插入字符
      5.5. Vim拼写检查器
      5.5.1. :set spell
      • 启用拼写检查器
      5.5.2. [s
      • 反向跳转
      5.5.3. ]s
      • 正向跳转
      5.5.4. z=
      • 修改建议
      5.5.5. zg
      • 光标下单词添加到拼写文件中
      5.5.6. zw
      • 标记为拼写错误
      5.5.7. zug
      • 撤销zg zw操作
      5.5.8. 插入模式利用拼写补全
      • Ctrl - x s
      • Ctrl -x Crtl - s
    1. 插件
      6.1. commentary.vim 注释
      6.1.1. gc {motion}
      • 切换指定行的注释状态
      6.1.2. gcap
      • 注释当前段落
      6.1.3. gcG
      • 注释到结尾
      6.1.4. gcc
      • 注释当前行
      6.2. matchit
      6.2.1. % 在配对的关键字间跳转
  1. 命令
    7.1. .命令
    7.1.1. 重复上次的修改
    7.1.2. .范式:用一键移动,另一键执行
    7.2. [n] Ctrl-a
    7.2.1. 对当前或查找到第一个数据,进行加运算
    7.3. [n] Ctrl-x
    7.3.1. 对当前或查找到第一个数据,进行减运算
    7.4. gR、gr
    7.4.1. 虚拟替换模式,替换制表符
    7.5. Ctrl - o
    7.5.1. 跳转列表,回跳
    7.6. Ctrl - i
    7.6.1. 跳转列表,前进
    1. 模式
      8.1. 普通模式
      8.1.1. 停顿时请离开画笔
      8.1.2. 把撤销单元切成块:进入插入 修改 离开,是一次修改
      8.1.3. 操作符 + 动作命令 = 操作
      8.1.4. .命令
      • 重复上次的修改
      • .范式:用一键移动,另一键执行
      8.1.5. vim 的操作符命令 d{motion}
      • c 修改
      • d 删除
      • y 复制到寄存器
      • g~ 反转大小写
      • gu
      • 转换为小写
      • gU
      • 转换为大写
      • >
      • 增加缩进
      • <
      • 减少缩进
      • =
      • 自动缩进, 格式化
      • !
      • 使用外部程序过滤{motion}所跨越的行
      8.1.6. Ctrl - w c
      • 关闭活动窗口
      8.1.7. Ctrl - w o
      • 只保留活动窗口,关闭其他所有窗口
      8.1.8. {N} gt
      • 切换到编号为{N}的标签页
      8.1.9. gt
      • 切换到下一标签页
      8.1.10. gT
      • 切换到上一标签页
      8.2. 插入模式
      8.2.1. Ctrl-h
      • 删除前一个字符
      8.2.2. Ctrl-w
      • 删除前一个单词
      8.2.3. Ctrl-u
      • 删除至行首
      8.2.4. 返回普通模式
      • ESC
      • Ctrl - [
      • Ctrl - o
      • 切换到插入普通模式
      • 执行一次普通模式命令,后返回插入模式
      8.2.5. Ctrl - r {register}
      • 插入寄存器中的的文本
      8.2.6. Ctrl-r Ctrl-p {register}
      • 按原义插入寄存器中的的文本,不缩进
      8.2.7. Ctrl-r =表达式
      • 调用表达式寄存器,插入计算后的值
      8.2.8. Ctrl - v{code}
      • 用户字符编码插入非常用字符
      • Ctrl-v065
      • Ctrl-vu00bf
      8.2.9. Ctrl - k{char1}{char2}
      • 用二合字母插入非常用字符
      • Ctrl-k?I
      8.3. 可视模式
      8.3.1. v
      • 激活面向字符的可视模式
      8.3.2. V
      • 激活面向行的可视模式
      8.3.3. Ctrl - v
      • 激活面向列块的可视模式
      8.3.4. gv
      • 重选上次的高亮选区
      8.4. 命令行模式
      8.4.1. 命令
      • : [range] delete [reg]
      • 删除提定范围的行【到寄存器】
      • : [range] yank [reg]
      • 复制指定范围的行 【到寄存器】
      • : [line] put [reg]
      • 在指定行后粘贴寄存器中的内容
      • : [range] copy {address}
      • 把指定范围的行复制到指定地址行之下
      • : [range] move {address}
      • 把指定范围的行移动到指定地址之下
      • : [range] join
      • 连接指定范围内的行
      • : [range] normal {commands}
      • 对指定范围内的每一行执行普通模式命令 {commands}
      • :[range] substitute/{pattern}/{string}/[flags]
      • 把指定范围内的{pattern} 替换成{string}
      • : [range] global/{pattern}/[cmd]
      • 对指定范围内匹配{pattern}的所有行执行Ex命令{cmd}
      8.4.2. 地址、范围表示符号
      • 0
      • 虚拟行,位于文件第一行上方
      • 1
      • 文件的第一行
      • $
      • 文件的最后一行
      • .
      • 光标所在行
      • 'm
      • 包含位置标记m的行
      • '<
      • 高亮选区的起始行
      • '>
      • 高亮选区的结束行
      • %
      • 整个文件(:1,$的简写形式)
      8.4.3. @:
      • 重复上次的Ex命令
      8.4.4. Tab
      • 自动补全命令
      8.4.5. Shif - s
      • 返回遍历补全列表
      8.4.6. Ctrl - d
      • 显示可用的补全列表
      8.4.7. Ctrl - r Ctrl - w
      • 插入光标下的单词
      8.4.8. Ctrl -r Ctrl - a
      • 插入光标下的字串
      8.4.9. q/
      • 打开查找命令历史的命令行窗口
      8.4.10. q:
      • 打开Ex命令历史的命令行窗口
      8.4.11. Ctrl - f
      • 从命令行模式切换到命令行窗口
      8.4.12. 调用外部程序
      • :shell
      • 启动一个shell,exit返回vim
      • :!{cmd}
      • 在shell中执行{cmd}
      • :read !{cmd}
      • 在shell中执行{cmd}, 并把其标准输出插入光标下方
      • :[range]write !{cmd}
      • 在shell中执行{cmd}, 以[range] 作为其标准输入
      • :[range] ! {filter}
      • 使用外部程序{filter} 过滤指定的[range]
posted @ 2018-07-03 10:03 ABeen 阅读(...) 评论(...) 编辑 收藏