初时,先有ed,ed为ex之父,ex为vi之父,而vi为vim之父。 –The Old Testament of Unix
使用vim已经有一段时间了,有必要分享一些vim资源并备份相关技巧。
##vim快捷键
- 模式
- Esc:普通模式
- i:插入模式
- v:视图模式
- ::命令行模式
- 移动
- h:左移
- l:右移
- j:下移
- k:上移
- w:下一个短单词
- W:下一个长单词(以空格区分)
- b:至词首(短单词)
- B:至词首(长单词)
- e:至词尾(短单词)
- E:至词尾(长单词)
- ^:至行首
- $:至行尾
- gg:至文件头
- G:至文件尾
- nG(:n):至第n行
- J:把当前行和下一行连接在一起
- K:查看单词的手册页
- n:下一个匹配项
- 文本插入
- i:光标前插入
- a:光标后插入
- I:^i 行首字符前插入
- A:$a 行尾字符后插入
- o:换行插入
- O:上面空出一行并插入
- 文本删除
- x:删除当前字符
- dl:删除一个字符
- db:删除从光标起始位置到单词开头的内容
- dw:删除从光标起始位置到单词结束的内容
- dd:删除当前行
- daw:删除一个单词(delete a word)dbx、bdw
- dap:删除一个段落
- 复制粘贴
- yyp:复制当前行并粘贴
- 文本修改
- c:修改
- C: c$ 修改光标至行尾
- s: cl 替换
- S: ^ C 修改整行
- g~:反转大小写
- gU:转换为大写
- gu:转换为小写
-
:增加缩进
- <:减少缩进
- =:自动缩进
- gg=G:自动缩进整个文件
- 文本选择
- viw:选中一个单词
- vit: 高亮选中标签内部的内容(visually select inside the tag)
- gv:重选s上次的高亮选区
- v:激活面向字符的可视模式
- V:激活面向行的可视模式
- 查找替换
- *:查找匹配项
- f: 向后查找字符
- F: f的反向操作
- t: 向后查找字符光标位于查找字符前方
- T: T的反向操作·
- 重复&回退
- .:重复上次修改
- u:撤销最近修改
- @x:执行一系列修改
- ;:在行内查找下一指定字符
- ,:;的反向操作
- n:在文档中查找下一处匹配项
- N:n的反向操作
- @::重复任意Ex命令
- &:重复上次的:substitute 命令(它本身也是一条Ex命令)
- 注释
- \\:注释当前行
- \ap:注释当前段落
- \G:从当前行到文件结尾间的所有内容注释掉
- 快捷键
- <C-[>:和
键相同 -
{register}:把寄存器复制的文本粘贴到光标所在位置 -
:删除前一个字符(同退格键) -
:删除前一个单词 -
:删至行首 -
:数字累加 -
:数字累减 -
:可以在可视模式及选择模式间切换 -
:按列选择
- <C-[>:和
- EX
- [range]delete [x] :删除指定范围内的行[到寄存器 x 中]
- [range]yank [x]:复制指定范围的行[到寄存器 x 中]
- [line]put [x]:在指定行后粘贴寄存器x中的内容
- [range]copy {address}:把指定范围内的行拷贝到 {address} 所指定的行之下
- [range]move {address}:把指定范围内的行移动到 {address} 所指定的行之下
- [range]join:连接指定范围内的行
- [range]normal {commands}:对指定范围内的每一行执行普通模式命令 {commands}
- [range]substitute/{pattern}/ {string}/[flags]:把指定范围内出现{pattern}的地方替换为{string}
- [range]global/{pattern}/[cmd]:对指定范围内匹配{pattern}的所有行,在其上执行 Ex 命令{cmd}
- [range]写法::{start},{end},如::2,5y
- 地址偏移::{address}+n,如::.,.+3p
- :p即:print打印命令
- :t即:copy复制命令
- :m即:move移动命令
- @:即重复执行上一次EX命令,之后可以用@@来重复该命令
符号 | 地址 | 示例 |
---|---|---|
1 | 文件的第一行 | :1p |
$ | 文件的最后一行 | :.,$p |
0 | 虚拟行,位于文件第一行上方 | :0 |
. | 光标所在行 | :.p |
‘m | 包含位置标记m的行 | :’mp |
’< | 高亮选区的起始行 | :’<p |
’> | 高亮选区的结束行 | :’<,’>p |
% | 整个文件(的简写形式) | :%p |
命令 | 用途 | 格式 | 示例 |
---|---|---|---|
:t(:copy :co) | 复制行 | :[range]copy {address} | :6t. |
:m(:move) | 移动行 | :[range]move {address} | :’<,’>m$ |
:normal | 普通命令模式 | :[range]normal {address} | :%normal A; |
练习
li.one a{ background-image: url(‘/components/sprite.png’); } li.two a{ background-image: url(‘/components/sprite.png’); } li.three a{ background-image: url(‘/components/sprite.png’); }
var foo = 1; var bar = ‘a’; var foobar = foo + bar;
def fib(n): a, b = 0, 1 while a < n: print a, a, b = b, a+b fib(42)
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!