vim使用经验
Linux 命令行相关
光标移动(shell终端)
- 左/右移一个字符
- 方向键
- ctrl + b/f
- 左/右移一个单词
- ctrl + 方向键
- alt + b/f
- esc + b/f
- 移动到行首/尾
- ctrl + a/e
Vim 命令
光标移动
- 多行移动
- gg
- 移动文件头
- G
- 移动到文件尾
- num k
- 上移num行
- num j
- 下移num行
- :[num]
- 移动到文件的第 num 行
- 行首尾移动
- 0
- 光标移动到行首
- $
- 光标移动到行尾
- 单词移动
- w
- 向后移动一个单词,光标位于单词的第一个字母
- b
- 向前移动一个单词,光标位于单词的第一个字母
- e
- 向后移动一个单词,光标位于单词的最后一个字母
- ge
- 向前移动一个单词,光标位于单词的最后一个字母
- 字符移动
- f[c]
- 移动到当前光标之后的第一个字符为 [c] 的位置上
- F[c]
- 同上,反向查找
- [num]hjkl
- 向左/下/上/右移动[num]个字符
- 以句为单位移动
- )
- 移动到句首
- (
- 移动到句尾
- 其他移动方式
- ^
- 移动到本行第一个非空字符
- 0
- 移动到本行第一个字符,可以为空
操作撤销
- u
- 撤销一步
- U
- 对一行的步骤进行撤销
复制操作
- [num] yy
- 复制 num 行,num默认为1
- y^
- 当前位置复制到行首,等同 y0(不含光标所在字符)
- y$
- 当前位置复制到行尾(含光标所在字符)
- y[num]w
- 复制一个单词,num默认为1
- yG
- 复制到文件末尾
- y1G
- 复制到文件开头
剪切/删除
- [num]dd
- 剪切当前行后的 num 行,从当前行开始计算
- :[num1],[num2]d
- 剪切第[num1]~[num2]行
- :[num1],[num2] m [num3]
- 将第[num1]~[num2]行移动到 [num3] 行
- dw
- 删除当前单词
- daw
- 删除当前字符所在单词
- D/d$
- 删除当前字符至行尾
- d^
- 删除当前字符至行首
退出保存
- :wq
- 保存并退出,等同于 ZZ
- :q!
- 强制退出,并忽略所有更改
- :e!
- 放弃所有更改,并打开原有文件
粘贴
- p
- 粘贴至光标后(下边,右边)
- P
- 粘贴至光标上(上边,左边)
替换
- :\s/old/new
- 用 old 字符替换当前行第一个 new 字符
- :\s/old/new/g
- 用 old 字符替换当前行所有的 new 字符
- :%s/old/new
- 用 old 字符替换所有行第一个 new 字符
- :%s/old/new/g
- 用 old 字符替换本文件中所有的 new 字符
插入
- i
- 当前位置插入
- I
- 当前行首插入
- a
- 当前位置后插入
- A
- 当前行尾插入
- o
- 当前行之后插入一行
- O
- 当前行之前插入一行
查找
- /[text]
- 查找 text,n 查找下一个, N 查找上一个
- ?[text]
- 查找 text,反向查找,n 查找下一个, N 查找上一个
-
- 向后(下)查找游标所处的单词
-
- 向前(上)查找游标所处的单词
- /hello>
- 精确匹配 hello
- /^hello
- 精确查找位于行首的 hello
- /world$
- 精确查找位于行尾的 hello
- 其他
- vim 查找时一些特殊字符在查找时需要转义
- .*[]^%/?~$
- 查找时大小写
- :set ignorecase/noignorecase
- 忽略/不忽略大小写
- :set ignorecase/noignorecase
- vim 查找时一些特殊字符在查找时需要转义
窗口操作
- 一个窗口已经打开了一个文件,想要再打开一个文件:
- open [file]
- 一个窗口的多文件切换
- bn(切换下一个文件)
- bp(切换上一个文件)