vi/vim工具是一个上古神器了,经久不衰,最nb编辑器

vi/vim的三种模式

  1. 命令行模式:就是我们进入vi/vim的时候就是命令行模式
  2. 插入模式:在文件文件的时候就是插入模式
  3. 替换模式

常用

移动操作

键盘 作用
数字在按方向键 比如我们向上4跳行就可以输入4在按向上的键
w 移动到单个单词的末尾
b 移动到单个单词的末前面
gg 文件最上方
GG 文件最下方
Ctrl+u/Pgdp 向上翻页
Ctrl+d/Pgdn 向下翻页
f+要移动的地方 例如background-alt = #444 ,
我按一下fa他就是移动到a,background-alt = #444
$ 到当前行的末尾
0 到当前行的前面

删除、恢复字符或行

键盘 意思
x和del是一样的 删除当前光标所在处的字符
nx 删除从光标开始的n个字符
u 撤销上一步操作
U 撤销对当前行的所有操作

插入模式

键盘 意思
i 是在光标所在的字符之前插入
I 是在光标所在行的行首插入
a 是在光标所在的字符之后插入
A 是在光标所在行的行尾插入
o 是光标所在行的下一行行首插入
O 是光标所在行的上一行行首插入
s 删除光标所在处的字符然后插入
S 删除光标所在行,在当前行的行首开始插入

查询

  • / 下搜索、nN
  • ?上搜索,nN

替换

1
2
3
4
:s/old/new      //用new替换行中首次出现的old
:s/old/new/g //用new替换行中所有的old
:n,m s/old/new/g //用new替换从n到m行里所有的old
:%s/old/new/g //用new替换当前文件里所有的old

复制/剪切/粘贴

键盘 作用
y 复制
p 粘贴
d 剪切

复制

键盘 作用
yy 复制一行
yaw 复制一个单词
y数字方向键 例如y3方向键上,复制上三行
yG 从当前行复制到文件结束
yw 复制当前单词
Y 等同于yy
2yy 复制两行
ggyG 全部复制,gg是最上面,yG是从当前行复制到文件结束

剪切

键盘 作用
dd 剪切一行
daw 剪切一个单词
d数字方向键, 例如d3方向键上,剪切上三行
dG 从当前行剪切到文件结束
yw 剪切当前单词
D 等同于dd
2dd 剪切两行
ggdG 全部剪切,gg是最上面,dG是从当前行剪切到文件结束

vim复制到系统剪切板

检查是否支持

1
vim --version | grep "clipboard"

查看支持clipboard

-是不支持

image-20211015145512171

不支持

可以让他支,需要安装一些插件来解决

1
sudo apt-get install vim vim-scripts vim-gtk 

image-20211015145628287

vim复制到系统剪贴板

  • "+y复制到系统剪切板中
  • "*y

"*"+有什么差别呢?

"* 是在系统剪切板中表示选择的内容
"+ 是在系统剪切板中表示选择后Ctrl+c复制的内容

vim剪切到系统剪贴板

  • "+dd – 剪切一行

从系统剪贴板粘贴到vim

  • "+p
  • "*p

设置vim默认使用系统剪贴板

1
vim .vim/vimrc

添加下面这个

1
set clipboard^=unnamed,unnamedplus

配置

用户配置文件vim ~/.vim/vimrc

系统配置文件vim /etc/vim/vimrc

配置 作用
set number 显示行号,默认显示绝对行号
set relativenumber 开启相对行号
set cursorline 开启光亮光标行
syntax on 代码高亮
set wrap 代码换行,比如一个代码很长他会往下显示
set wildmenu 命令补全
set hlsearch 搜索高亮,用的是/搜索

代码高亮设置前后

设置前

image-20211015151339933

设置后

image-20211015151409734

选择主题

vim默认也有很多主题

在命令行下输入

1
colorscheme 按一下tab键查看主题  # 注意有添加 set wildmenu  命令补全

image-20211015165114182

安装插件

安装插件管理器

这个我用的是vim-plug

项目地址https://github.com/junegunn/vim-plug

安装

1
2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

用法

配置文件里面添加vim ~/.vim/vimrc

1
2
3
4
5
call plug#begin('~/.vim/plugged')
Plug "要安装的插件"


call plug#end() 结束插件的安装

插件名

image-20211015163632628

安装常用的插件

插件搜索推荐网站https://vimawesome.com/

vim-airline插件

image-20211015163324175

配置文件vim ~/.vim/vimrc

1
2
3
call plug#begin('~/.vim/plugged')
Plug 'vim-airline/vim-airline'
call plug#end()

image-20211015163733018

在进入命令行模式输入

image-20211015163246785

1
PlugInstall

image-20211015163109001

按完毕

image-20211015163324175

vim-startify插件

打开vim最近打开的文件

image-20211015163820137

配置文件vim ~/.vim/vimrc

1
2
3
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify'
call plug#end()

安装
在进入命令行模式输入

image-20211015163246785

1
PlugInstall

vim-snazzy主题插件

项目地址https://github.com/connorholyday/vim-snazzy

配置文件vim ~/.vim/vimrc

1
2
3
call plug#begin('~/.vim/plugged')
Plug 'connorholyday/vim-snazzy'
call plug#end()

安装

image-20211015165509528

自启动主题

在配置文件里面添加vim ~/.vim/vimrc

1
2
colorscheme snazzy
let g:SnazzyTransparent = 1 透明背景

image-20211015171346641

cursorword单词增加下划线

项目地址https://github.com/itchyny/vim-cursorword

配置文件vim ~/.vim/vimrc

安装

1
2
3
call plug#begin('~/.vim/plugged')
Plug 'itchyny/vim-cursorword'
call plug#end()

安装好后他默认是自动启动的

vim-nerdtree文件管理器

项目地址https://github.com/preservim/nerdtree

image-20211016223703551

配置文件vim ~/.vim/vimrc

安装

1
2
3
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
call plug#end()

nerdcommenter代码注释

项目地址(https://github.com/preservim/nerdcommenter)[https://github.com/preservim/nerdcommenter]

配置文件vim ~/.vim/vimrc

安装

1
2
3
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdcommenter'
call plug#end()

默认自动启动的

  • \cc :注释一行
  • 3\cc:注释下面三行
  • \cu:取消注释一行
  • 3\cu:注释注释下面三行

下面演示

markdown-preview预览插件

项目地址https://github.com/iamcco/markdown-preview.nvim

配置文件vim ~/.vim/vimrc

安装

1
2
3
call plug#begin('~/.vim/plugged') 
Plug 'iamcco/markdown-preview.nvim'
call plug#end()

下载插件

1
2
:PluginInstall 
:call mkdp#util#install()

使用

1
2
3
:MarkdownPreview #启动预览 

:MarkdownPreviewStop # 关闭预览

coc.nvim插件

这个插件里面多插件

安装

1
2
3
call plug#begin('~/.vim/plugged') 
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()

安装搜索插件的插件