打开文件
vim [options] file
+# 打开文件以后光标在#行的行首
+/string 直接定位到第一个被匹配到的string的行的行首
-m 只读模式打开
-e 直接进入扩展命令行模式
-b 以二进制方式打开文件
vim四种模式
- 命令模式:打开后默认
- 插入模式:编辑文件
- 扩展命令模式(末行模式):保存、退出等等
- 可视化模式:
模式之间切换
命令模式–> 插入模式
- i 在当前光标的所在位置插入
- I 在当前行的行首位置开始插入
- a 在光标的后面开始插入
- A 在当前行的行尾位置开始插入
- o 在当前光标所在行的下方打开一个新行
- O 在当前光标所在行的上方打开一个新行
插入模式 –>命令模式
- esc
命令模式–>扩展命令模式
- :
扩展命令模式–>命令模式
- esc enter
- esc esc
关闭文件
- 扩展命令行模式
- :q 退出
- :q! 不保存强制退出
- :wq 保存退出
- :wq! 强制保存退出
- :x 保存退出
- 命令模式
- ZZ 保存退出
- ZQ 不保存退出
扩展命令行模式
- “:”进入扩展命令行模式
- 命令
- w 写入磁盘
- wq 保存退出
- x 保存退出
- q 退出
- r filename 读入一个文件,在光标的下一行插入
- w filename 将当前的文件另存为另外一个文件
- ! command 执行命令,然后回车回到文件中
- r!command 直接将命令的执行结果写入到文件中,光标所在行的下一行
光标的移动
- 字符间移动
- h 左移动
- l 右移动
- j 往下移动
- k 往上移动
- # command 多个字符之间跳转
- 单词间移动(除了下划线都认为是单词的分隔符)
- w 下一个单词的词首
- e 当前单词或者下一个单词的词尾
- b 当前单词或者上一个单词的词首
- # command 多个单词之间进行跳转
- 当前页跳转
- H 当前页的第一行
- L 当前页的最后一行
- M 当前页面的中间位置
- zt 将光标所在的行移动到屏幕的顶端
- zb 将光标所在的行移动到屏幕的底部
- zz 将光标所在的行移动到屏幕的中间位置
- 行首行尾跳转
- 0(数字)跳转到行首
- $ 跳转到行尾
- ^ 跳转到行首的第一个非空白字符
- 行间跳转
- gg 回到第一行
- 1G 回到第一行
- G跳转到最后一行
- 扩展命令模式下:# 跳转到对应的#行
- #G 跳转到指定的#行
- 段落间跳转
- } 下一段
- { 上一段
- 翻屏
- ctrl+f 向下翻一屏
- ctrl+b 向上翻一屏
- ctrl+d 向下翻半屏
- ctrl+u 向上翻半屏
命令行的操作
- 字符编辑
- x 删除光标所在的位置
- #x 删除#个字符
- xp 交换位置
- p 粘贴到光标所在的位置
- ~大小写转换
- J 删除当前行后的换行符
- 替换
- r 替换光标所在位置
- R 切换到替换模式
- 删除
- d 删除,需要结合光标跳转字符
- d0 删除到行首
- d$ 删除到行尾
- d^ 删除到非空行首
- dw 删除一个单词
- de 删除当前单词到词尾的位置或者下一个单词
- db
- dd 删除光标所在的行
- #dd 删除#行
- dG 删除到文件的行尾
- dgg 删除到文件的行首
- D 相当于d$
- 复制
- y 复制,需要结合光标跳转字符
- y$
- y0
- y^
- yw
- ye
- yb
- yG
- ygg
- yy 复制整行
- #yy 复制#行
- 粘贴
- p 如果是整行,则粘贴到当前所在行的下面,否则,则粘贴到光标所在位置的后面
- P 如果是整行,则粘贴到当前行所在的上面,否则,则粘贴到光标所在位置的前面
- 改变命令
- c 修改之后直接切换到插入模式
- c$
- c0
- c^
- cb
- ce
- cw
- cc 删除当前行并且输入新内容
- #cc 删除#行,并切换到插入模式
- C 相当于c$
- #[i|I|a|A|o|O]string esc 粘贴#次string
- 撤销
- u 撤销最近的更改
- #u 撤销之前的#次更改
- U 撤销光标所在行的关于此行操作
- ctrl+r 重做最后的操作,撤销撤销
- . 重复前一个操作
- #. 重复之前的动作多少次
- 查找
- /pattern 从当前光标所在位置向下查找
- ?pattern 从光标所在位置向上查找
- n 同搜索命令
- N 同搜索命令相反
扩展命令模式补充
地址定界:
: start, end
- # 具体到多少行
- m,n 从m开始到n结束
- m,+n,从m开始,到m+n结束 2, +3 第2行到第5行
- . 代表当前行
- $ 最后一行
- $-# 倒数第#+1行
- % 全部
- #,/pat/,从第#开始,到第一次被pat匹配到的行
- /pat1/,/pat2/从第一个别pat1匹配到的行到 第一个被pat2匹配的行
- /pat/,# 从第一个被pat匹配到的行,到#行
使用方法:后面跟
- d 删除
- y 复制
- w file :将范围内的文件另存为一个文件
- r file 在指定的位置插入文件中的内容
查找替换
:地址定位符s/要查找的内容/要替换的内容/装饰器
- 要查找的内容:可以使用正则表达式
- 要替换的内容: 不可以使用正则表达式,但是可以使用\1,\2等,也可以使用&来代替前面的内容
- 装饰器
- i 忽略大小写
- g 全部替换
- gc 是提前之前要确认
- y 确认
- n 跳过
- a 全部
- /可以替换成别的符号
- @
可视化模式
- v 面向字符
- V 面向行
- ctrl+v 面向的是块
- 可以配合键盘移动键使用
- 突出显示的文件可以删除,复制,变更,过滤,替换等等
多文件操作
vim file1 file2 file3
- :next 下一个
- :prev 上一个
- :first 第一个
- :last 最后一个
- :wqall
- :wall
- :qall
- 保存之后再切换
使用多个窗口
- 多个文件切割
- vim -o|-O file1 file2 file3
- -o 水平切割
- -O 垂直切割
- ctrl+w 切换不同窗口
- 单的文件切割
- ctrl+w,s 水平分割
- ctrl+w,v 垂直分割
- ctrl+w,方向键
- ctrl+w,q 取消相邻的屏幕
- ctrl+w,o取消所有的屏幕
定制化vim
- 配置文件:
- 全局:/etc/vimrc
- 个人:~/.vimrc
- 扩展命令模式:
- 添加行号 set nu 取消 set nonu
- 搜索时忽略大小写 set ic 取消set noic
- 自动缩进(与上一行对其) set ai 取消 set noai
- 搜索高亮 set hls 取消 set nohls
- 语法高亮 syntax on 关闭 syntax off
- 设置光标所在的行的标识符 set cul 取消 set nocul
- 获取帮助:set all
- 文件格式
- 转换成windows: set fileformat=dos
- 转换成linux: set fileformat=unix
vim帮助信息
- :help
- : help topic
- vimtutor