Haste makes waste

VIM使用手册

Posted on By lijun

根据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+vshift+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+vshift+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中也不能使用

  1. No543. «開いているファイルのディレクトリを開く»
  2. No559. «バッファ管理»
  3. No623. «二つのバッファーの比較»
  4. No688. «ファイルリストを作成する»
  5. No697. «ウインドウとバッファの関係»
  6. No713. «ウインドウを閉じずにバッファだけを閉じる»

6. 窗口分割

  1. sp:水平分割
  2. vsp:上下分割,用q退出
  3. ctrl+w:窗口之间移动,结合hjkl调整方向
  4. :set scrollbind:多个子窗口同步滚动,解除用:set noscrollbind

7. [暂时不用]其他

  1. No725. «ステータスライン表示のカスタマイズ»
  2. No754. «キー操作を記憶(マクロ操作)»
  3. No870. «特定の単語を含む行を削除/残す»
  4. No884. «16進10進変換»
  5. No909. «Vimに計算をさせる»
  6. No927. «Makefileでのタブ文字の空白への置き換えを抑制»
  7. No940. «読み込まれているスクリプトを調べる»
  8. カーソル下 の ファイル を 開く
  9. 【Tips】 キーバインド 割 当時 の 注意  
  10. .vimrcを分割する

99. 其他技巧

分类 操作 命令 备注
大小写切换 转换为小写 u 选中范围后,按下u
  转换为大写 U 选中范围后,按下U
组合行 前后行连接 J 前后两行,连接后空格
    gJ 前后两行,连接后空格