我的第二个工具VIM

如果你要和Linux打交道,我觉得Vim/Vi是必须要熟练掌握的一门手艺,不论Vim的其他优点。虽然Vim对于初学者十分的不友好,可是等真正掌握了之后,你会喜欢上vim下的自由和离开鼠标干扰的自在.

Vim的基础知识

vim对应命令键盘图

四种模式

正常模式NORMAL

正常模式下,可以移动光标,删除行列或者字符,查询字符

正常模式
h或者向左箭头⬅️ 光标向左移动一个字符
j或者向下箭头⬇️ 光标向下移动一个字符
k或者向上箭头⬆️ 光标向上移动一个字符
l或者向右箭头➡️ 光标向右移动一个字符
可以使用数字键搭配hjkl的组合键来移动光标到想到的位置,比如向上移动20行,可以输入“20k”来完成
ngg或者nG 跳转到第n行
gg 移动到文档的第一个字符
G 移动到文档的最后一行
$ 移动到这一行的最后一个字符
0 移动到所在行的第一个字符
n+Enter 光标向下移动n行
n+空格键 光标向右移动n个字符
复制黏贴删除
yy 复制光标所在那一行
nyy 复制光标所在的向下n行
y0 复制光标所在字符到本行行首
y$ 复制光标所在字符到本行行尾
yG 复制光标所在行到最后一行
y1G 复制光标所在行到第一行
p(小写) 将复制内容在光标下一行进行粘贴
P(大写) 将复制内容在光标上一行进行粘贴
x(小写) 删除光标当前所在位置字符
X(大写) 删除光标当前位置前一个字符
nx 向后删除n个字符
dd 删除光标所在行
ndd 删除光标当前位置向下n行
d0 删除光标所在字符到本行行首
d$ 删除光标所在字符到本行行尾
dG 删除光标所在行到最后一行
d1G 删除光标所在行到第一行
u 撤销前一个操作
[Ctrl]+r 回退上一个操作之前的状态
. 重复前一个动作
搜索和替换
/+字符串 向下搜索字符串
?+字符串 向上搜索字符串
n 重复上面的搜索动作,刚执行完“/+字符串”的动作后,会向下继续搜索这个字符串
N 与n相反,向上继续搜索这个字符
:n1,n2s/word1/word2/g 在n1,n2行之间搜索world1字符串,并替代为world2
:1,$s/word1/word2/g 从第一行到最后一行之间搜索world1字符串并替代为world2
:1,$s/word1/word2/gc 从第一行到最后一行之间搜索world1字符串并替代为world2,取代前提示用户确认

插入模式INSERT

进入插入模式
i 从目前光标所在的字符开始输入
I 从目前光标所在行的第一个非空字符开始输入
a 从目前光标所在的下一个字符开始输入
A 从目前光标所在行位置的最后一个字符处开始输入
o 在目前光标所在位置的下一行开始输入新的一行
O 在目前光标所在位置的上一行开始输入新的一行
进入替换模式
r 只会取代光标所在的那一个字符一次
R 会一直取代光标所在字符,直到按下键为止

可视模式VISUAL

可视模式可以用来选择文本,并进行批量处理

进入可视模式
v(小写) 逐个字符进行文本选择
V(大写) 逐行进行文本选择
[Ctrl]+v 按照文本块的方式进行文本选择
可以在选中的区域进行模式切换,例如行文本模式中输入v转为字符模式/输入[Ctrl]+v转为文本块模式
对选中对区域进行操作
d 删除选中的文本
c 修改选中的文本
r 替换选中的文本
I 在选中的文本前插入
A 在选中的文本后插入
gu 选中的区域转为小写
gU 选中的区域转为大写
g~ 大小写互换
> 向右锁进一个字符
< 向左锁进一个字符

命令行模式

命令行模式是在正常模式下对文档进行的整体配置和操作

相关指令
:w 保存写入文档
:w! 强制写入
:q 退出文档
:q! 退出文档不
:wq 保存退出文档,:wq!则为强制保存退出文档
zz 若文档没有更改则不保存并退出,若文档变更了,则存储后退出
I 在选中的文本前插入
:w [filename] 另存为一个filename命名的文档
:n1,n2[filename]/td> 将n1到n2行的内容存储到filename的这个文档
:!+command 在vi中查看执行commnad命令的结果,例如:!ls /home 可以在vi中查看/home下输入文档信息

