vi编辑器是所有Unix及linux系统下标准的编辑器,类似于Windows系统下的记事本。很多软件默认使用vi作为他们编辑的接口。vim是进阶版的vi,vim可以视为一种程序编辑器。
前言:
1.文件准备
复制 /etc/passwd文件到自己的目录下(不要直接修改/etc目录下的passwd),后面使用passwd文件演示vim。
cd [work-dir] #将[work-dir]改为自己的工作目录的路径即可
mv /etc/passwd ./ #复制文件
2.命令准备
系统自带的是vi编辑器,vim需要自行下载,所以在使用之前需要先下载vim。
sudo apt-get install vim
3.配置vim
这块我们可以学完后面的内容后再回来配置vim。
vim的配置包括临时配置、全局配置、个人配置三种方式。
其中,临时配置是在vim的末行模式下输入配置,在本次使用时生效的配置;全局配置是在根目录下的/etc/vim/vimrc文件进行配置;个人配置是在家目录下~/.vimrc的文件中进行配置。我们以个人配置为例:
为了后序写c语言的代码,避免重复输入经常使用的一些语句,我们在/etc/vim/template.c中写入模板:
首先执行sudo vim /etc/vim/template.c命令,然后输入以下内容
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>int main(int argc, char* argv[])
{return 0;
}
在~/.vimrc文件中写入以下内容:
首先执行:sudo vim ~/.vimrc,然后填入以下内容
set number
" 突出显示当前行
set cursorline
" 设定 tab 长度为 4
set tabstop=4
" 搜索时高亮显示被找到的文本
set hlsearch
"开启新行时使用智能缩进
set smartindent
"显示命令
set showcmd
"命令行高度
set cmdheight=2"语法高亮度显示
syntax on"autocmd BufNewFile *.c 0r /usr/share/vim/vimfiles/template.c
"设置头文件及主函数模板
autocmd BufNewFile *.c 0r /etc/vim/template.c
这个配置文件的最后一行就代表,每次生成.c结尾的文件时,都会自动写入/etc/vim/template.c文件中的内容。
4.初识命令
用法一:#vim 文件路径:打开指定的文件
用法二:#vim 数字 文件路径:打开指定的文件,并将光标初始化为指定数字行
用法三:#vim /关键词 文件路径:打开指定文件,并且高亮显示关键词
用法四:#vim 文件路径1 文件路径2 文件路径3 ...:同时打开多个文件,(退出第一个第二个自动显示)
一、模式切换
vim中存在三种模式:命令模式、编辑模式(输入模式)、末行模式
命令模式:打开文件之后默认进入该模式,可以输入快捷键进行一些操作:删除、复制、粘贴、移动光标等
编辑模式:可以对文件的内容进行编辑(就是普通的编辑模式,下面不多做介绍了)
末行模式:可以在末行输入命令来对文件进行操作:搜索、替换、保存、退出、撤销、高亮等
模式切换按键说明:
进入编辑模式:
【i】:insert,从光标处进入
【l】:从光标所在行的行首进入
【a】:append,从光标的下一个字符进入
【A】:从光标所在行的行尾进入
【o】:open,从光标所在行的下边插入一个空行
【O】:从光标所在行的上边插入一个空行
【s】:subst:插入时取代当前光标字符
【S】:插入时取代当前行
退回命令模式:
【esc】按键
进入末行模式:
【:】:代表末行模式开始了
【/】:以搜索的状态进入末行模式,从上往下搜索接下来输入的关键字
【?】:以搜索的状态进入末行模式,从下往上搜索接下来输入的关键字
退出vim:
【q】:退出
【q!】:强制退出
【wq】:保存并退出
【x】:文件没修改直接退出、修改后保存并推出(不要使用x,x是文件进行加密)
异常退出:
在编辑文件后并没有正常wq保存退出,而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出。
解决办法:删除隐藏的临时文件(以.swp结尾的文件)
二、命令模式
打开文件后默认进入该模式
光标移动
1.光标上下左右移动:方向键 或 kjhl(kjhl分别代表上下左右)
2.光标上下左右移动指定行或字符:[数字]方向键或[数字]kjhl
3.光标移动到行首:^
4.光标移动到行尾:$
5.光标移动到首行:gg
6.光标移动到末行:G
7.自动格式化程序:gg=G
8.光标移动到指定行:[数字]G 或 [数字]gg
9.向上翻屏:按键ctrl+b 或 PgUp
0.向下翻屏:按键ctrl+f 或 PgDn
复制/粘贴/剪切
1.复制光标所在行:yy
2.光标所在行的下一行新开一行粘贴(paste):p
3.以光标所在行为准(包括当前行),向下复制指定的行数:[数字]yy
4.剪切/删除光标所在行(剪切了不粘贴就是删除)(delete):dd
5.剪切/删除光标所在行为准(包括当前行),向下剪切/删除指定行数:[数字]dd
6.剪切/删除光标所在的当前行之后的内容:D
7.可视化操作(view):v(可视模式),V(可视行)、ctrl+v(可视块)、然后按下方向键来选中需要操作的区块按下y复制或者按下d删除
撤销/恢复
撤销(undo):u或者末行模式下的:u
恢复(取消)之前的撤销操作:ctrl+r
三、末行模式
[ESC]→[:](依次按下这两个键,进入末行模式,按下退出键是为了确保处在命令模式)
保存与退出文件
1.保存(write)::w
2.另存为::w 路径
3.退出(quit)::q
4.保存并退出::wq
5.强制执行:!
6.不保存,强制退出::q!
显示行号
显示行号(临时)(number)::set nu
取消显示行号::set nonu
查找与替换
1.查找:/关键字 or ?关键字
2.在搜索的结果中切换 上/下 一个结果(next):N/n
3.取消高亮(no highlight)::nohl
4.替换光标所在行第一原数据::s/原数据/新数据
5.替换光标所在行全部原数据::s/原数据/新数据/g
6.替换整个文件每行第一条原数据::%s/原数据/新数据
7.替换整个文件全部原数据::%s/原数据/新数据/g
注:%表示整个文件 g:global全局的
执行shell命令
语法::![shell指令]
举例::!ls /
当外部命令执行结束之后按下任意键回到vim
切换文件
1.查看当前已经打开的文件名称::files
2.切换到指定文件::open 已经打开的文件名
3.切换到上一个文件(back prev)::bp
4.切换到下一个文件(back next)::bn
四、分屏操作
vim指令打开:
1)vim -d afile bfile #比较两个文件
#这个方法是用来比较两个文件的,有高亮显示,界面不太好看
2)vim -On afile bfile #左右分屏打开两个文件
#Ctrl+w l切换到右屏 #Ctrl+w h切换到左屏
3)vim -on afile bfile #上下分屏显示两个文件
#Ctrl+w j切换到下屏 #Ctrl+w k切换到上屏
编辑时打开:
1.如果在编辑时想分屏显示当前文件:
上下:Ctrl+w s 左右:Ctrl+w v
作用:同样的文件可以显示不同的位置,用于大文件参考上文使用。
特点:这两个文件同步内容,不同步显示位置。
2.如果想在编辑时分屏显示其它文件:
上下:vsp fileb_name 左右:vs fileb_name
3.关闭当前窗口:
关闭当前窗口,不能关闭最后一个仅剩的窗口:Ctrl+w c
关闭当前窗口,如果当前是最后一个窗口,则退出vim:Ctrl+w q
4.如果有更多屏幕:
将当前光标移动到下一个屏(next):Ctrl+w w
5.vim的分屏移动:
将当前光标下的屏幕移动到:
上屏位置:Ctrl+w K
下屏位置:Ctrl+w J
左屏位置:Ctrl+w H
右屏位置:Ctrl+w L
感谢大家!!