Vim cheatsheet
layout: post
title: Linux -- Vim cheatsheet
author: CY
description: "Vim usage"
tags: [Linux]
categories: [Linux]
share: false
image:
background: triangular.png
全局(Global)
| :help keyword |
打开关键字帮助 |
:saveas file |
另存为 |
| :close |
关闭当前窗口 |
K |
打开光标所在的单词的man页 |
光标移动(Cursor movement)
| k、j、h、l |
上、下、左、右移动光标 |
| H、L、M |
将光标移动到当前页面顶部、底部、中间 |
| b、B |
将光标移动到上个单词的结尾、结尾(单词含标点) |
| w、e、W、E |
将光标移动到下个单词的开头、结尾、下个含标点单词的开头、结尾 |
| % |
移动光标到配对的字符。默认支持:()、{}、[] |
| 0、$、^、g_ |
移动光标到行首、行尾、行首非空白符、行内最后一个非空白符 |
| gg、G、5G |
移动光标到文档第一行、最后一行、第五行 |
| fx、Fx |
移动光标到字符x下次、上次出现的位置 |
| tx、Tx |
移动光标到字符x下次出现的位置的前一个字符、上次出现的位置的后一个字符 |
| ; , |
正向、反向重复上边的f, t, F 或 T命令 |
| {、} |
移动到上一个、下一个段落 (当编辑代码时则为函数/代码块) |
| zz |
移动屏幕使光标居中 |
| ctrl + y/e |
光标不动情况下屏幕向上、向下移动一行 |
| ctrl + f/b/d/u |
向前滚动一屏、向后滚动一屏、向前滚动半屏、向后滚动半屏 |
插入模式 - 插入/追加文本
| i、a |
从光标前、后开始插入字符 |
I、A |
从行首、尾开始插入字符 |
| O、o |
在当前行之上、下另起一行, 开始插入字符 |
ea |
从当前单词末尾开始插入 |
| Esc |
退出插入模式 |
|
|
退出(Exiting)
| :w |
保存 |
:q |
退出(修改未保存时警告) |
| :w !sudo tee % |
使用sudo保存当前文件 |
:q! or ZQ |
不保存强制退出 |
| :wq or :x or ZZ |
保存并退出 |
:wqa |
保存并退出所有标签 |
| :saveas newfilename |
另存为 |
|
|
可视化模式(Marking text - visual mode)
| v |
进入可视化模式(面向字符) |
V |
进入可视化模式(面向行) |
| Ctrl + v |
进入可视化模式(面向矩阵) |
|
|
| o |
切换光标到选择区开头/结尾 |
O |
切换光标到选择区的角 |
| ab、aB |
选择被 () 、{}包裹的区域(含括号) |
ib、iB |
选择被 () 、{}包裹的区域(不含括号) |
| aw |
选择当前单词 |
Esc |
退出可视化模式 |
| <、> |
向左、右缩进 |
y、d |
复制、剪切 |
| ~ |
大小写切换 |
|
|
剪切, 复制, 粘贴
| yy、dd | 复制、剪切当前行 | yw、dw | 复制、剪切当前单词 |
| ——– | —————————- | —————— | —————————- |
| 3yy、3dd | 复制、剪切3行 | yG、dG | 复制、剪切到文档结尾 |
| y^、d^ | 复制、剪切, 从行首到光标位置 | y$、d$(D the same) | 复制、剪切, 从光标位置到行尾 |
| P、p | 在光标前、后粘贴 | x | 剪切当前字符 |
y: yank; d: delete; p: put
编辑(Editing)
| r |
替换当前字符 |
gwip |
段落合并 |
| J |
将下一行合并到当前行(有空格) |
gJ |
将下一行合并到当前行(无空格) |
| cc、S |
删除当前行,并进入插入模式(同功能) |
s |
删除当前字符,并进入插入模式 |
| C,c$ |
从当前字符删除到行尾,并进入插入模式(同功能) |
ciw |
删除整个单词 |
| xp |
当前字符后移一位 |
cw |
从光标位置开始,修改单词 |
| u |
撤销操作 |
U |
撤销某一行最近所有修改 |
| ctrl+r |
重做 |
. |
再次执行上个命令 |
查找/替换(Search and replace)
| /pattern |
向后查找 |
n |
查找下一个 |
| ?pattern |
向前查找 |
N |
查找上一个 |
| \vpattern |
字母数字字符被视为正则表达式特殊字符 (不需转义字符) |
|
|
| :s/old/new |
用new替换当前行第一个old |
|
|
| :s/old/new/g |
用new替换当前行所有的old |
|
|
| :n1,n2s/old/new/g |
用new替换文件n1行到n2行所有的old |
|
|
| :%s/old/new/g |
用new替换文件中所有的old |
|
|
| :%s/^/xxx/g |
在每一行的行首插入xxx,^表示行首 |
|
|
| :%s/$/xxx/g |
在每一行的行尾插入xxx,$表示行尾 |
|
|
| :noh |
移除搜索结果的高亮显示 |
|
|
range规则:m,n: 从m行到n行; 0: 第一行;$: 最后一行; . : 当前行; %: 所有行
所有替换命令末尾加上c,每个替换都将需要用户确认。
多文件(Working with multiple files)
| :e file |
新建缓冲区打开file |
:bd |
关闭缓冲区 |
| :bprev or :bp |
切换到上个缓冲区 |
:bnext or :bn |
切换到下个缓冲区 |
| :ls |
列出所有打开的缓冲区 |
|
|
| :sp file |
新建缓冲区打开 file 并 水平分割窗口 |
:vsp file |
新建缓冲区打开 file 并 垂直分割窗口 |
| Ctrl + ws/wv |
水平/垂直分割窗口 |
Ctrl + ww |
在窗口间切换 |
| Ctrl + wk/wj/wh/wl |
切换到上/下/左/右侧窗口 |
Ctrl + wq |
关闭窗口 |