没有标题的博客

记录与分享

VI快捷键

常用快捷键

快捷键说明:<CR>回车

命令模式

快捷键 功能
. 重做(与其他操作配合)
/ / ? 正/反向查找
Ctrl-o/i 向前/后位置跳转
`Ctrl-] 跳到光标下关键字的定义之处
g; 跳到上次修改处。同u<Ctrl-r>(撤销重做), `.(仅能返回一层)(NO IDEA)
gi 回到上次编辑处,并切到编辑状态。同`^ + i
gf 跳到光标下文件(配合C-o返回)(NO IDEA)

光标定位

快捷键 | 功能 —— | —— w / W | 下一个单词开头(WBE大写时以空白字符识别) b / B | 单词开头 e / E | 单词末尾 | 0 | 行首 ^ | 行首非空白字符 $ | 行尾 + / - | 下/上一行行首 :n / nG | 光标定位到第n行 | ( / ) | 行首/尾 { / } | 段落首/尾(空行识别) H / M / L | 光标移动到屏幕的顶/中/底部 | Ctrl + y / e | 屏幕向下/上滚动一行 Ctrl + f / b | 向下/上滚动一页 Ctrl + d / u | 向下/上滚动半页 | J | 合并行 = | 格式化代码 < / > | 缩进 :+y / :+p | 使用系统剪切板复制/粘贴 参考: http://www.ibm.com/developerworks/cn/linux/l-cn-tip-vim/ http://blog.csdn.net/yangzhongxuan/article/details/6542808

复合命令

快捷键 等效命令 功能
C c$ 删除光标后的内容并切换到编辑模式
s cl 删除光标处字符并切换到编辑模式
S ^c 删除当前行并切换到编辑模式
I ^i 行头部插入
A $a 行尾部插入
o / O A / ko 新增行/往上新增行

快速选择&操作

  • 需要三条命令合用(前端工程师必学):

    1. 操作符:v选择, c删除并进入插入模式, y复制, d删除
    2. 进入模式:a包括分隔符, i不包括分隔符
    3. 输入分隔符:)/b, }/B, ], >, ', ", `, tXML标签内部
  • 文本块

    1. 操作符(同上)
    2. i当前, a包含一个空格(段落为一个空行)
    3. w单词, W字符串, s句子, p段落
      常用: d配合a, c配合i。如:daw, ciw

位置标记

m{a-zA-Z}标记,小写为局部,大写为全局
'{mark}跳到标记行首,或`{mark}跳到标记光标处
常用: mm配合`m

`后跟(上次*位置): `跳转, .修改, ^插入, [/]修改或复制起始/结束, </>高亮起始/结束

编辑模式

更多命令

命令 功能
:w !sudo tee % 用sudo权限写入

C-v C-m 输入win下的换行符^M(win下是C-q C-m)

缓冲区 registers

  • 查询缓冲区: :di
  • 帮助: :h registers
  • 不同模式下: 如命令模式中"0p,等价于编辑模式的C-r 0

  • 缓存器参数:
    [1-9]: 最近删除
    0: 最后一次复制
    *: 系统剪切板
    :: 命令暂存器
    /: 搜索
    .: 最近插入的
    %: 文档名(IDEA插件里不可用)

窗口

<C-w>w 窗口间跳转(w也可以使用hjkl方向键,同<C-w><C-w>(方便))

替换

例子: ``` a 说明a b 说明b …

`%s/\v(.+)\n(.+)/<label for="\1">^M  <input type="radio" name="t" id="\1" value="alipay" \/>^M
 <img src="images\/pay_bank_abc.gif" alt="\2" \/>^M<\/label>`


- 其他
`p`与`"0p`的区别:当之前进行过删除操作,前者会取出被删除的值,而后者只取上一次复制的值。

#### 正则
后置参数`e`,搜索时定位到末尾(IDEA不可用),如:`/div/e`。

## 配置相关
`$ vim -u NONE -N` 不加载自定制vimrc文件。(`-N`防止进入vi兼容模式)

## 未整理
`g + 行操作` 屏幕行移动(用于有自动换行,如:gj, gk, g0, g^, g$)  

`*`查找光标处单词  
`f + 字符` 当前行查找(配合`;`或`,`进行重复或反方向,`F`可直接向前查找, `t/T`则是移动到前一个字符)  
  例: `f,dt.` 删除后面逗号到句号之间的内容。  
  建议:`f/F`在普通模式使用,`t/T`配合`d/c`等操作符使用。  

`d{motion}` 定位删除  
  例:删除当前位置到`get`单词间的内容:`v + /ge<CR> + h + d` == `d/ge<CR>`

`<C-a>`/`<C-x>` 当前行数字加/减 (后者在终端下可能与其他快捷键冲突)

very magic模式:`\v`适合正则时使用(不需输入转义符),`\V`转义符之外字符都保持原意

#### 规则
- 操作符 + 动作命令 = 操作  
- 当一个操作符命令被连续调用两次时,它会作用于当前行  

## 基准
#### 操作符
命令 | 用途
--- | ---
c  | 修改
d  | 删除
y  | 复制到寄存器
g~ | 反转大小写
gu | 转小写
gU | 转大写
>  | 增加缩进
<  | 减小缩进
=  | 自动缩进
!  | 使用外部程序过滤{motion}所跨越的行

## 插件
#### [Vundle](https://github.com/gmarik/Vundle.vim)
插件管理
编辑`.vimrc`添加查件,重载vim后`:PluginInstall`

#### [Solarized](https://github.com/altercation/vim-colors-solarized) 
配色方案

#### [Comment-T](https://wincent.com/products/command-t)
快速文件定位

cd ~/.vim/bundle/command-t/ruby/command-t (包含extconf.rb文件的目录) ruby extconf.rb make ```

其他参技

一些不起眼但非常有用的 Vim 命令

Comments