操作模式
一般vim有三种模式

正常模式
此模式下你的输入不会写入文件, 而是读为命令
| 快捷键(光标定位) | 解释 (参照光标位置) |
|---|---|
| h l | 水平向左移动 水平向右移动 |
| j k | 垂直向上移动 垂直向下移动 |
| w W | 移动到下一个单词的首字符处 移动到下一个长单词的首字符处 |
| e E | 移动到下一个单词的结尾字符处 移动到下一个长单词的结尾字符处 |
| b B | 移动到前一个单词的首字符处 移动到前一个长单词的首字符处 |
| 0 $ | 移动到行首 移动到行尾 |
| ( ) | 移动到句首 移动到句尾 |
| { } | 移动到段首 移动到段尾 |
| gg G | 到第一行 到最后一行 |
| <n>G :<n> | 跳转到第n行 如11G和:11(命令模式) |
| Ctrl+B/Page Up Ctrl+F/Page Down | 翻到上一页 翻到下一页 |
| 快捷键 (删除) | 解释 (参照光标位置) |
|---|---|
| x <n>x | 删除(剪切)当前字符 删除(剪切)后面n个字符 |
| dd <n>dd | 删除(剪切)当行 删除(剪切)n行 |
| dG D | 从当行删除到文件尾 从当前位置删除到行尾 |
| :<n1>,<n2>d | 从n1行删除到n2行(如:566,666d,命令模式) |
| ZZ | 保存退出 |
| 快捷键 (复制剪切) | 解释 (参照光标位置) |
|---|---|
| yy nyy | 复制当前行 复制下面n行 |
| dd ndd | 剪切当前行 剪切下面n行 |
| p P | 粘贴在下一行 粘贴在上一行 |
| 快捷键(覆盖) | 解释 (参照光标位置) |
|---|---|
| r | 取代光标所在处字符 |
| R | 覆盖模式,按Esc退出 |
| u | 撤销上一步操作 |
| 快捷键 (查找替换) | 解释 (参照光标位置) |
|---|---|
| / keyword n N | 搜索关键字 下一个 上一个 |
| :%s/oldworld/newworld/g 范围: %s 或者 n1,n2s 选项: c/g | :范围/被替换词/替换词/选项 全文范围/两行之间 每个询问/不询问 |
一些举例
:1,4s/^/#/g 1-4行添加行首注释
:1,4/^#//g 1-4删除行首注释
:1,4/^/[\\/\\/]/g 1-4行添加//注释(\\表示转义)
:1,4/^[\\/\\/]//g 1-4删除//注释
自定义快捷键
nmap(普通模式)
vmap(可视模式)
imap(插入模式)
cmap(命令行模式)
| 快捷键设置 | 解释 |
|---|---|
| :map <C-/> 0i#<ESC> | Ctrl+/: 行首添加 # |
| :map <C-b> 0x | Ctrl+b: 删除行首字符 |
| :map <C-S-p> p | Ctrl+Shift+p: 粘贴当前行 |
| :map <A-S> :wq<CR> | Alt+S: 保存并推出 |
| C, S, A, F | Ctrl, Shift, Alt , Fn 键 |
| 永久快捷键请创建~/.vimrc文件,直接写命令不需要写冒号: |
进入插入模式
在正常模式下按:
| 操作符 | 命令解释(参照光标位置) |
|---|---|
| a | 在下一个位置追加 |
| A | 在行尾追加 |
| i | 在光标处插入 |
| I | 在行首插入 |
| o | 在下方另起一行 |
| O | 在上方另起一行 |
命令模式(底行模式)
| 命令 | 解释 |
|---|---|
| :w :q | 写入更改,或者另存文件:w newfile 退出vim |
| :[w/q/wq]! | 强制 (写入保存/不保存退出/保存并推出) |
| :! [commd] | 感叹号单独使用时可以临时执行外部命令行命令 |
| :/[keyword] :?[keyword] | 查找下文关键词 查找上文关键词 |
| :set nu :set nonu | 显示行号 不显示行号 |
| :set ic :set noic | 不区分大小写 区分大小写 |
| :r [file] :r ![commd] | 导入文件内容到光标处 将命令执行结果写入光标处 |
| :ab mail xiaomin@abc.com | 为长文本添加别名 |
#编辑一些配置文件后可以使用source命令刷新
$ vim /etc/locale.conf
LANG="zh_CN.UTF-8"
$ source /etc/locale.conf