欢迎来到_Zwy@的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡
本文由_Zwy@原创✍️,感谢支持❤️!请尊重原创📩!欢迎评论区留言交流🌟
个人主页 👉 _Zwy@
本文专栏➡️Linux驾驭之道 掌控操作系统的艺术与哲学
辛勤创作的我们🥰
Linux
中大部分情况下,我们所使用的工具都是独立的工具 —— 比如我们写代码用
Vim
、编译用
gcc/g++
、调试用
gdb
、维护项目关系用
make/Makefile
等。在Linux环境中,vim可谓是程序员们的老朋友了。
Vim
以其独特模式系统独树一帜。与普通编辑器不同,它的
普通模式用于快速浏览与定位,插入模式助力文字输入,可视模式实现区域操作,命令行模式管控文件与高级功能
。各模式协同,大幅提升编辑效率与精准度。下面,就让我们深入探究
Vim
这款最强大的编辑器。
Vim
是一种强大且高度可定制的文本编辑器,广泛用于软件开发、系统管理和各种文本处理任务。它基于更早期的编辑器 Vi,并对其进行了扩展,因此也被称为 “Vi Improved
”(Vi 的增强版)。Vim 的特点是快捷键驱动、支持多模式编辑以及可扩展性强。
在 Linux 系统:
大多数 Linux 发行版默认预装 Vim。如果未安装,可以通过包管理器
安装:
Debian/Ubuntu:
sudoapt update
sudoaptinstallvim
CentOS/RHEL:
sudo yum installvim
Arch Linux:
sudo pacman -Svim
在 macOS
macOS 通常自带 Vim,但版本可能较旧。建议使用 Homebrew 安装最新版:
brew installvim
在 Windows
到 Vim 的官方页面下载:vim官网
或使用包管理工具(如 scoop或 Chocolatey)安装:
scoop installvim
choco installvim
在 WSL(Windows Subsystem for Linux)
如果你在 Windows 上使用 WSL,安装方式与 Linux 相同:
sudoapt update
sudoaptinstallvim
Vim 的配置文件是 .vimrc(Linux/macOS)
或 _vimrc(Windows)
,用于定义 Vim 的行为、快捷键、主题等。
配置文件的位置:
创建或编辑配置文件:
如果配置文件不存在,可以创建一个:
vim ~/.vimrc
以下是一个基础的 .vimrc 配置文件,涵盖常用功能,如行号显示、语法高亮、缩进设置等。
" 基本设置
set number " 显示行号
set relativenumber " 显示相对行号
set cursorline " 高亮当前行
set showcmd " 显示命令
set wildmenu " 命令补全菜单
setmouse=a " 启用鼠标支持
" 文件编码
setencoding=utf-8 " 使用 UTF-8 编码
set fileencodings=utf-8,gbk,gb2312 " 自动检测文件编码
" 缩进设置
set tabstop=4 " 设置 Tab 长度为 4setshiftwidth=4" 自动缩进使用 4 个空格
set expandtab " 将 Tab 转为空格
set autoindent " 自动对齐
" 搜索设置
set hlsearch " 高亮搜索结果
set ignorecase " 搜索时忽略大小写
set smartcase " 智能大小写
" 语法高亮
syntax on " 开启语法高亮
" 高级显示
set wrap " 自动换行
set linebreak " 只在单词边界换行
" 配色方案
colorscheme desert " 设置主题(可换其他主题)
" 状态栏增强
set laststatus=2 " 显示状态栏
" 备份与历史
set backup " 启用备份
setbackupdir=~/.vim/backup// " 备份文件保存位置
set undofile " 开启撤销历史
setundodir=~/.vim/undo// " 撤销历史保存位置
" 快捷键映射
nnoremap <C-s> :w<CR> " Ctrl+S 保存文件
inoremap <C-s><Esc>:w<CR>a
插件管理器:
为了方便安装和管理插件,推荐使用插件管理工具。
安装 vim-plug
:Linux/macOS:
curl-fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Windows:
iwr-useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim | `
ni$HOME/vimfiles\autoload\plug.vim -Force
编辑 .vimrc,添加以下内容
: call plug#begin('~/.vim/plugged')" 在这里添加插件
Plug 'preservim/nerdtree' " 文件管理器
Plug 'itchyny/lightline.vim'" 状态栏
Plug 'jiangmiao/auto-pairs' " 自动补全括号
Plug 'sheerun/vim-polyglot'" 多语言语法高亮支持
Plug 'tpope/vim-commentary' " 快速注释工具
call plug#end()
在 Vim 中安装插件:
:PlugInstall
5.1 文件树插件(NERDTree)
用于管理和浏览文件。
安装:在 .vimrc
添加
Plug 'preservim/nerdtree'
打开 NERDTree:
:NERDTreeToggle
5.2 状态栏插件(Lightline)
美化状态栏。
安装:在 .vimrc
添加:
Plug 'itchyny/lightline.vim'
5.3 自动补全(YouCompleteMe 或 Coc.nvim)
Coc.nvim 是一款轻量级 LSP 客户端,支持现代代码补全。
安装 Coc.nvim
:
Plug 'neoclide/coc.nvim', {'branch':'release'}
5.4 快速注释(vim-commentary)
安装:在 .vimrc
添加:
Plug 'tpope/vim-commentary'
使用:
gcc:快速注释或取消注释当前行。
gc{motion}:注释指定文本范围。
以上配置可以帮助你快速入门 Vim,同时兼具一些现代功能。如果需要更深入的个性化定制,可以探索 Vim 社区的教程和插件。
多模式编辑:
高效的快捷键操作:
可定制性:
跨平台:
轻量且快速:
这是 Vim 启动后的默认模式。在这个模式下,主要用于浏览文件内容和执行各种编辑命令,如移动光标、删除、复制、粘贴等操作,是 Vim 操作的基础模式。
基本移动光标:
h:光标向左移动一个字符
j:光标向下移动一行
k:光标向上移动一行
l:光标向右移动一个字符。与h相对应。
gg:跳到文件开头。
G:跳到文件末尾。
以单词为单位移动光标:
w:光标移动到下一个单词的开头。例如,如果光标在一个单词中间,按w会跳到下一个单词的首字符。
b:光标移动到当前单词或前一个单词的开头。如果光标已经在单词开头,会跳到前一个单词开头
。e:光标移动到当前单词的结尾。
行内快速跳转:
0(数字零):光标移动到当前行的行首。
^:光标移动到当前行的第一个非空白字符处。
$:光标移动到当前行的行尾。
翻页操作:
Ctrl + f:向下翻一页(Page Down)。用于快速浏览文档后面的内容。
Ctrl + b:向上翻一页(Page Up)。用于查看文档前面的内容。
删除操作:
x:删除光标所在位置的字符。
dw:删除从光标位置开始到下一个单词开头的内容。
dd:删除当前行。
复制和粘贴操作:
yy:复制当前行。可以通过p将复制的内容粘贴到光标所在位置的下一行。
p:将复制或删除的内容粘贴到光标所在位置的下一行
。P:将复制或删除的内容粘贴到光标所在位置的上一行。
撤销和重做操作:
u:撤销上一步操作。例如,撤销刚刚的删除或修改。
Ctrl + r:重做被撤销的操作。
跳转操作:
/pattern:向下搜索 pattern。
?pattern:向上搜索 pattern。
n:重复上一次搜索(同方向)
。N:重复上一次搜索(反方向)
。用于插入文本内容。当需要向文件中添加新的字符、单词或段落时,就会进入插入模式。通过不同的快捷键(如i、a、o等)可以在光标不同位置插入内容。比如,在编写文档时,大部分时间都处于插入模式来输入文字。
进入插入模式的方法:
i:在光标当前位置插入文本。例如,当光标在某个字符之前,按i后就可以在该字符之前开始输入新的内容。
a:在光标当前位置的下一个字符插入文本。
o:在当前行的下一行插入新的一行并进入插入模式。
I:在当前行的行首插入文本。
A:在当前行的行尾插入文本。
O:在当前行的上一行插入新的一行并进入插入模式。
退出插入模式返回普通模式:
Esc键:按下Esc键可以从插入模式回到普通模式。
可以对文本进行可视化的选择操作。包括字符可视模式(v)、行可视模式(V)和块可视模式(Ctrl + v)。在这个模式下,能够选择文本区域,然后进行复制、删除、缩进等操作。例如,在对一段代码进行注释或者取消注释时,可以使用块可视模式来选择需要操作的列。
进入可视模式:
v:进入字符可视模式。可以通过移动光标来选择字符,被选中的字符会高亮显示。
V:进入行可视模式。用于选择整行,移动光标时会以行为单位选择
。Ctrl + v:进入块可视模式。可以用于对文本的列进行操作,例如对代码的缩进部分进行批量操作。
可视模式下的操作:
y:复制选中的内容。在不同的可视模式下,会复制相应选中的字符、行或块。
d:删除选中的内容。
> 或<:将选中的内容进行缩进(>)或反缩进(<)操作,在块可视模式下可以很方便地对代码块进行缩进调整
。= :自动格式化选中的代码
主要用于执行一些全局的命令,如保存文件(:w)、退出 Vim(:q)、查找替换(:s/old/new/g)等操作。通过在普通模式下按:进入该模式。在对文件进行管理和复杂操作时经常会用到这个模式,比如设置 Vim 的各种选项(如set命令)。
进入命令行模式:
::在普通模式下按:进入命令行模式,用于执行各种命令。
常见命令:
文件操作:
:w 保存文件。例如,在编辑一个文件后,使用:w将修改保存到磁盘。
:q 退出 Vim。如果文件没有保存,会提示是否保存。
:wq 保存文件并退出。这是一个很常用的组合命令。
:q! 强制退出(不保存)
:e filename 打开文件
:r filename 读取文件内容并插入当前文件
搜索和替换:
:/关键词 在文件中向前搜索指定的关键词。当按下回车键后,光标会跳转到第一个匹配的关键词处。
:?关键词 在文件中向后搜索指定的关键词。
:s/old/new 替换当前行的第一个匹配
:s/old/new/g 替换当前行的所有匹配
:%s/old/new/g 替换整个文件的所有匹配
:%s/old/new/gc 替换时逐一确认
行号设置:
:set number 显示行号。可以方便地查看文件的行数和定位行。
:set nonumber 取消行号显示。
其他命令:
help:查看帮助。
:!command:执行外部命令(如 :!ls 显示文件列表)。
用于直接替换文本内容,按 R 进入。
R:进入替换模式。
在替换模式下,输入的字符会覆盖已有文本,直到按 Esc 退出。
通过命令模式运行外部 shell 命令。
:!command:执行外部命令。
例如::!ls 显示当前目录内容。
:sh:进入 shell(终端),退出时输入 exit 返回 Vim。
高级模式,用于执行复杂的批处理命令。按 Q 进入。
一般用户较少直接使用 Ex 模式,因为常用功能可在命令模式中完成。
类似于可视模式,但按字符选择。很少单独使用。
以下表格展示了 Vim 各模式之间的切换方法:
当前模式 | 目标模式 | 转换方式 |
---|---|---|
正常模式 | 插入模式 | 按 i (光标前插入)、a (光标后插入)、o (新行) |
正常模式 | 可视模式 | 按 v (字符选择)、V (行选择)、Ctrl+v (块选择) |
正常模式 | 替换模式 | 按 R |
正常模式 | 命令模式 | 按 : |
正常模式 | Ex 模式 | 按 Q |
正常模式 | 外部命令模式 | 按 :!command |
插入模式 | 正常模式 | 按 Esc |
插入模式 | 命令模式 | 按 Esc 后再按 : |
可视模式 | 正常模式 | 按 Esc 或 Ctrl+[ |
替换模式 | 正常模式 | 按 Esc |
命令模式 | 正常模式 | 按 Esc 或直接执行完命令 |
Ex 模式 | 正常模式 | 输入 visual 或按 Ctrl+c |
表格:Vim 模式切换关系
以下是各模式及其特点和切换命令的完整表格:
模式名称 | 特点 | 进入方式 | 退出方式 |
---|---|---|---|
正常模式 | 默认模式,用于导航和文本操作 | Vim 启动时直接进入 | 按 i/a/o 进入插入模式 |
插入模式 | 插入文本 | 按 i , a , o 等 | 按 Esc |
可视模式 | 选择文本块,执行操作如删除、复制等 | 按 v , V , 或 Ctrl+v | 按 Esc |
命令模式 | 用于执行保存、退出、搜索替换等命令 | 按 : | 按 Esc 或执行命令后返回 |
替换模式 | 替换文本内容 | 按 R | 按 Esc |
外部命令模式 | 运行外部命令 | 按 :!command | 命令执行完后返回正常模式 |
选择模式 | 选择文本(类似可视模式,但按字符) | 暂无直接进入方式(自动触发) | 按 Esc |
Ex 模式 | 用于复杂命令批处理,较少使用 | 按 Q | 输入 visual 或 Ctrl+c |
扩展阅读:
VIm英文文档
Vim中文文档
本文参考文档:
Vim中文文档
简明 VIM 练级攻略
第 4 章 Vim 编辑器与 Shell 命令脚本
无论是初学者还是专业开发者,Vim 都值得花时间学习和精通,因为它不仅是一个工具,更是一种高效的工作哲学。
如果你觉得这篇关于 Vim 的总结对你有所帮助,请为我的博客 点赞👍收藏⭐️ 评论💬或 分享🔗 支持一下!你的每一个支持都是我继续创作的动力✨!🙏
如果你有任何问题或想法,也欢迎 留言💬 交流,一起进步📚!❤️ 感谢你的阅读和支持🌟!🎉
祝各位大佬吃得饱🍖,睡得好🛌,日有所得📈,逐梦扬帆⛵!
提示:请勿发布广告垃圾评论,否则封号处理!!