vi/vim使用命令

你是否在编辑文件时以为键盘坏了,为什么不能删除呢,为什么不能敲代码呢,当你初识vi,会觉得这个东西设计很难用,这篇教程带你熟练得用上这款经典的工具,当你熟练了这款工具就会真正体会到高效率打码

Vi 是在 Unix 系统上广泛使用的编辑器,Vim 是 Vi 的改进版本,由 Bram Moolenaar 在 1991 年发布,Vim兼容vi命令,现在很多系统将vi符号链接到Vim,所以使用vi命令其实还是用的Vim
Vim官网

安装Vim

#centos
sudo yum update
sudo yum install vim

#debian/ubuntu
sudo apt update
sudo apt install vim

直接输入vi a.txt可以打开文件,文件不存在则创建新文件,按下i进入插入模式 ,输入4*4的a矩阵,按下esc即可退出到普通模式

修改vim配置文件

#查看vim信息
vi --version
#编辑vim配置让你更方便学习
vi $HOME/.vimrc

#语法高亮
syntax on
#tab占4个空格
set ts=4
#将tab转换为空格
set expandtab
#显示行号
set number
#实时计算其他行与当前行的距离
set relativenumber

vi/vim区分大小写,它设计的目的是让你用键盘解决问题,精通vim就可以丢掉鼠标了,你要剪视频的话还是捡回来吧,vim干不了这活

Vim入门

启动vim
命令 解释
vim filename.txt 编辑或新建filename.txt文件
vim -r filename.txt 恢复异常退出的filename.txt文件,linux异常退出会创建.swp文件
vim -R filename.txt 以只读方式打开filename.txt文件
vim + filename.txt 打开文件并定位到最后一行
vim +2 filename.txt 打开文件并定位第二行
vim +/hello filename.txt 打开文件并定位第一个hello的位置

1、普通模式(NORMAL Mode)

当我们进入文件时处于普通模式 ,新建一个文件复制一篇英语作文,按下i,windterm再按Shist+Insert粘贴,练习一下就会了

普通模式 才能移动光标,也就是刚进入文件的模式或者插入模式 按下esc,结合以下的图例可以更好的理解图标的位置

