一、vi和vim
vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于Windows系统下的记事本。很多软件默认使用vi作为他们编辑的接口。vim是进阶版的vi,vim可以视为一种程序编辑器。
复制/etc/passwd文件到自己的目录下(不要直接修改letc/passwd),后面使用passwd文件演示 vim命令
下载vim: sudo apt-get install vim
#用法1:
vim 文件路径
含义:打开指定的文件
#用法2:
vim +数字 文件的路径
含义:打开指定的文件,并且将光标移动到指定行
#用法3:
vim +/关键词文件的路径
含义:打开指定的文件,并且高亮显示关键词
#用法4:
vim 文件路径1 文件路径2 文件路径3
含义:同时打开多个文件
二.vim三种模式
vim中存在三种模式:命令模式、编辑模式(输入模式)、末行模式。
- 命令模式:打开文件之后默认进入该模式,可以输入快捷键进行一些操作:删除、复制、粘贴、移动光标等
- 编辑模式:可以对文件的内容进行编辑
- 末行模式:可以在末行输入命令来对文件进行操作:搜索、替换、保存、退出、撤销、高亮等
进入编辑模式:(大写一般与行相关,小写一般与光标相关)
- i: 光标处 (光标处插入)
- l:行首(第一个非空字符)
- a: 下一个字符 (光标后添加)
- A:行尾
- o:光标下边插入一空行
- O:光标上边插入一空行
- s: 取代当前字符(替换)
- S:取代当前行
退回命令模式:[Esc]
进入末行模式:
- :
- /或?:进入末行模式,后面接字符串进行查找
退出vim:
- q:退出
- wq:保存并退出
- q!:强制退出
- x:文件没有修改时直接退出,在文件修改的情况下保存并退出(不要使用X,X是文件进行加密)
异常退出:在编辑文件之后并没有正常wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出
解决办法:删除隐藏的临时文件(以.swp结尾)
三、命令模式
打开文件之后默认进入该模式
1.光标移动
- 光标上下左右移动:方向键 或 kjhl
- 光标上下左右移动指定行或字符:[数字]方向键 或 [数字]Kjhl
- 光标移动到行首:^
- 光标移动到行尾:$
- 光标移动到首行:gg
- 光标移动到末行:G
- 自动格式化程序:gg=G
- 光标移动到指定行:[数字]G 或 [数字]gg
- 向上翻屏:按键ctrl+ b 或 PgUp
- 向下翻屏:按键ctrl + f 或 PgDn
#向下移动5行
5 下方向键
#移动指定行
7 gg/G
2.复制/粘贴/剪切
- 复制光标所在行:yy
- 光标所在行的下一行新开一行粘贴: p
- 以光标所在行为准,向下复制指定的行数:[数字]yy
- 剪切/删除光标所在行: dd
- 剪切/删除光标所在行为准,向下剪切/删除指定行:[数字]dd
- 剪切/删除光标所在的当前行之后的内容:D
- 可视化操作(view)(相当于鼠标的选中): v(可视模式)、V(可视行)、ctrl +v(可视块),然后按下方向键来选中需要操作的区块按下y复制或按下d删除
#复制5行
5 yy p
3.撤销/恢复
- 撤销(undo) : u 或者 :u(末行模式)
- 恢复(取消)之前的撤销操作:ctrl + r
四、末行模式
1.保存与退出文件
- 保存: :w
- 另存为: :w 路径
- 退出::q
- 保存并退出: :wq
- 强制执行: :!
- 不保存,强制退出: :q!
2.查找与替换
- 查找: /关键词 或 ?关键词
- 在搜索结果中切换上/下一个结果(next) : N/n
- 取消高亮 : :nohl
- 替换光标所在行第一条原数据: :s/原数据/新数据
- 替换光标所在行全部原数据: :s/原数据/新数据/g
- 替换整个文件每行第一条原数据: :%s/原数据/新数据
- 替换整个文件全部原数据: :%s/原数据/新数据/g
[符号含义]:
- %表示整个文件g表示全局(global)3.显示行号
- 显示行号(临时)(number) : :set nu取消显示行号: :set nonu
3.显示行号
显示行号(临时)(number) : :set nu
取消显示行号: :set nonu
4.*执行shell 指令
#执行shell指令*
![shell指令]
! ls /
5.*切换文件
查看当前已经打开的文件名称: :files
- 切换指定文件: :open已经打开的文件名
- 切换到上一个文件(back prev): :bp
- 切换到下一个文件(back next) : :bn
五、vim的配置
临时配置:末行模式下输入的配置
全局配置文件(vim自带): /etc/vim/vimrc
个人配置文件(优先级更高): ~l.vimrc
/etc/vim/template.c
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<fcntl.h>
int main(int argc, char* argv[])
{
return 0;
}
~/.vimrc
set number
" 突出显示当前行
set cursorline
" 设定 tab 长度为 4
set tabstop=4
" 搜索时高亮显示被找到的文本
set hlsearch
"开启新行时使用智能缩进
set smartindent
"显示命令
set showcmd
"命令行高度
set cmdheight=2
"autocmd BufNewFile *.c 0r /usr/share/vim/vimfiles/template.c
"设置头文件及主函数模板
autocmd BufNewFile *.c 0r /etc/vim/template.c
全局配置文件和个人配置文件都有同一个配置项时,以个人配置文件为准