【Linux】linux中vim/vi (linux基本开发工具)
创始人
2025-05-30 05:48:19
0
  1. vim键盘图

这是vim/vi的键盘图,基本的一些操作,上面都标识的比较清晰。

编辑

  1. vim基本概念

2.1.介绍

·vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。

2.2.各模式的功能区分

我们讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),

分别是命令模式(command mode)
插入模式(Insert mode)
底行模式(last line mode)

正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。按「ESC」键可回到命令行模式。

想要查看所有模式,在末行下输入:help vim-modes,直接可以看到所有的模式,有很多的模式。

2.3.基本模式之间的相互转换

基本的三种模式之间的相互转换:

  1. vim的基本操作

进入vim:在系统提示符处输入vim [文件名称] , 就进入vim全屏幕编辑画面

vim test.c 用vim 打开test.c

进入之后是在正常模式(命令模式)下。

进入:

编辑

命令模式界面:

3.1.[正常模式]切换至[插入模式]

a:向后退一个字符开始输入。
i:当前位置开始输入。
o:另起一行,开始输入。

3.2.[插入模式]切换至[正常模式]

目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

3.3.[正常模式]切换至[末行模式]

「shift + ;」, 其实就是输入「:」
退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」
w :保存当前文件。
wq :存盘并退出vim。
q! :不存盘强制退出vim。
w!:强制退出。
wq!:强制写入并退出。有时候我们在修改系统配置文件的时候就要用到。
  1. vim命令模式命令集

命令模式的意义归根结底就是利用命令代替鼠标操作,运用命令来提高编辑效率。

4.1.切换到插入模式

按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件。
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字。
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
按「O」进入插入模式后,是插入新的上一行,从行首开始输入文字。

4.2.光标移动

vim可以直接用键盘上的光标来上下左右移动,
但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
按「 $ 」:移动到光标所在行的“行尾”
按「^」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头,也支持#w。
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l
按[gg]:进入到文本开始
按[shift+g]:进入文本末端
按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页
[n+shift+g]:跳转光标到第 n 行。

4.3.删除文字

「x」:每按一次,删除光标所在位置的一个字符。
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符。
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。
「dd」:删除光标所在行。
「#dd」:从光标所在行开始删除#行。

注意:配合p使用就是剪切操作。所以删除就是删除到缓冲区。

4.4.复制

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。
「#p」:#次粘贴。[6p] 粘贴6次。

注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

4.5.撤销上一次操作

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。(撤销)
「ctrl + r」: 撤销的恢复。取消u操作。

4.6.替换

「r」:替换光标所在处的字符。
「#r」:将后面#个字符全部替换,成同一个字符。例如:5r+【字符】,就是讲从光标开始向后5个字符全部替换为输入的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。其实就是进入替换模式(批量化替换)。
「shift+ ~」:自动大小写切换。按一次切换一个,长按切换一行。

4.7. 更改

「cw」:更改光标所在处的字到字尾处。
「c#w」:例如,「c3w」表示更改3个字。

注意:这里是字,指的是单词,不是字符。也是直接进入插入模式。进行修改。

  1. vim末行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式

5.1.调出行号和取消行号

列出行号「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
取消行号「set nonu」: 输入「set nonu」后,行号会消失。

5.2.跳到文件中的某一行

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

5.3.分屏操作

vs test2.c 会再次打开一个文件,分屏操作。(无论分多少个屏幕,光标在那个屏幕,就是操作那个屏幕。
ctrl+ww 在各个屏幕下切换光标。(在命令模式下,不在底行模式)。

注意:假如我们现在要退出,要退出那个文件,直接光标在那个文件中,进入底行模式 wq 即可。(光标在那个屏幕就操作那个屏幕)。

  1. 底行模式命令集

6.1执行linux命令

!【linux命令】:直接在底行模式下执行linux命令。按 任意键 退回到vim页面。

6.2 全局搜索替换

  1. vim简单配置


在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。这个是全局的vim配置。

虽然每个用户,用的是同一个vim程序,但是,大家可以使用不同的vim配置。

而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下。

通常已经存在一个.vimrc文件,如果不存在,则创建之。

切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~

打开自己目录下的.vimrc文件,执行 vim .vimrc 。写入命令就可以了。

vim的基本配置修改自己的 ".vimrc" 文件,root用户也有自己的 ”.vimrc” 文件。不要动不属于自己的配置文件。

配置的指令需要我们自己去网上查找。一般很多帖子都会讲的很清楚。直接去百度vim配置大全。

这就是 vim 的基本配置,就是给自己家目录下的 “.vimrc” 文件写入配置指令。

vim 的一键配置,就是运用别人写好的脚本。直接配置。
在gtiee上 有一个项目,直接搜索:vimforcpp 下面有一个链接,直接拷贝下来,一键配置。(注意只是支持 Centos7 x86_64 环境。
找到下面的链接即可:

完成后再次打开 vim test.c文件就可以看到 配置好的文件。
关于什么首行缩进,语法高亮都会配置好,也可以自己打开 .vimrc文件 修改配置。
我给大家找了一篇文章,可以看看,学习vim配置的更多知识。
拓展阅读。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...