欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Linux之vim编辑器

Linux之vim编辑器

2024/12/22 0:08:08 来源:https://blog.csdn.net/U2396573637/article/details/144329189  浏览:    关键词:Linux之vim编辑器

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


vi/vim键盘图

感谢大家!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com