来自 文正耕耘 的第 03 期知识分享 vim实战篇
作者 | 文正耕耘(ID:dywangk)


一入编程深似海,从此节操是路人。

前段时间由于业务场景需求,不得不近一步学习 vim 使用方法,提高工作效率,就总结了一些常用快捷键使用方法。满足一般需求,掌握基本增、删、改、查就可以了,近一步学习可以了解多屏操作和宏的使用以及自定义插件功能。
Linux发行版服务器基本上是已经配置好 vi 或者 vim,可以使用进行练习,也可以下载vim客户端(支持多个平台:Linux、macOS、Windows)软件进行练习,当然还使用git bash一样可以进行练习。目前主流IDE工具,基本上是支持安装vim插件,开启插件支持vim相关功能。例如:VSCode、IntelliJ IDEA(社区版与旗舰版均支持)。
展示一下Windows平台下的vim以及gvim:
vim:在字符界面进行使用,可以看到初次进入会显示版本信息、维护人以及一些帮助命令。

GVIM:其实是GUI VIM,带有图形操作界面,便于桌面客户端使用。

VSCode使用vim插件,简单介绍一下
ctrl + shift + p:快速调出命令行工具,键入vim找到 Toggle Vim Mode

shell或者其它terminal快速纠错
掌握常用快捷键提高日常工作效率,某些快捷键并不适用Windows terminal。
| 快捷键 | 作用 |
| ctrl + h | 删除上一个字符。 |
| ctrl + w | 删除上一个单词。 |
| ctrl + u | 删除一整行。 |
| ctrl + a | 跳到行首。 |
| ctrl + e | 跳到行末。 |
| ctrl + b | 前移。 |
| ctrl + f | 后移。 |
tips:Windows terminal使用ctrl + 左右方向键进行跳转,使用ctrl + Backspace快速删除。


vim入门实战

vim官网:https://www.vim.org/
开源仓库:https://github.com/vim/vim
插件查找:https://vimawesome.com/
使用VimAwesome检索自己需要的插件,基本上每个插件列出了源地址。通常个人习惯从github上克隆,比较方便。
唯有多练才能熟练,善用自带帮助文档,如下列举最基本帮助文档以及分屏操作获取方式。
注意:使用格式为英文输入法下的冒号加上help,使用命令亦是如此。
:help:help vs:help sp

