[Linux] VIM Practical Note
Practical Vimhtml
-
- 文件
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保存文件
-
- 移动及跳转
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
• 跳转到光标下的文件
-
- 寄存器
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
-
- 模式
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命令
-
- 工具
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
-
- 插件
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. % 在配对的关键字间跳转
- 命令
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. 跳转列表,前进
-
- 模式 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]
欢迎关注本站公众号,获取更多信息