VIM 编辑器学习笔记
VIM
打开与关闭文件
打开
vim [filename]
模式
vim 有与普通文本编辑器不同,存在两种模式
- 命令模式,所有的按键都表示命令
- 插入模式,所有输入将变成文件的内容
模式切换
- 用 vim 打开文件后,编辑器处于命令模式
- 命令模式进入插入模式:按 i/a/c/o 等
- 插入模式返回命令模式:按 Esc
关闭
- :wp | ZZ 保存编辑结果,退出 vim
- :wp newfilename 另存为
- :e! 消除编辑结果,恢复原始文件
- :q! 消除编辑结果,退出 vim
简单的文本编辑
移动光标
按字符移动
- k|- 上
- j|+ 下
- h 左
- l 右
按行移动
-
0 行开头
-
$ 行结尾
-
G 文件结尾
-
24G 文件24行
按单词移动
- w 向后移动一个单词(标点符号算单词)
- W 向后移动一个单词(标点符号不算单词,忽略标点符号)
- b 向前移动一个单词(标点符号算单词)
- B 向前移动一个单词(标点符号不算单词,忽略标点符号)
编辑
- i 插入,并进入插入模式
- a 附加,光标后移,并进入插入模式
- c<text object> 修改,删除x处内容,并进入插入模式,如
- cw 删除光标到单词结尾
- c2b 删除光标到前2个单词
- c$ 删除光标到行尾
- c0 删除光标到行开头
- cc|C 删除本行
- d<text object> 删除文本对象
- dw 删除光标至单词结尾
- db 删除光标至单词开头
- d0 删除光标至行开头
- d$|D 删除光标至行尾
- dd 删除本行
- u 撤销上一次操作
字符操作
- r[x] 替换字符,(不会进入插入模式),光标处字符替换为x
- ~ 大小写转换,光标后移一位
- x 删除光标字符
移动
移动方式为“先删除再放置”
- p 放置在光标后
- P 放置在光标前
复制
- y<text object> 复制文本
- yw 复制光标至单词结尾
- yb 复制光标至单词开头
- y0 复制光标至行开头
- y$ 复制光标至行尾
- yy|Y 复制一行
重复与撤销
- . 重复上一条命令
- u 撤销上一条命令
- U 恢复本行
合并行
- J 合并行,将光标后一行接续到当前行尾
命令中的数字
一般命令的格式
(command)[text object]
(command)(number)(text object)
(number)(command)(text object)
命令中的数字表示命令执行次数,如:2dd 表示删除两行
- 命令(command)
- 文本对象(text object):表示要处理的文本量
- 数值参数(number)
进阶
更多移动方法
根据屏幕移动
滚动一屏
- ^F 往前滚动一屏
- ^B 往后滚动一屏
- ^D 往前滚动半屏
- ^U 往后滚动半屏
- ^E 屏幕上移一行
- ^Y 屏幕下移一行
符号 ^ 表示 Ctrl 键
调整光标在屏幕位置
移动光标所在行相对屏幕的位置,但光标仍在原文本行
- z enter 光标移到屏幕顶部
- z.
- z-
在屏幕中移动
保持屏幕试图,在屏幕范围内移动
- H 移动到屏幕顶端
- M 移动到屏幕中央
- L 移动到屏幕底部
- nH 移动到屏幕整数第n行
- nL 移动到屏幕倒数第n行
按行或行内移动
- enter|+ 下一行
- - 上一行
- ^ 移动到行首非空格位置
- n| 移动到当前行第n列
根据文本块移动
- w|W 向前一个单词(小写标点符号算单词,大写标点符号不算单词)
- b|B 向后一个单词
- e|E 单词结尾
- ( 上一个句首
- ) 下一个句首
- { 上一个段首
- } 下一个段首
根据搜索结果移动
- /someword enter 向下搜索
- ?someword enter 向上搜索
- n 沿原方向重复搜索
- N 沿原反方向重复搜索
- fx 搜索当前行下一个出现 x 的地方
- Fx 搜索当前行上一个出现 x 的地方
- tx 搜索当前行下一个出现 x 的地方的前一个字符
- Tx 搜索当前行上一个出现 x 的地方的后一个字符
根据行号移动
- nG 转到第n行
- G 转到文件结尾
- ^G 显示行号