保存
- q:退出
- q!:强制退出,不保存修改内容
- w:保存
- wq:保存退出
- x:保存退出
- ZZ:快速保存退出
搜索替换
:s/old/new/ # 光标所在行的第一个old替换成new
:s/old/new/g # 光标所在行的所有old替换成new
:m,ns/old/new/ # 第m行至第n行中每行的第一个old替换成new
:m,ns/old/new/g # 第m行至第n行所有old替换成new
:,$s/old/new/g # 将当前行至末尾中所有的old替换成new
:%s/old/new/g # 所有行的所有old替换成new
:%s/^x/y/g # 将每行开头的x替换成y,其他地方的x保留不动
:%s#.*#\/\/&#g # 在每行行首添加//符号
- 选用#号作分隔符
- .*表示整行
- &表示引用所查找的内容
- \/\/用转义符将//输出
- 意思是将.*代表的整行,全部替换成//&,而&又是所查找的整行
在当前文件中操作其他文件
1. :./b.txt // 将当前打开文件保存为b.txt
2. :1,6 w ./b.txt // 将当前打开文件的1至6行保存至b.txt
3. :r ./b.txt // 当b.txt文件读入当前打开文件中,默认添加在末尾
4. :0 r ./b.txt // 将b.txt读入到当前打开文件的首行,首行为第0行
文件分屏
1. vim -O a.txt,b.txt // 垂直屏方式打开文件2个文件,小写o是水平屏
2. :split或vsplit // 将同一个文件分屏
3. 向右分屏,并且让光标在右边的分屏上(光标原本默认是在原始屏的)
1. :set splitright
2. :vsplit
4. 向下分屏,并且让光标在下分屏上
1. :set splitbelow
2. :split
5. 分屏快捷键设置
map msl :set splitright<CR>:vsplit<CR> // 向右分屏:msl
map msh :set nosplitright<CR>:vsplit<CR> // 向左分屏:msh
map msk :set nosplitbelow<CR>:split<CR> // 向上分屏:msk
map msj :set splitbelow<CR>:split<CR> // 向下分屏:msj
6. 在各个分屏文件中切换:ctrl + w + h向左屏切换,可替换成l,j,k
// 映射成快捷键
let mapleader=" " // 空格键
map <LEADER>l <C-w>l // 按下空格+l,就相当于ctrl+w+l
map <LEADER>h <C-w>h // 其他同理
map <LEADER>k <C-w>k
map <LEADER>j <C-w>j
7. 设置各个分屏大小
map <up> :res +1<CR>
map <down> :res -1<CR>
map <left> :vertical resize-1<CR>
map <right> :vertical resize+1<CR>
标签页
1. :tabe a.txt // 打开a.txt,若a.txt不存在,则创建该文件
2. :tab split // 用标签页打开当前编辑文件
3. :tabc // 关闭当前标签页
4. :tabo // 关闭所有标签页
5. :tabf filename* // 用标签页打开与通配符匹配的一个文件
5. :tabn // 跳转至后一个标签页,全写为tabnext。或直接使用gt
6. :tabp // 跳转到前一个标签页,或直接使用gT
7. :tabr // 跳转到第一个标签页,全写为tabfirst
8. :tabl // 跳转到最后一个标签页,全写为tablast
9. :tabm 0 // 将当前标签页移到第0个页面,
10. :tabdo %s/x/y/g // 对多个标签执行同一个命令
map mk :tabn<CR>
map mj :tabp<CR>
map ml :tablast<CR>
map mh :tabfirst<CR>