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]

[Linux] VIM Practical Note的更多相关文章

  1. 经典 Linux & VIM 教程

    简明 Vim 练级攻略: http://coolshell.cn/articles/5426.html VIM快捷键: http://coolshell.cn/wp-content/uploads/2 ...

  2. linux VIM基本命令

    linux VIM命令: vim 在命令行中输入vim,进入vim编辑器 Esc 退出i(插入)命令进行其他命令使用 :sh 进入shell命令行,运行完命令后ctrl+d退出又一次进入vim编辑继续 ...

  3. linux vim vi编辑时撤销输入操作

    linux vim vi编辑时撤销输入操作 1,esc退出输入状态 2,u 撤销上次操作 3,ctrl+r 恢复撤销

  4. Linux vim编辑器使用详解

    在Linux中,主要编辑器为vi或者vim,本文围绕vim做简单的讲解说明: Linux默认自带vi(vim)编辑器,其程序包为: [root@xuegod163 ~]# rpm -qf `--1.8 ...

  5. Linux Vim编辑器使用简单讲解

    在Linux中,主要编辑器为vi或者vim,本文围绕vim做简单的讲解说明:Linux默认自带vi(vim)编辑器,其程序包为:[root@linuxidc.com ~]# rpm -qf `whic ...

  6. 0050 Linux VIM 命令

    1.  模式切换 vim的模式 $ vi filename 进入normal 模式,这是命令模式,用于执行大多数常用的编辑命令,不能输入 敲i 进入 insert 模式,这是正常的编辑模式,按Esc ...

  7. Linux Vim不明原因卡死解决办法

    使用vim的时候,偶尔会碰到vim莫名其妙的僵在那里. 解决方案: 经查,原来Ctrl+S在Linux里是锁定屏幕的快捷键,如果要解锁,按下Ctrl+Q就可以了. 经验总结: 牢记这两个VIM组合键 ...

  8. Linux vim的安装和配置:

    1:首先就碰到一个问题 程序 'vim' 已包含在下列软件包中: * vim * vim-gnome * vim-tiny * vim-athena * vim-gtk * vim-nox 请尝试:s ...

  9. linux vim 配置文件(高亮+自动缩进+行号+折叠+优化)

    点评:将一下代码copy到 用户目录下 新建文件为 .vimrc保存即可生效 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)"===================== ...

随机推荐

  1. angular架构

    angular架构包括以下部分: 1.模块 2.组件 3.模板 4.元数据 5.数据绑定 6.指令 7.服务 8.依赖注入 9.动画 10.变更检测 11.事件 12.表单 13.HTTP 14.生命 ...

  2. python网络编程-同步IO和异步IO,阻塞IO和非阻塞IO

    同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network IO. ...

  3. 压力测试随笔之:JMeter,LoadRunner 相得益彰

    做压力测试,我喜欢先写 JMeter 脚本,功能测通以后再翻译成 LoadRunner 脚本,最后用 LoadRunner 完成压测.也许我是 Java 出身吧,对 JMeter 总是有一种亲切感用着 ...

  4. MS Sql Server 数据库或表修复(DBCC CHECKDB)

    MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令.  1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL ...

  5. Java小实验之数据转换

    看到有人问如图的程序,就去写了几行代码,顺便复习一下条件语句和ASCII码 import java.util.Scanner; public class test1 { public static v ...

  6. 一步一步学习IdentityServer3 (12) 授权模式

    Idr3中的授权模式也是基于OAuth2 来看看例子中的说明 // // 摘要: // OpenID Connect flows. public enum Flows { // // 摘要: // a ...

  7. ViewPager中的子Activity无法响应OnActivityResult的解决方法

    ViewPager子Activity通过startActivityForResult()跳转至OtherActivity,OtherActivity回传结果由ViewPager所在的父Activity ...

  8. NetworkX 使用(三)

    官方教程 博客:NetworkX NetworkX 使用(二) Introduction to Graph Analysis with NetworkX %pylab inline import ne ...

  9. [leetcode tree]96. Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  10. [ 原创 ] Java基础7--Java反射机制主要提供了以下哪些功能?

    AVA反射机制主要提供了以下哪些功能? 在运行时判断一个对象所属的类 在运行时构造一个类的对象 在运行时判断一个类所具有的成员变量和方法 在运行时调用一个对象的方法