文档移动光标
命令 解释
K
J
H
L
% 光标在括号上移动到对应的另一个括号
w word,向后跳到每个单词开头,括号也算一个单词
WShift+w WORD,字串,向后跳到下一个字串开头
e end,向后跳到每个单词末尾,括号也算一个单词
EShift+e End,向后跳到每句字串末尾
b back,回到上一个单词开头,括号也算一个单词
BShift+b Back,回到上一句字串的开头
- 移动到非空格上一行
+ 移动到非空格下一行
gg 移动到最顶部
GShift+g 将光标移动到整个文档的最后
4G4 Shift+g 将光标移动到整个文档的第4行
HCtrl+h 光标移动到屏幕的最上方那一行的第一个字符
MCtrl+m 光标移动到屏幕的最上方那一行的第一个字符
LCtrl+l 光标移动到屏幕的最上方那一行的第一个字符
2k 向上移动2行(未配置set relativenum)
4j 向下移动4行(未配置set relativenum)
4Enter 向下移动4行
2k 移动到对应往上2行的行号,不用自己算多少行,实时显示其他行到当前行的距离(配置set relativenum)
4j 移动到对应往下4行行号,不用自己算多少行,实时显示其他行到当前行的距离(配置set relativenum)
空格 向后移动一位
n2空格 number,跳到当前光标后指定2的位置,按下n,再输入数字,再按空格,,例如跳到当前光标后6位:n 6 空格
行内移动
命令 解释
0Home 数字0,移动到行首
$End 移动到行尾
行内搜索
命令 解释
f a 移动到本行下一个匹配项,查找本行下一个a,;下一个匹配项,上一个匹配项
F aShift+f a 移动到本行上一个匹配项,查找本行上一个a,;上一个匹配项,下一个匹配项
t a 移动到本行下一个匹配项前,查找本行下一个a,;下一个匹配项,上一个匹配项
T aShift+t a 移动到本行上一个匹配项后,查找本行上一个a,;上一个匹配项,下一个匹配项
复制&粘贴
命令 解释
y0 yank,复制当前行光标位置到行首的内容
y$ yank,复制当前行光标位置到行尾的内容
y1G yank,复制当前行到第一行的内容
yG yank,复制当前行到最后一行的内容
yy yank,复制当前行
10yy yank,复制当前行往下的10行内容
yw 复制一个单词
p 粘贴到光标下一行
PShift+p 粘贴到光标上一行
4p 粘贴4次
剪切
命令 解释
x 剪切当前光标所指的字符
4x 剪切当前光标向后的4个字符
修改&替换
命令 解释
>+Enter 增加缩进
<+Enter 减小缩进
=+Enter 自动缩进
J 将当前行与下一行合成同一行,删除回车
r* 替换当前光标所选的字符,例如将当前光标所指替换为s:rs
RShift+r REPLACE,替换模式,按下R后,再输入字符替换当前光标所选的字符并将光标向后移动
删除
命令 解释
dd delete,删除当前行
dl 删除光标右边的字符
d3l 删除光标右边的3个字符(包括光标下的字符,光标指向的是当前字符的前面)
dh 删除光标左边的字符
d2h 删除光标左边的2个字符
dw 删除一个单词但不进入插入模式
Delete 删除光标后一个字符
重复&撤销
命令 解释
. 英语句号,重复上一次修改操作,例如删除、替换、插入
u undo,撤销上一步操作
u2 undo,撤销2步操作
UShift+u undo,撤销当前所有操作
Ctrl+r redo,重做上一步撤销动作,回退撤销
屏幕操作
命令 解释
:split:spCtrl+w s 上下分屏,Ctrl+w切换屏幕
:split set splitbelow 上下分屏,下主屏,Ctrl+w切换屏幕
:split set nosplitbelow 上下分屏,上主屏,Ctrl+w切换屏幕
:res +5 调节上下分屏大小
:vsplit:vsCtrl+w v 左右分屏,Ctrl+w切换屏幕
:vertical resize 调节左右分屏大小
:e /home/a.txt 在分屏的情况下打开文件编辑
Ctrl+w - 调小屏幕
Ctrl+w = 调大屏幕
Ctrl+fPage Down 屏幕向下移动一页
Ctrl+bPage Up 屏幕向上移动一页
Ctrl+d 屏幕向下移动半页
Ctrl+u 屏幕向上移动半页
Ctrl+e 屏幕向下移动一行
Ctrl+y 屏幕向上移动一行
20% 移动到文档20%处
zz 将当前行移动到屏幕中央
zt top,将当前行移动到屏幕顶端
zb bottom将当前行移动到屏幕底端

2、插入模式(Insert Mode)

普通模式 按以下命令键进入插入模式 (插前附后),有的远程连接工具会在左下角显示INSERT,也就是刚进入文件的模式到可以输入的模式

