Vim生存之道

Vim.gif

第一阶

基础操作

i => 插入模式
x => 删除当前字符
a => 光标后插入
p => 粘贴
hjkl => 左下右上
:help <command>

插入

o => 光标前插入一行
O => 光标后插入一行
cw => 替换单词字符至单词结尾

移动

0 => 行首
$ => 行尾
^ => 第一个非空白字符
g_ => 最后一个非空白字符

第二阶

搜索

/string => 搜索string (使用 n 键查看下一个)

粘贴

P => 光标前粘贴
p => 光标后粘贴

撤销&重复

u => 撤销
<C-r> <==> . => 重复上个命令

文件操作

:e <path/to/file> => 打开一个文件
:w => 存盘
:saveas <path/to/file> => 另存为
:x <==> ZZ <==> :wq  => 保存并退出
:bn <==> :n => 切换下一个文件
:bp =>切换上一个文件

第三阶

有点高级的命令

N<command> => 重复命令 N 次
NG <==> :N 移动到第 N 行
gg => 到文件首部
G => 到文件尾部

w/W => 下一个/上一个单词开头
e/E => 下一个/上一个单词词尾

% => 匹配括号
*/# => 匹配下一个/上一个单词

y => 拷贝( `y2/foo` 拷贝两个 `foo` 之间的字符串 )
<C-n> <==> <C-p> => 自动补全

v => 选择块
j => 将块连成一行
gU => 变大写
gu => 变小写
< 或 > => 左右缩进
= 自动缩进

f/F<Char> => 向后/向前至某一个字符
t/T<Char> => 向后/向前至某一个字符的前一个字符

替换

:s/old/new/g => 行内全局替换
:%s/old/new/g => 文件内全局替换
:%s/old//g => 删除所有匹配的内容

:g/string/d => 删除包含特定字符的行

第四阶

块操作

<action>a<object> => 选择包含了 `object`
<action>i<object> => 选择不包含 `object`    

<C-v> => 块操作
    0<C-v><C-d>I--[ESC]  (在每一行的行首插入 `--` )

分屏

:split => 水平分屏
:vsplit => 垂直分屏

<C-w>h/j/k/l => 切换分屏
<C-w>_/| => 最大/最小尺寸
<C-w>+/- => 增加/减小尺寸