唯有多练才能熟练。
插入(编辑)模式:a i o。插入模式姿势也很多啊,标准姿势 i ,高难度姿势 a、o。
a:节奏插,在当前字符光标前一个字符插入
i:慢插,当前光标位置插入。
o:快插,快速在前一行下方插入一行空白行
快速终止(进入插入模式),等价于ESC退出编辑模式进入normal模式
ctrl + [
ctrl + c
养成使用 hjkl 按键替代方向键进行上下左右移动,提高操作效率。
01
vim 快速移动
normal模式
快速移动:按住快捷键 h j k l
h:左移
j:下移
k:上移
l:右移
单词切换
w\W
b\B
e
搜索移动(行间)
f\F:按住f输入单词,使用逗号(,),分号(;)切换单词。
t:转到输入字符前一个字符上。
水平移动
0:移动到行首第一个字符
^:移动到第一个非空白字符
$:移动到行尾,g_ 移动到非空白行尾
页面快速移动
ctrl + u:上翻页,等同于shift + 方向键上键。
ctrl + f:下翻页,等同于shift + 方向键下键。
gg :快速回到页面顶部。
更多用法,可以参考帮助文档:
:help g
02
vim 增删改查
vi:选择多个字符,等同于shift + v:选择当前行,使用G选择余下行。
normal模式下使用
删除
x:快速删除一个字符
d(delete):配合文本对象快速删除一个单词:dw;
快速删除一行:dd
d和x:配合数字执行多次
新增
插入数据(a i o)
修改
r\R(replace):以...替代,替代当前字符,R:替代后续字符c(change)。
cc:删除当前行,cw(ciw、caw):删除当前单词并修改。
s\S(substitute):替代,删除当前字符并进行插入,可以在normal模式替代插入模式;S:删除整行。
恢复
u:恢复到之前的状态,删掉插入内容。
搜索替换
s\S(substitute),可以配合正则表达式替换
替换位标志:g(global),c(confirm),n(number)
:% s/word/w/g:全局替换
:% s/\
/w/g:精确匹配单词后替换
03
vim 多屏操作

normal模式,多文件操作,准备多个文件用于测试。
预先准备多个测试文件,使用vim或者touch命令都行
vim test_a.txt
this is test_a file# test a
复制多个文件用于测试:
cp test_a.txt test_b.txt;cp test_a.txt test_c.txt

开始测试,依次输入如下命令:
:e test_a.txt,:e test_b.txt,:e test_c.txt
:ls
:bprevious

使用 :e 进入编辑模式,不退出当前会话同时编辑多个文件,:ls 查看当前会话缓存文件,:bprevious 查看之前编辑过的文件。
多屏操作
:vs:水平分割
:sp:垂直分割
ctrl + w :移动窗口,配合大写L和hjkl操作
水平分割效果展示:

垂直分割效果展示:

更多用法,参考帮助文档:
:help vs:help sp
多个标签页
:tabnew :打开新的标签页
:tabnext:切换标签页

还可以使用快捷键 gt 快速切换标签页,同样可以使用简化写法 :tabn 切换标签页。
更多用法,参考帮助文档:
:help tabnew:help tabnext
复制粘贴
normal下使用y(yank)复制,p(put)粘贴;
yy:复制一行;
yiw:复制一个单词;
x删除,p粘贴。
示例:如果复制一大段内容,可以结合快捷键 shift + v 配合 y 复制,使用 p 粘贴内容。

打开了多个分屏或者标签页,如何一次性关闭?使用 :qa 命令关闭全部,返回当前终端。
04
vim 进阶
normal模式
vim宏
按住 q 键录制内容,配合使用命令qa
快速选择余下所有行:shift + v G
进入普通模式输入::normal @a
常用补全
ctrl + n 和 ctrl + p 补全单词
ctrl + x 和 ctrl + f 补全文件名
ctrl + x 和 ctrl + o 补全代码
补全如果没生效,需要配置相应的插件。
使用vim相关插件,修改配色方案
以Java类为示例进行说明,编辑Java代码Hello world
vim Hello.java
class Hello{public static void main(String args[]){System.out.println("Hello cangls");}}

克隆hybrid配色方案
git clone https://github.com/w0ng/vim-hybrid.git
创建文键目录
mkdir -p .vim/colors
复制 hybrid.vim 到 .vim/colors 目录中
cp vim-hybrid/colors/hybrid.vim .vim/colors
编辑配色方案:vim Hello.java
:colorscheme hybrid

修改配色方案永久生效,设置 background=dark 为暗色系,默认为light浅色系,默认设置显示行号set number
vim .vimrc
set background=darkcolorscheme hybridset number
恢复默认配色
:colorscheme default
05
vim 插件
初次使用,插件不在多,在于对你的操作有所提升。可以一步步尝试安装插件,对比哪些对你的日常工作有帮助。
vim-plug:用于管理插件。
NERDTree:用于增强目录树插件。
TarBag:用于显示标签插件(需要ctags支撑,Windows平台将ctags.exe文件置于vim根目录同级即可使用)
例如:个人解压后vim路径:D:\gvim_9.0.1075_x64\vim90\,将ctags.exe放入vim90目录即可。
如果当前用户根目录没有.vimrc 文件,则新增。
Windows平台需要在当前用户新增 .vimrc 文件:
vim ~\.vimrc
Linux平台一样需要新增 .vimrc
vim ~/.vimrc
加入如下内容即可安装插件:
set numbercall plug#begin()Plug 'preservim/nerdtree'Plug 'preservim/tagbar'call plug#end()
插件安装命令:
:PlugInstall
安装插件效果展示,最左侧是nerdtree效果,最右侧是tagbar效果。

vim与Tmux
可以在Linux服务器上安装tmux配合vim使用,效果更加。
Linux发行版(centos9-stream)安装tmux
[root@Centos9-Stream ~]# yum list | grep tmuxtmux.x86_64 3.2a-4.el9 baseos[root@Centos9-Stream ~]# yum -y install tmux[root@Centos9-Stream ~]# rpm -qa | grep tmuxtmux-3.2a-4.el9.x86_64
安装后初步使用:
[root@Centos9-Stream ~]# tmux ls0: 1 windows (created Sun Feb 26 15:42:19 2023) (attached)
默认显示1 windows。
默认进入tmux,使用tab键可以提示相关命令,使用exit退出tmux。

具体用法不做展示,可以自行摸索。
IDE与vim
VSCode(Visual Studio Code)
STS4(Spring Tool Suite4)
IDEA(IntelliJ IDEA)
文初演示了VSCode使用vim插件,此处展示一下STS4使用vim插件:
01、STS4启动界面

02、顶部菜单栏找到help,打开Eclipse Marketplace

03、搜索vim并安装

04、重启开发工具STS4,初始化界面效果

默认和使用 vim 同样处于 normal 模式 ,使用 i 即可进行编辑。
vim与neovim
与时俱进,竞争产出新特性。
neovim仓库地址:https://github.com/neovim/neovim
站在巨人的肩膀上,打造炫酷的vim
SpaceVim:https://github.com/SpaceVim/SpaceVim
个人收藏一些vim相关插件仓库地址:https://github.com/stars/cnwangk/lists/vim
vimawesome
寻找vim插件:https://vimawesome.com/
会的越多,才发现原来不会的更多,知识宝库是慢慢积累起来的。
最后,又到了无耻环节,他喵的点个关注呗。以上内容仅供参考哟!
--END--