在命令行模式中,还可以对vim的配置进行操作,例如:set nu,可以显示行号,在每一行前显示该行的行号。而为了方便和管理,我们通常在.vimrc文件中设置vim配置。

配置.vimrc文件

对。vimrc文件进行配置,可以方便我们操作,搭建成适合自己的编辑器。

基础配置

显示行号

1
set number

显示标尺

1
set ruler

历史纪录

1
set history=1000

显示命令行

1
set showcmd

显示状态行的内容

1
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}

启动显示状态行1,总是显示状态行2

1
set laststatus=2

语法高亮显示

1
syntax on
2
set fileencodings=utf-8,gb2312,gbk,cp936,latin-1
3
set fileencoding=utf-8
4
set termencoding=utf-8
5
set fileformat=unix
6
set encoding=utf-8

去掉有关vi一致性模式,避免以前版本的一些bug和局限,解决backspace不能使用的问题

1
set nocompatible
2
set backspace=indent,eol,start
3
set backspace=2

启用自动对齐功能,把上一行的对齐格式应用到下一行

1
set autoindent

去掉输入错误提示声音

1
set noeb

自动保存

1
set autowrite

突出显示当前行

1
set cursorline

突出显示当前列

1
set cursorcolumn

共享剪贴板

1
set clipboard+=unnamed

文件被改动时自动载入

1
set autoread

顶部底部保持3行距离

1
set scrolloff=3

高级配置

更换为自己习惯的快捷键方式,方便写入,存储,寻找,载入等操作

替换功能键

禁用s键,替换大写S键为保存

1
map s <nop>
2
map S :w<CR>

替换Q键为退出

1
map Q :q<CR>

用R键替换source当前vimrc文件

1
map R :source $MYVIMRC<CR>

用空格代替tab

1
set expandtab

插件安装

主要用了两个插件管理工具Vundlevim-plug

Vundle的安装

使用Vundle来管理插件

1
set nocompatible  " be iMproved, required 
2
filetype off  " required

启用vundle来管理vim插件

1
set rtp+=~/.vim/bundle/Vundle.vim 
2
call vundle#begin() 
3
"安装插件写在这之后
4
Plugin 'VundleVim/Vundle.vim'
5
Plugin 'scrooloose/nerdtree'
6
Plugin 'yggdroot/indentline'
7
"安装插件写在这之前 
8
call vundle#end() " required 
9
filetype plugin on " required

几个常用的命令

1
" :PluginList       - 查看已经安装的插件
2
" :PluginInstall    - 安装插件
3
" :PluginUpdate     - 更新插件
4
" :PluginSearch     - 搜索插件
5
" :PluginClean      - 删除插件,把安装插件对应行删除,然后执行这个命令即可
vim-plug的安装

vim-plug来管理安装插件

1
call plug#begin('~/.vim/plugged')
2
3
" 安装插件写在这之后
4
"
5
" If you have nodejs and yarn
6
7
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & yarn install'  }
8
9
" 安装插件写在这之前
10
" Initialize plugin system
11
call plug#end()

几个常用命令

1
:PlugInstall      - 安装插件
2
:PlugUpadte       - 更新插件
3
:PlugStatus       - 查看安装插件情况

主题配置

推荐几个好看的主题

dracula


个人比较喜欢的vim主题,确实有🧛‍♂️的魔力,在 dracula官网按照guide可以用vundle和vim-plug这两个之前介绍的插件进行安装。

darcula

将项目git clone到本地,将其中darcula/colors/darcula.vim拷贝到~/.vim/colors目录中,在.vimrc中设置

1
colorscheme darcula
Janah

和上面一样将项目git clone到本地,将其中vim-janah/colors/janah.vim拷贝到~/.vim/colors目录中,然后在.vimrc中添加

1
autocmd ColorSchmem janah highlight Normal ctermbg=235
2
colorscheme janah