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)

相关推荐
ykjhr_3d39 分钟前
华锐云空间展销编辑器:开启数字化展示新时代
编辑器
许白掰43 分钟前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
longze_75 小时前
Ubuntu连接不上网络问题(Network is unreachable)
linux·服务器·ubuntu
Dirschs5 小时前
【Ubuntu22.04安装ROS Noetic】
linux·ubuntu·ros
qianshanxue115 小时前
ubuntu 操作记录
linux
AmosTian8 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
这我可不懂10 小时前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇11 小时前
java idea 本地debug linux服务
java·linux·intellij-idea
tan77º11 小时前
【Linux网络编程】Socket - TCP
linux·网络·c++·tcp/ip
kfepiza12 小时前
Linux的`if test`和`if [ ]中括号`的取反语法比较 笔记250709
linux·服务器·笔记·bash