Linxu vim详解(常用命令)

目录

强烈建议全文阅读!

vim是什么?

命令模式

[底行模式:shift + ;](#底行模式:shift + ;)

普通用户无法sodu?

vim配置问题:(一点都不重要)


vim是什么?

Vs 2022是一款集成开发软件

vim是一个文本编辑器(主要写C和C++)

常用三种模式:

1、命令模式

2、底行模式

3、插入模式

vim刚打开时处于命令行模式,不方便进行书写代码操作

这个时候输入的所有字符,都被视为命令行

所以,没有用处

输入i进入插入模式,进行正常的编写

要退出,必须从插入模式退回命令模式

怎么退出?

按Esc

再按shift + : #进入底行模式

输入wq(write quit)

插入模式:其实就是编辑模式

命令模式:允许使用者通过命令,来进行文本的编辑控制

底行模式:用来进行vim和shell进行包括但是不限于交互的

命令模式

yy :复制当前行

p:粘贴到当前光标的下一行

u:撤销

dd :剪切/删除指定的行

dd的剪切用p实现

n + dd:剪切/删除连续的n行

n + p:粘贴n次指定内容

n + yy :从当前光标开始,连续复制n行

vim不能默认使用鼠标

Shift + 4 = $:迅速移动光标到当前行结尾

shift + 6 = ^ :迅速移动光标到当前行开始位置

gg:将光标定位到整个文本最开始位置

shift + g = G:将光标定位到整个文本最后位置

n + shift + g = G:将光标定位到整个文本任意位置

H键:左

J键:下

K键:上

L键:右

也可以带n

快速记住:h(左) j(jump,下) k(king,上) l(右)

为什么要使用hjkl来控制左右上下,键盘初期没有方向键,为了兼容

w:按照单词为单位进行光变后移

b:按照单词为单位进行光变前移

Ctrl + R :对历史撤销进行撤销

shift + `` = ~:大小写快速切换

x:删除光标后一个字符

n + x :一行内删除光标后n个字符

shift + x = X:删除光标前一个字符

n + shift + x :删除光标前n个字符

n + r:对光标指定的位置,进行一个字符的替换,可以一次替换多个

shift + r = R :替换模式,会直接向后进行文本替换

shift + zz:保存并退出

从命令模式进入插入模式的方法:

1、r(光标不动,直接进入插入模式)

2、o(插入一行之后直接进入插入模式)

3、a(光标往后移动一个字符再进入插入模式)

底行模式:shift + ;

q:退出

w:保存

q!:强制退出

wq:保存并退出

wq!:保存并强制退出

如果你对文件进行了更改,但是没有进行保存就要退出,此时就会报错:

No write since last change :意思是没有对更改的内容进行保存

类似于你的文件进行更改之后,系统问你是否需要更改

set nonu:取消行号

set nu:打开行号

s///g(global)

/关键字:搜索

!gcc + 文件:编译

!command:不退出vim命令,可以进行shell命令的执行

整个命令很方便:例如函数查看

vs 文件:打开文件,多文件操作

ctrl ww:切换光标

底行模式:set nu #设置行号

ctrl + z:是把vim stop,就是把vim暂停了。不要使用

这是退出vim异常:

此时再打开对应的文件,就会出错

意思是把vim挂到后台运行了

怎么办呢?

ps ajx | grep vim

kill -n 对应的进程杀掉

但是此时再打开文件,还是处于异常

这是因为在vim异常时,会自动保存一份临时文件

以便于我们进行数据回复

此时对于临时文件XXX.X.swp会有对应的提示操作

根据提示进行选择输入,是覆盖还是不保存等等,即可继续进行操作

但是,你每一次vim打开该文件,都会提示这个临时文件,很麻烦

这个时候你可以在本目录下把这个临时文件给删掉

如果你在断网之前,正在对文件进行编写

这个时候vim为了保证数据不丢失,也会 生成一个临时文件

这个时候根据你的需求,可以选择对应的操作:

R:恢复

D:删除(删除过后,之后vim打开文件就不会再出现临时文件的界面)

当然,如果你对文件没有任何修改,那么断网断电对文件都没有影响

就不会生成临时文件

下一次vim打开文件,还是正常的

批量化注释和批量化去注释:

1、ctrl + v:区域选择(支持shift + g)进入视图模式,使用hjkl方向控制

2、shift + i

3、输入//

4、两次Esc

删除注释:

1、ctrl + v

2、hjkl区域选择

3、包含且仅包含//

4、d:删除

普通用户无法sodu?

XXX is not in the sudoers file.

解决历史问题:普通用户无法进行sudo提权

首先,为什么会出现这个问题?

一般来说,只有root超级管理员才能进行提权

但是你进行提权的时候输入的是XXX的密码

好了,那么如果说你用自己的账号就可以进行提权,那还要root干嘛?

所以,一个普通拥护是否能被提权:

1、root进行操作

2、该用户是被信任的

在etc/sudoers文本文件中,会有对应的用户信息

有对应配置的用户,就可以进行提权,没有就不能进行提权

那么,怎么进行提权呢?

1、首先,需要root密码,登录root账号

2、vim etc/sudoers

3、添加用户配置

vim配置问题:(一点都不重要)

1、配置原理

vim本质上是一个二进制的可执行程序

但是在vim打开时,不是简单的打开

而是会首先访问配置文件.vimrc

如果有这个文件,就会访问,没有就不访问

而这个.vimrc就是一个对vim进行自主配置的文件

vim打开时就会读取.vimrc里的内容,读取对应的配置信息

然后在vim操作时,就会添加相关的配置操作

2、一键式配置

Vim的全面配置 - 知乎 (zhihu.com)

相关推荐
TeYiToKu12 分钟前
笔记整理—linux驱动开发部分(12)I2C总线与触摸屏设备
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件
坚持学习的你1 小时前
Ubuntu24.04 network:0 unclaimed wireless adapter no found
linux·ubuntu
 嘘 2 小时前
Centos使用Mysql
linux·mysql·centos
 嘘 2 小时前
Centos使用人大金仓ksql
linux·运维·centos·人大金仓
?crying2 小时前
深入理解 source 和 sh、bash 的区别
linux·开发语言·bash
是阿建吖!2 小时前
【Linux】操作系统
linux·运维·服务器
一只小菜鸡..2 小时前
241114.学习日志——[CSDIY] [CS]数据结构与算法 [00]
linux·服务器·学习
水饺编程2 小时前
【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-24
linux·嵌入式硬件·fpga开发·硬件架构
程序猿ZhangSir2 小时前
Linux系统Centos设置开机默认root用户
linux·运维·centos
XY.散人3 小时前
初识Linux · 信号产生
linux·运维·服务器