Vim全面教程
目录
Vim简介
Vim(Vi Improved)是一个高度可定制的文本编辑器,旨在提高编程效率。Vim是从Unix系统的Vi编辑器演变而来的,不仅保留了Vi的简洁和高效,还增加了许多增强功能。
Vim安装
在大多数Linux发行版上,可以通过包管理器安装Vim:
bash
# Ubuntu/Debian
sudo apt update
sudo apt install vim
# CentOS/RHEL
sudo yum install vim
# Fedora
sudo dnf install vim
# macOS
brew install vim
Vim的基本操作
启动和退出Vim
-
启动Vim:
bashvim filename
-
退出Vim:
-
保存并退出:
vim:wq
-
直接退出:
vim:q
-
强制退出(不保存):
vim:q!
-
Vim的模式
Vim有多种模式,每种模式用于不同的操作:
- 普通模式(Normal Mode): 默认模式,用于导航和操作文本。
- 插入模式(Insert Mode): 用于输入文本。
- 可视模式(Visual Mode): 用于选择文本。
- 命令行模式(Command Line Mode): 用于输入命令。
切换模式的常用快捷键:
- 普通模式 :按
Esc
- 插入模式 :按
i
,I
,a
,A
,o
,O
- 可视模式 :按
v
,V
,Ctrl-v
- 命令行模式 :按
:
,/
,?
Vim基本编辑
插入文本
在普通模式下,使用以下命令进入插入模式:
- i:在光标前插入
- I:在行首插入
- a:在光标后插入
- A:在行尾插入
- o:在光标下方新建一行并插入
- O:在光标上方新建一行并插入
删除文本
在普通模式下,使用以下命令删除文本:
- x:删除光标所在字符
- dd:删除整行
- dw:删除从光标到单词结尾
- d$:删除从光标到行尾
- d0:删除从光标到行首
复制、粘贴和剪切
在普通模式下,使用以下命令复制、粘贴和剪切文本:
- yy:复制当前行
- yw:复制从光标到单词结尾
- y$:复制从光标到行尾
- p:在光标后粘贴
- P:在光标前粘贴
- dd:剪切当前行
撤销和重做
- u:撤销操作
- Ctrl-r:重做操作
Vim高级编辑
搜索和替换
- /pattern:向前搜索模式
- ?pattern:向后搜索模式
- n:下一个匹配
- N:上一个匹配
- 😒/old/new:在当前行替换第一个匹配
- 😒/old/new/g:在当前行替换所有匹配
- :%s/old/new/g:在整个文件中替换所有匹配
- :%s/old/new/gc:在整个文件中替换所有匹配,并确认每次替换
窗口分割和标签页
- :split 或 :sp:水平分割窗口
- :vsplit 或 :vsp:垂直分割窗口
- Ctrl-w w:在分割窗口之间切换
- :tabnew filename:在新标签页中打开文件
- :tabn:下一个标签页
- :tabp:上一个标签页
宏和自动命令
-
录制宏:
- 按
q
进入录制模式。 - 按一个字母键(如
a
)指定宏的存储位置。 - 进行一系列操作。
- 按
q
结束录制。
- 按
-
播放宏:
- 按
@a
播放宏a
。
- 按
文本对象和可视模式
-
可视模式:
- 按
v
进入字符可视模式。 - 按
V
进入行可视模式。 - 按
Ctrl-v
进入块可视模式。
- 按
-
操作文本对象:
- ciw:更改单词
- diw:删除单词
- caw:更改一个单词及空白
- yaw:复制一个单词及空白
Vim配置
配置文件
Vim的配置文件位于~/.vimrc
。可以在该文件中添加自定义配置,如快捷键映射、配色方案等。
示例~/.vimrc
配置:
vim
syntax on
set number
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set background=dark
colorscheme desert
插件管理
使用插件管理器可以轻松管理Vim插件。常用的插件管理器有Vundle和Pathogen。
使用Vundle安装插件:
-
安装Vundle:
bashgit clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
-
配置
~/.vimrc
:vimset nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'scrooloose/nerdtree' call vundle#end() filetype plugin indent on
-
安装插件:
打开Vim,执行:PluginInstall
。
Vim常用插件
NERDTree
文件系统浏览器,可以在Vim中浏览和管理文件。
安装:
vim
Plugin 'preservim/nerdtree'
使用:
- 打开NERDTree:
:NERDTreeToggle
- 导航文件:使用上下箭头选择文件,按
Enter
打开。
CtrlP
文件模糊查找器,快速打开文件。
安装:
vim
Plugin 'ctrlpvim/ctrlp.vim'
使用:
- 启动CtrlP:按
Ctrl-p
。 - 输入文件名的一部分进行搜索。
Airline
状态栏插件,提供美观且信息丰富的状态栏。
安装:
vim
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
配置:
vim
let g:airline#extensions#tabline#enabled = 1
YouCompleteMe
代码补全引擎,支持多种编程语言。
安装:
bash
sudo apt install build-essential cmake python3-dev
cd ~/.vim/bundle/
git clone https://github.com/Valloric/YouCompleteMe.git
cd YouCompleteMe
git submodule update --init --recursive
python3 install.py --all
使用:
- 自动补全:在插入模式下输入代码,即可看到补全提示。
Vim技巧和快捷键
高效导航
- 跳转到行首和行尾 :按
0
跳转到行首,按$
跳转到行尾。 - 跳转到文件开头和结尾 :按
gg
跳转到文件开头,按G
跳转到文件结尾。 - 跳转到指定行 :按
:line_number
跳转到指定行,如:10
跳转到第10行。 - 跳转到匹配括号 :按
%
。
代码折叠
- 创建折叠 :选择文本后按
zf
。 - 打开折叠 :按
zo
。 - 关闭折叠 :按
zc
。 - 删除折叠 :按
zd
。
多光标编辑
Vim原生不支持多光标编辑,但可以通过插件实现,如vim-multiple-cursors。
安装:
vim
Plugin 'terryma/vim-multiple-cursors'
使用:
- 进入多光标模式:按
Ctrl-n
选择第一个匹配,按Ctrl-x
跳过当前匹配,按Ctrl-p
取消选择上一个匹配。 - 退出多光标模式:按
Esc
。
Vim资源
- 官方网站 : vim.org
- 官方文档 : Vim Documentation
- Vim教程 : Vim Tutor
- Vim插件 : Vim Awesome
总结
Vim是一款强大的文本编辑器,通过其灵活的配置和丰富的插件生态系统,可以极大地提高编辑效率。本教程涵盖了Vim的基本操作、高级编辑技巧、配置管理和常用插件,希望能帮助您全面掌握Vim的使用方法。通过不断练习和探索,您将发现Vim的无限可能性和强大之处。