根据Kindle电子书 «VIMが使えるようになる本»总结而成
1. 基本概念
| 分类 | 操作 | 命令 | 备注 |
|---|---|---|---|
| 基本操作(1) | 保存 | w | w!强制覆盖保存 |
| 退出 | q | q!强制退出 | |
| 保存并退出 | wq | x也可以保存退出 | |
| 打开文件 | e | 比如:e filename.txt |
|
| 打开文件夹 | e | 比如:e.打开当前文件所在文件夹,或:e /home/username/指定文件夹 |
|
| 创建文件 | enew | 比如:w newfilename.txt保存的时候再指定文件名 |
|
| 基本操作(2) | 移动 | h / j / k / l | 分别为左 / 下 / 上 / 右 |
| 基本操作(3) | 撤销(undo) | u | |
| 重做(redo) | Ctrl+r | やり直す | |
| 基本操作(4) | 复制 | y | yy复制一行,yw复制一个单词 |
| 剪切 | d | dw,cw删除一个单词,dd删除一行 |
|
| 粘贴 | p | 大写的P是,在光标之前的行粘贴 | |
| 替换 | r | ||
| 插入 | 当前字符之前插入 |
i | |
当前字符之后插入 |
a | ||
当前行之前插入 |
I | 大写 | |
当前行之后插入 |
A | 大写 | |
| 文本选择 | 选择 | Ctrl + v | 使用Ctrl+v选择后,可以使用hjkl移动光标,修改选择范围 |
| 选择(行单位) | Shift + v | 以行为单位进行选择 | |
| 选择后的后续操作 | y / d / p | 复制/剪切/粘贴 | |
| 行头行尾的输入 | I / A | 使用ctrl+v或shift+v选中后,再用I / A在行头或行尾一次性插入 |
|
| 一次性替换 | r | 选择后可以一次性替换 | |
| 移动 | 行头 | 0 或者 ^ | 移动到光标行的行头 |
| 行尾 | $ | 移动到光标行的行尾 | |
下一个单词的头部 |
w | ||
上一个单词的头部 |
b | ||
| 下移一个page | ctrl+f | 半个page下移,Ctrl+d | |
| 上移一个page | ctrl+b | 半个page上移,Ctrl+u | |
| 上移下移一行滚动page | Ctrl+y / Ctrl+e | y是下移,e上移 | |
| 移动到文件的开头 | gg | ||
| 移动到文件的末尾 | G | ||
| 移动到指定行号 | :250 | 移动到第250行 | |
| 数字结合 | 8k | 上移8行 | |
| 帮助 | 操作guide | $ vimtutor | 在Cygwin或Linux上使用$ vimtutor |
| 帮助 | :help | 在vim中使用 | |
| 更多插入方式 | 当前光标插入 | i和a | 分别为当前光标前插入,当前光标后追加 |
| 当前行插入 | I和A | 分别为当前行首插入,当前行尾追加 | |
| 删除当前光标处的字符后插入 | s | 小写为一个字符,大写S为删除当前行 | |
| 行上,行下追加 | o 和 O | o为行下追加,O为行上追加 | |
| 删除当前单词后插入 | cw |
2. VIM设定文件
VIM中能设定画面的表示,自动缩进等,在linux中,在home的user目录下:
[ec2-user@ip-10-0-10-11 ~]$ pwd
/home/ec2-user
[ec2-user@ip-10-0-10-11 ~]$ ls -a
. .bash_history .bash_profile .cache plan.txt python-study study .viminfo .vim_runtime
.. .bash_logout .bashrc .data python-dev .ssh .vim .vimrc work
另外,还可以设定行号,背景色,以及是否自动备份等。
3. 检索与替换
| 分类 | 操作 | 命令 | 备注 |
|---|---|---|---|
| 检索 | 光标后方开始检索 |
/ | |
光标前方开始检索 |
? | ||
跳转到检索结果的下一个 |
n | 注意前方检索和后方检索,检索方向不同 | |
跳转到检索结果的上一个 |
N | ||
| 光标上单词的简单检索 | * | ||
| 替换 | 替换当前文件所有 | :%s/替换前/替换后/g | %表示文件整体,没有%的话只针对当前行(s - subsitution) |
| :%s/替换前/替换后/ | 1. 没有g的话,如果一行中有多个匹配结果,则只替换第一个。 | ||
| 2. 有g的话,会替换所有的 | |||
| 替换时确认 | :%s/替换前/替换后/gc | 确认option,y表示替换,n不替换,a全部替换,q终止替换 | |
| 选择范围内替换 | 用ctrl+v或shift+v,然后:s |
:s/替换前/替换后/g |
检索后,:nohl取消高亮,也可以在.vimrc中进行配置
4. 更多删除
| 单位 | 操作 | 命令 | 备注 |
|---|---|---|---|
| 单个文字 | 删除光标处一个文字 | x | |
| s | 删除一个文字后,进入插入状态 | ||
| 一个单词 | 删除光标处一个单词 | dw | |
| 删除光标处一个单词 | cw | 删除后,进入插入状态 | |
| 一行 | 删除一行 | dd | |
| 删除多行 | 3dj | 当前光标行和下面3行 | |
| 修改3为其他数字,j或k改变方向 | |||
| 范围内 | 删除特定范围内 | di” | 删除引号内的,比如print("1131313131"),di(删除括号内 |
| da” | 删除引号内(包含引号)的 | ||
| yi” | 复制引号内的内容(光标在引号内),也可以是括号,中括号等 | ||
| ya” | 复制引号内的内容(包含引号) |
5. [暂时不用]操作文件夹及buffer管理
因为现在使用vscode的vim,文件夹操作不能使用。但
:e.可以打开当前文件夹。 buffer管理在当前vscode中也不能使用
- No543. «開いているファイルのディレクトリを開く»
- No559. «バッファ管理»
- No623. «二つのバッファーの比較»
- No688. «ファイルリストを作成する»
- No697. «ウインドウとバッファの関係»
- No713. «ウインドウを閉じずにバッファだけを閉じる»
6. 窗口分割
sp:水平分割vsp:上下分割,用q退出ctrl+w:窗口之间移动,结合hjkl调整方向:set scrollbind:多个子窗口同步滚动,解除用:set noscrollbind
7. [暂时不用]其他
- No725. «ステータスライン表示のカスタマイズ»
- No754. «キー操作を記憶(マクロ操作)»
- No870. «特定の単語を含む行を削除/残す»
- No884. «16進10進変換»
- No909. «Vimに計算をさせる»
- No927. «Makefileでのタブ文字の空白への置き換えを抑制»
- No940. «読み込まれているスクリプトを調べる»
- カーソル下 の ファイル を 開く
- 【Tips】 キーバインド 割 当時 の 注意
.vimrcを分割する
99. 其他技巧
| 分类 | 操作 | 命令 | 备注 |
|---|---|---|---|
| 大小写切换 | 转换为小写 | u | 选中范围后,按下u |
| 转换为大写 | U | 选中范围后,按下U | |
| 组合行 | 前后行连接 | J | 前后两行,连接后有空格 |
| gJ | 前后两行,连接后无空格 |