外部命令行查看教程
vimtutor
vi/vim内置帮助
:help
Set帮助:help option-list
:h config 查看配置文件
:map 查看按键 imap nmap……
:set or :set all
:set enc 查看或修改文件编码 一般是utf-8
:set ff 查案或修改文件格式 一般windows下是doc linux下是unix
:set wrap 在屏幕边缘自动换行显示
:set linebreak 在set wrap 的基础上,在单词边界处换行
:version 查看vim版本信息,配置文件路径
:checkhealth 查看详细信息
:echo $<变量名> 查看变量
配置文件
全局 /etc/vim
个人 ~/.vimrc
我的平板上没有ESC键,也使用Ctrl+[替代ESC图片.png
image.png
image.png

普通模式快捷键

xp 交换光标所在处的字符及其后面字符的位置
di” 删除双引号中间的内容,扩展vi” 选中双引号中间内容
di( 删除小括号中的内容,扩展di+符号,删除 符号中的内容
dt * t表示to,dt从光标出删除到某一个字符值截至
ggdG 删除所有,扩展gg表示起始G表示结束,d删除因此次命令可以删除所有,可以自行扩展ggVG全选
gp 粘贴完之后,把光标移动到所粘贴字符的后面
cit 修改html标签中间的内容
ZZ 保存文件并退出 等同于:wq

命令模式

地址定界:
:start_pos,end_pos
:n 具体第n行,例如2表示第2行
:n,m 从左第n行第m行
:n,+m 从左第n行第n+m行
: 2,+3 表示2到5行
:. 当前行
:$ 最后一行
:. , $-1当前行到倒数第二行
:% 全文,相当于1,$
//中间的表示正则匹配模式
例如 :/^i/ , /^j/ d 表示删除i开头到j开头的行 ,也可以是其他编辑命令,按自己的需要,y,v都可以
:w 新文件 命名
:w !sudo tee % 强制保存,没有以sudo权限打开时,保存不了的解决办法
:set tabstop=4 设置tab键为缩进4个字符
命令模式快捷键
在命令格式下, 代表插入寄存器, CTRL+W代表当前单词.
也可以通过 <寄存器名> 插入某一个寄存器的内容

拓展模式

拓展模式支持vimscript的语法,使用的时候需要用|分割

  1. :for i in range(1,3) | echo "Hello World!" | endfor

搜索并替换

s 是search的简写
s/要搜索的内容 /要替换的内容/修饰符
查找替换的分割符可以替换成其他字符:例如替换词成@和# s@/etc@/var@g s#/boot#/#i
修饰符:i 忽略大小写 g:全局替换 gc:全局替换,每次替换前询问
& 搜索出来的内容 \1 ,\2 ,\3 类似与$1,$2,$3 分组匹配到的内容
例如 %s/yang/&zh 就是把yang 替换成yangzh %s/(ya).*(zh)/\2\1 就是 把yangzh 替换成zhya
用 “\<” 来指定匹配单词开头:这样就不会匹配到包含该单词的其他单词了。

vimdiff

]c 跳转到下一个差异点
[c 跳转到上一个差一点
dp diff put 以当前文件为准
do diff get 以目标文件为准
zc 折叠
zo 展开折叠
[z 到当前打开的折叠的开始处。
]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk 向上移动到前一折叠的结束处。关闭的折叠也被计入

vim打开远程文件

vim ://[user@][:port]//[abs_path]
—使用sftp协议的时候,netrw创建不了文件夹,可能是权限问题,但是使用scp协议没问题

不可见字符显示与隐藏

显示 :set invlist
隐藏 :set nolist
在Linux中,cat -A file可以把文件中的所有可见的和不可见的字符都显示出来,在Vim中,如何将不可见字符也显示出来呢?当然,如果只是想在Vim中查看的话,可以这样:%!cat -A在Vim中调用cat转换显示。这样的做法不便于编辑,其实Vim本身是可以设置显示不可见字符的。
只需要:set invlist即可以将不可见的字符显示出来,例如,会以^I表示一个tab符,$表示一个回车符等。
或者,你还可以自己定义不可见字符的显示方式:
set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:最后,:set nolist可以回到正常的模式。

特殊寄存器

“* 鼠标选中剪切板
”+ 系统复制剪贴板

编辑二进制

以二进制方式打开文件vim -b binaryfile
扩展命令模式下,利用xxd命令转换为可读的十六进制
:%!xxd
编辑二进制文件
扩展命令模式下,利用xxd命令转换回二进制
:%!xxd-r
保存退出

多文件分屏

vim file file1 file2 file3 打开多个文件
vim -o | O file1 file2 file3 o上下 O左右
:next下一个:prev前一个
:first第一个
:last最后一个
:wall保存所有
:qall退出所有
:wqall 保存退出
:e file1 原窗口打开 file1
分屏
:split file2 上下分屏
:vsplit file3 左右分屏
切换分屏Ctrl+w , [w切换窗口] [q退出] [o 退出非光标所在窗口] [v左右分屏/] [s上下分屏]

定制vim工作特性

配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
扩展模式:当前vim进程有效
(1)行号
显示:set number,简写为set nu
取消显示:set nonumber,简写为set nonu
(2)忽略字符的大小写
启用:setic
不忽略:set noic
(3)自动缩进
启用:setai
禁用:set noai
(4)智能缩进
启用:smartindent 简写setsi
禁用:set nosi
(5)高亮搜索
启用:set hIsearch
禁用:set nohlsearch :noh暂时生效
(6)语法高亮
启用:syntax on
禁用:syntax off
(7)显示Tab和换行符^|和$显示
启用:set list
禁用:set nolist
(8)文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写:set ff=dos|unix
(9)设置文本宽度
set textwidth=65 (vim only)
set wrapmargin=15
(10)设置光标所在行的标识线
启用:set cursorline,简写cul
禁用:set no cursorline
(11)复制保留格式
启用:set paste
禁用:set nopaste

附件

vim中文用户手册.pdf
Vim 入门到精通.pdf