zoukankan      html  css  js  c++  java
  • [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. 替换域中特殊字符

        • 插入换行符

        • 制表符

        • 反斜杠
        • 1
        • 插入第1个匹配
        • 2
        • 插入第2个匹配

        • 插入匹配模式的所有内容
        • &
        • 同
        • ~
        • 使用上次调时的{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]
  • 相关阅读:
    表单校验神器
    插入排序
    数组去重的几种常使用的方式
    day44 mysql高级部分内容
    day43 多表查询和pymysql
    day42 字段的增删改查详细操作
    day41 mysql详细操作
    day40 mysql数据类型
    day39 mysql数据库基本操作
    day37 异步回调和协程
  • 原文地址:https://www.cnblogs.com/abeen/p/9257084.html
Copyright © 2011-2022 走看看