进入&退出插入模式
命令 解释
i 光标前插入字符,esc退出
a append,光标后插入字符,esc退出
IShift+i 行首插入字符,esc退出
AShift+a 行尾插入字符,esc退出
o open a new line,新建下一行
OShift+o open a new line,新建上一行
gi 定位上一次编辑的位置并进入插入模式
cw 删除一个单词并进入插入模式
cc 删除整行并进入插入模式
c 删除光标至行尾的字符并进入插入模式
c1 删除光标后1行并进入插入模式
ci+{ci+}ci+[ci+]ci+(ci+) change in,清除当前光标所在括号内的内容并切换到插入模式
cit change inner tag,删除tag内容并进入插入模式,例如修改标签内的内容
ci" change inner ",删除"内的内容并进入插入模式
escCtrl+cCtrl+[ 退出插入模式普通模式
输入
命令 解释
Ctrl+v 65 以十进制输入,例如65是A
Ctrl+A 插入上一次插入的内容
TabCtrl+i 插入制表符
EntreCtrl+jCtrl+m 换行
删除(进入插入模式后)
命令 解释
BackSpaceCtrl+hCtrl+H 删除光标前一个字符
Delete 删除光标后的一个字符,你可以理解为光标实际指向的是当前字符的前面,插入模式普通模式都能用
Ctrl+w 删除光标前一个单词
Ctrl+w 撤销光标前输入的内容
修改
命令 解释
Insert 切换插入/替换模式

3、命令行模式(Command-Line Mode)

再按下esc退出插入模式普通模式 ,在普通模式 输入:/进入命令行模式

保存&退出
命令 解释
:set nu 设置行号(未配置set relativenum
:set nonu 取消行号(未配置set relativenum
:q quit,仅退出,文件没有编辑即可仅退出
:q! 不保存退出
:w write,保存但不退出
:wq 强制写入并退出,即使文件没有被修改
:x 写入并退出,文件没有被修改,就没有任何操作
:e filename.txt 关闭当前文件并创建filename.txt新文件,当前文件没保存会提示
:e! filename.txt 放弃当前文件的修改并创建filename.txt新文件

|:r 文件名|将另一文件内容添加到当前光标后面|

|:w 文件名|另存为|

|ZZShift+z Shift+z|write&quit,保存退出|

|:saveas filename1.txt|另存为|

文件浏览器

在普通模式按下:进入命令行模式,是在打开一个文件的前提下打开文件浏览器

命令 解释
:Explore:E:Shift+e 垂直分隔一个窗口
:Sexplore:Sex 水平分隔一个窗口打开文件浏览器
:Vexplore:Vex 垂直分隔一个窗口打开文件浏览器
:Vex /home 指定位置垂直分隔一个窗口
正则表达式
命令 解释
:%s/$/hello/ 在当前行行尾追加hello
:%s/^M//g 替换掉dos换行符,^M使用ctrl+v + Enter即可输入
搜索匹配
命令 解释
:%s/old/new/g 全局替换,例如全局替换hello为hello world::%s/hello/hello world/g
:%s/old/new/g 全局替换,替换前提示每个是否确认替换(),例如全局替换hello为hello world::%s/hello/hello world/gc
/* 向前搜索匹配并移动光标到对应位置,例如查找当前光标位置前的hello:/hello
?* 向后搜索匹配并移动光标到对应位置,例如查找当前光标位置后的hello:?hello
n 移动到下一个匹配项
NShift+n 移动到上一个匹配项
escEnterctrl+cCtrl+[ 退出命令行模式
  • y:将当前匹配项替换为新的内容并继续执行下一个匹配项的替换
  • n:跳过当前匹配项,不进行替换,并继续执行下一个匹配项的替换
  • a:替换所有剩余的匹配项,不再提示每个匹配项
  • q:立即退出替换操作,不进行任何替换
  • l:将当前匹配项替换为新的内容并退出替换操作,不进行下一个匹配项的替换
  • ^E:向上滚动一行,显示上面的内容
  • ^Y:向下滚动一行,显示下面的内容

4、可视模式(VISUAL MODE)

在普通模式下按以下命令进入可视模式

命令 解释
v visual,可视模式,通过hjkl移动光标来选择单个字符,按d删除选中内容并回到普通模式
Ctrl+v visual block,可视块模式,通过hjkl移动光标来选择字符块,按d删除选中内容并回到普通模式
Shift+v visual line,可视行模式,通过hjkl移动光标来选择整行字符,按d删除选中内容并回到普通模式
viw visual inner word,选中内部单词
viWvi Shift+w visual inner WORD,选中字串包含后一个空格或标点
vaw visual around word,选中周围单词,包含前后空格
vaWva Shift+w visual around WORD,选中字串包含后一个空格或标点
vis visual inner sentence,选中内部句子
vasva Shift+s visual around sentence,选中字串包含后一个空格或标点
vi] 选中[]内的内容,不包含空格
vit visual inner tag,选中html标签内的内容

在可视模式下按:normal 命令可以执行普通模式 的命令,例如按下Shift+v进入可视行模式,j k选择行,输入:normal Ahello,在选中行后附加hello

Vim进阶

什么?用了这么多命令才进阶?其实这些命令没必要刻意去记,还有很多命令可以由你自己组合

Vim文本对象

  • 单词word是由字母、数字、下划线组成的,或者其他非空白字符序列组成,单词以空白字符(空格、tab、换行符)分隔
  • 字串WORD :由非空白字符序列组成,字串间以空白字符分隔
  • 句子sentence :一个句子以 .! 或者 ? 结尾并紧随着一个换行符、空格或者制表符。结束标点和空白字符之间可以出现任何数量的闭括号和引号: )]"'。段落和小节的边界也视为句子的边界
  • 段落paragraph:段落是指一系列相邻的文本行。通常情况下,段落由空行或特定的标记行(例如注释行)分隔开,可以将段落视为一组相关的文本行,例如一个段落可以是一段描述、一组函数定义或一条记录
  • 小节section:文本中的一个部分或片段,小节可以通过标题行、特殊标记或其他可识别的特征来标识

Vim边界(一般用来选择括号内的内容)

  • i内部(inner):选中边界内部的内容,不包含边界
  • a环绕(around):选中边界内部的内容,包含边界

详见[4、可视模式(VISUAL MODE)](#4、可视模式(VISUAL MODE))

Vim组合命令

vim命令由<operation><motion>组成,即<操作><动作>,例如以下命令,第一个d是操作选项,后面的则是动作;第一个y是操作选项,3l是动作

命令 解释
dl 删除光标右边的字符
d3l 删除光标右边的3个字符(包括光标下的字符,光标指向的是当前字符的前面)
dh 删除光标左边的字符
d2h 删除光标左边的2个字符
y3l 复制光标右边边的3个字符

Vim中的操作(operation)

命令 操作
c change,修改
d delete,删除
y yank,复制
p paste,粘贴
v visual,可视模式
g~ 反转大小写
gu 转换为小写
gU 转换为大写
> 增加缩进
< 减小缩进
= 自动缩进

Vim中的动作(motion)

命令 动作
h/j/k/l 向左、下、上、右移动光标
w word,移动到下一个单词的开头
e end,移动到当前单词的结尾
b begin, 移动到当前单词的开头
0 移动到当前行的开头
$ 移动到当前行的结尾
^ 移动到当前行的第一个非空字符
gg 移动到文件的开头
G 移动到文件的结尾
% 匹配括号移动
(/) 移动到句子的开头或者结尾
{/} 移动到段落的开头或者结尾

再举几个简单的<operation><motion>例子

标题
ciw 删除单词并修改
ci< 删除<>内的单词并修改
di{ 删除<>内的单词
dt} 删除当前光标到}前一个字符,t是行间搜索}一个字符
dT} 删除当前光标到}后一个字符,T是行间搜索}个字符

Vim高级

普通模式下按q开始录制,再按一个字符或数字存储宏(0-9、a-Z),操作结束后按q结束录制,按@字符或数字使用宏

例如操作:q开始录制->e指定用e存储 ->i进入插入模式->hello输入hello->esc退出插入模式->q结束录制;再输入5@e,插入hello的操作就会在当前光标位置执行5次;输入@@可以执行最后一次录制的 ,当然你可以输入8@@,就会在当前光标位置执行8次最后录制的

进入此网站了解更多:https://tszv.vercel.app/pages/5c3d43/#任务点

Vim高度可定制,前面已经修改过配置文件了,现在尝试其他配置,尽量在熟悉vim之后再修改键位

编辑配置文件

选择你需要的功能,很多效果远程连接是看不到的,只有在系统里操作能看到,注意区分普通用户和root用户,你在普通用户里配置了在root用户肯定是享受不到配置带来的优化

vi $HOME/.vimrc

普通模式 下进入命令行模式 输入:h option-list可以查看vim配置项,以下是一些常用配置,配置后进入命令行模式 输入:source $Home/.vimrc重新加载配置或者重启vim生效

Vimscript 复制代码
" 语法高亮
syntax on
" 高亮显示匹配的括号  
set showmatch  
"tab占4个空格
set ts=4
" 将tab转换为空格
set expandtab
" 显示行号
set number
" 实时计算其他行与当前行的距离
set relativenumber
" 命令补全
set wildmenu
" 搜索高亮
set hlsearch
" 搜索忽略大小写  
set ignorecase
" 总是显示状态行  
set laststatus=2
" 在编辑过程中,在右下角显示光标位置的状态行  
set ruler   
" 命令行(在状态行下)的高度,默认为1,这里是2  
set cmdheight=2 
" 修改按键映射,将原h改为n
"noremap n h
" 自定义组合映射,将S映射为:w+Enter,按下S即可保存
" map S :w<CR>
" 显示当前行下的线
" set cursorline
" 超过屏幕换行,折行
set wrap
" 在屏幕下方显示你输入的命令
set showcmd
" 设置编码
set enc=utf-8  
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
" 语言设置  
set langmenu=zh_CN.UTF-8
set helplang=cn
" 侦测文件类型  
filetype on
" 载入文件类型插件  
filetype plugin on  
" 为特定文件类型载入相关缩进文件  
filetype indent on
" 打开状态栏标尺
set ruler
" 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set ignorecase smartcase
" 输入搜索内容时就显示搜索结果
set incsearch
" 插入括号时,短暂地跳转到匹配的对应括号
"set showmatch
" 短暂跳转到匹配括号的时间
"set matchtime=2
" 开启新行时使用智能自动缩进
set smartindent

Vim添加插件

Vim插件需要插件管理器来统一管理,这里使用vim-plug,官网有其他系统的安装方式,这里介绍Linux

下载vim-plug

设置国内源可以看这篇:https://juejin.cn/post/7379641602619047975

#更新包和内核
sudo apt update
#安装curl
sudo apt install curl

在终端执行curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

编辑Vim配置

检查有没有~/.vim文件夹
cd ~然后ls -a

新建文件夹,分别为vim-plug下载的插件,自己安装的插件,文本相关插件,说明文档
mkdir -p ~/.vim/plugged ~/.vim/plugin ~/.vim/syntax ~/.vim/doc

vim $HOME/.vimrc在配置文件最后粘贴

call plug#begin('~/.vim/plugged')
  
call plug#end()
安装插件

配置文件vim $HOME/.vimrc,添加插件,保存:w,插件网站:https://vimawesome.com/

实用插件:

" 开屏界面
Plug 'mhinz/vim-startify'
" 状态栏
Plug 'vim-airline/vim-airline'
" 主题
Plug 'vim-airline/vim-airline-themes'
" 代码缩进线
Plug 'yggdroot/indentline'
" 文件目录树
Plug 'scrooloose/nerdtree'
" 按下Ctrl+p模糊搜索
Plug 'kien/ctrlp.vim'
" 文件内快速定位
Plug 'easymotion/vim-easymotion'
" 成对编辑,例如快速加引号括号
Plug 'tpope/vim-surround'
" rust
Plug 'rust-lang/rust.vim'
#执行命令重新加载配置
:source $HOME/.vimrc
#查看插件状态
:PlugStatus
#执行下载插件
:PlugInstall
#退出下载界面
:q
#安装或更新插件
:PlugUpdate
#删除列表中不再存在的插件
:PlugClean

查看效果

#开屏插件,命令行执行
vim
NERDTree用法

编辑配置文件vim $HOME/.vimrc,添加以下内容,<leader>默认代表\<CR>代表Enter

nmap <leader>f :NERDTreeFind<CR>
nmap <leader>g :NERDTreeToggle<CR>
" 使用系统剪切版→Vim
set clipboard=unnamedplus
" Vim→系统剪切版
set clipboard=unnamed

命令行按下vim,再按下\g即打开或关闭NERDTree,按:vs水平分屏

命令 解释
\g 打开or关闭目录树
\f 查找当前文件所在目录并显示目录树
Ctrl+w 切换窗口
Ctrl+w+p 切换当前窗口和目录树左边窗口
Ishift+i 打开隐藏文件
ctrlp.vim用法

编辑配置文件vim $HOME/.vimrc,添加以下内容,g:ctrlp_map代表全局变量ctrlp_map,<c-p>代表Ctrl+p

let g:ctrlp_map = '<c-p>'

命令行输入vim,然后按下Ctrl+p即可模糊搜索,Enter打开匹配到的文件,\f显示文件位置并打开目录树

vim-easymotion用法

<leader>可以通过let mapleader=""设置为其他键位,这里使用默认\

命令 解释
<leader><leader>w\\w 搜索移动到光标后面的目标
<leader><leader>b 搜索移动到光标前面的目标
<leader><leader>s 全局搜索
<leader><leader>j 行级向下搜索
<leader><leader>k 行级向上搜索
vim-surround用法

如普通模式,ys iw ",给单词添加""

命令 解释
ds delete a surrounding, 删除环境里的内容
cs change a surrounding, 修改环境里的内容
ys you add a surrounding,添加环境

Vim终极

当你熟悉vim之后,可以使用全新的Neovim,Neovim扩展了vim的功能,适配vim的配置文件和插件系统,Neovim使用异步处理,提高了响应速度,资源占用也比vim小

升级为NeoVim

官网其他系统安装方法

从vim迁移到neovim

如果你已经配置了很多vim插件不想继续麻烦,可以参照以下方案进行升级https://neovim.io/doc/user/nvim.html#nvim-from-vim

但我还是建议使用新的配置文件,某些vim中的配置在nvim中已经被删除,也可以将你的配置文件发给gpt让他生成lua语法的配置

卸载nvim

sudo apt remove neovim

安装nvim

这里使用通用的Linux安装方法,装最新的版本,直接install的是老版本

找一种你喜欢的字体:https://www.nerdfonts.com/font-downloads ,复制下载链接

#安装字体配置
apt install -yqq fontconfig
#下载字体
wget -q -nv https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/BitstreamVeraSansMono.zip
#解压
unzip BitstreamVeraSansMono.zip -d ~/.local/share/fonts
#删除压缩包
rm BitstreamVeraSansMono.zip
#加载字体
fc-cache -fv
#安装python3环境
apt install -yqq python3 python3-venv python3-pip
#配置python环境,3.11改成你自己下的版本,python3和python命令都会调用pthon3.11
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1
#查看是否配置成功,显示你下版本就是成功了
python
#退出python
exit()
#添加nvm环境变量
export NVM_DIR=/root/.nvm
#安装nvm管理node环境
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
#添加shell配置
cat >> ~/.bashrc <<EOF
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
EOF
#重新加载脚本
source ~/.bashrc
#下载node
nvm install 20
#检查node版本
node -v
#检查npm版本
npm -v
#安装Neovim,找到最新的对应版本下载https://github.com/neovim/neovim/releases
wget -q -nv https://github.com/neovim/neovim/releases/download/v0.10.0/nvim-linux64.tar.gz
#解压
tar zxf nvim-linux64.tar.gz
#移动到local下
mv nvim-linux64 /usr/local/share
#创建软连接
ln -s /usr/local/share/nvim-linux64/bin/nvim /usr/local/bin/nvim
#进入neovim
nvim

看到这个就装啦

安装Lazyvim

你是否反感频繁的去配置插件,使用lazyvim让你的Neovimp配置更方便,lazyvim提供了一套约定熟成的配置,当然你也可以添加配置自定义喜欢的配置,官网

备份nvim(如果你已经配置过nvim的话,我就不备份了)

mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak

克隆启动配置

git clone https://github.com/LazyVim/starter ~/.config/nvim
#删除.git
rm -rf ~/.config/nvim/.git

这个时候执行nvim打开nvim,不要动让他自己配置安装,等它不动了按q退出,看到这个东西就是lazyvim装好了

安装代码插件

按空格键->c键->m键->2键->`Ctrl+f`或者`/`搜索rust->jk上下选择->按下i安装->`esc`清除搜索
相关推荐
二十雨辰1 小时前
[linux]docker基础
linux·运维·docker
饮浊酒2 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
lihuhelihu2 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
矛取矛求2 小时前
Linux系统性能调优技巧
linux
One_Blanks3 小时前
渗透测试-Linux基础(1)
linux·运维·安全
Perishell3 小时前
无人机避障——大疆与Airsim中的角速度信息订阅获取
linux·动态规划·无人机
爱吃喵的鲤鱼3 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
dessler3 小时前
Linux系统-ubuntu系统安装
linux·运维·云计算
荒Huang4 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
Mortal_hhh5 小时前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器