你是否在编辑文件时以为键盘坏了,为什么不能删除呢,为什么不能敲代码呢,当你初识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,向后跳到每个单词开头,括号也算一个单词 |
W 或Shift+w |
WORD,字串,向后跳到下一个字串开头 |
e |
end,向后跳到每个单词末尾,括号也算一个单词 |
E 或Shift+e |
End,向后跳到每句字串末尾 |
b |
back,回到上一个单词开头,括号也算一个单词 |
B 或Shift+b |
Back,回到上一句字串的开头 |
- |
移动到非空格上一行 |
+ |
移动到非空格下一行 |
gg |
移动到最顶部 |
G 或Shift+g |
将光标移动到整个文档的最后 |
4G 或4 Shift+g |
将光标移动到整个文档的第4行 |
H 或Ctrl+h |
光标移动到屏幕的最上方那一行的第一个字符 |
M 或Ctrl+m |
光标移动到屏幕的最上方那一行的第一个字符 |
L 或Ctrl+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 空格 |
行内移动
命令 | 解释 |
---|---|
0 或Home |
数字0,移动到行首 |
$ 或End |
移动到行尾 |
行内搜索
命令 | 解释 |
---|---|
f a |
移动到本行下一个匹配项,查找本行下一个a,; 下一个匹配项, 上一个匹配项 |
F a 或Shift+f a |
移动到本行上一个匹配项,查找本行上一个a,; 上一个匹配项, 下一个匹配项 |
t a |
移动到本行下一个匹配项前,查找本行下一个a,; 下一个匹配项, 上一个匹配项 |
T a 或Shift+t a |
移动到本行上一个匹配项后,查找本行上一个a,; 上一个匹配项, 下一个匹配项 |
复制&粘贴
命令 | 解释 |
---|---|
y0 |
yank,复制当前行光标位置到行首的内容 |
y$ |
yank,复制当前行光标位置到行尾的内容 |
y1G |
yank,复制当前行到第一行的内容 |
yG |
yank,复制当前行到最后一行的内容 |
yy |
yank,复制当前行 |
10yy |
yank,复制当前行往下的10行内容 |
yw |
复制一个单词 |
p |
粘贴到光标下一行 |
P 或Shift+p |
粘贴到光标上一行 |
4p |
粘贴4次 |
剪切
命令 | 解释 |
---|---|
x |
剪切当前光标所指的字符 |
4x |
剪切当前光标向后的4个字符 |
修改&替换
命令 | 解释 |
---|---|
>+Enter |
增加缩进 |
<+Enter |
减小缩进 |
=+Enter |
自动缩进 |
J |
将当前行与下一行合成同一行,删除回车 |
r* |
替换当前光标所选的字符,例如将当前光标所指替换为s:rs |
R 或Shift+r |
REPLACE,替换模式,按下R 后,再输入字符替换当前光标所选的字符并将光标向后移动 |
删除
命令 | 解释 |
---|---|
dd |
delete,删除当前行 |
dl |
删除光标右边的字符 |
d3l |
删除光标右边的3个字符(包括光标下的字符,光标指向的是当前字符的前面) |
dh |
删除光标左边的字符 |
d2h |
删除光标左边的2个字符 |
dw |
删除一个单词但不进入插入模式 |
Delete |
删除光标后一个字符 |
重复&撤销
命令 | 解释 |
---|---|
. |
英语句号,重复上一次修改操作,例如删除、替换、插入 |
u |
undo,撤销上一步操作 |
u2 |
undo,撤销2步操作 |
U 或Shift+u |
undo,撤销当前所有操作 |
Ctrl+r |
redo,重做上一步撤销动作,回退撤销 |
屏幕操作
命令 | 解释 |
---|---|
:split 或:sp 或Ctrl+w s |
上下分屏,Ctrl+w 切换屏幕 |
:split set splitbelow |
上下分屏,下主屏,Ctrl+w 切换屏幕 |
:split set nosplitbelow |
上下分屏,上主屏,Ctrl+w 切换屏幕 |
:res +5 |
调节上下分屏大小 |
:vsplit 或:vs 或Ctrl+w v |
左右分屏,Ctrl+w 切换屏幕 |
:vertical resize |
调节左右分屏大小 |
:e /home/a.txt |
在分屏的情况下打开文件编辑 |
Ctrl+w - |
调小屏幕 |
Ctrl+w = |
调大屏幕 |
Ctrl+f 或Page Down |
屏幕向下移动一页 |
Ctrl+b 或Page 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 退出 |
I 或Shift+i |
行首插入字符,esc 退出 |
A 或Shift+a |
行尾插入字符,esc 退出 |
o |
open a new line,新建下一行 |
O 或Shift+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 ",删除" 内的内容并进入插入模式 |
esc 或Ctrl+c 或Ctrl+[ |
退出插入模式 到普通模式 |
输入
命令 | 解释 |
---|---|
Ctrl+v 65 |
以十进制输入,例如65是A |
Ctrl+A |
插入上一次插入的内容 |
Tab 或Ctrl+i |
插入制表符 |
Entre 或Ctrl+j 或Ctrl+m |
换行 |
删除(进入插入模式后)
命令 | 解释 |
---|---|
BackSpace 或Ctrl+h 或Ctrl+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 文件名
|另存为|
|ZZ
或Shift+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 |
移动到下一个匹配项 |
N 或Shift+n |
移动到上一个匹配项 |
esc 或Enter 或ctrl+c 或Ctrl+[ |
退出命令行模式 |
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,选中内部单词 |
viW 或vi Shift+w |
visual inner WORD,选中字串包含后一个空格或标点 |
vaw |
visual around word,选中周围单词,包含前后空格 |
vaW 或va Shift+w |
visual around WORD,选中字串包含后一个空格或标点 |
vis |
visual inner sentence,选中内部句子 |
vas 或va 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 |
切换当前窗口和目录树左边窗口 |
I 或shift+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`清除搜索