Vim全面教程

Vim全面教程

目录

  1. Vim简介
  2. Vim安装
  3. Vim的基本操作
  4. Vim基本编辑
  5. Vim高级编辑
  6. Vim配置
  7. Vim常用插件
  8. Vim技巧和快捷键
  9. Vim资源
  10. 总结

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:

    bash 复制代码
    vim filename
  • 退出Vim:

    • 保存并退出:

      vim 复制代码
      :wq
    • 直接退出:

      vim 复制代码
      :q
    • 强制退出(不保存):

      vim 复制代码
      :q!

Vim的模式

Vim有多种模式,每种模式用于不同的操作:

  1. 普通模式(Normal Mode): 默认模式,用于导航和操作文本。
  2. 插入模式(Insert Mode): 用于输入文本。
  3. 可视模式(Visual Mode): 用于选择文本。
  4. 命令行模式(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:上一个标签页

宏和自动命令

  • 录制宏

    1. q 进入录制模式。
    2. 按一个字母键(如 a)指定宏的存储位置。
    3. 进行一系列操作。
    4. 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插件。常用的插件管理器有VundlePathogen

使用Vundle安装插件

  1. 安装Vundle:

    bash 复制代码
    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  2. 配置~/.vimrc

    vim 复制代码
    set 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
  3. 安装插件:
    打开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是一款强大的文本编辑器,通过其灵活的配置和丰富的插件生态系统,可以极大地提高编辑效率。本教程涵盖了Vim的基本操作、高级编辑技巧、配置管理和常用插件,希望能帮助您全面掌握Vim的使用方法。通过不断练习和探索,您将发现Vim的无限可能性和强大之处。

相关推荐
我要成为C++领域大神2 分钟前
【高性能服务器】select模型
linux·服务器·c语言·开发语言·网络·tcp·io多路复用
bitcsljl21 分钟前
Linux系统中卸载GitLab
linux·运维·gitlab
oDrake44 分钟前
Openstack制作Rhel9,使用IOS镜像制作
linux·openstack·虚拟化·rhel-9.3
辣香牛肉面1 小时前
Linux下“/proc”目录的作用
java·linux·服务器
千殃sama1 小时前
Linux高并发服务器开发(十一)UDP通信和本地socket通信
linux·服务器·网络·笔记·学习·udp
Danileaf_Guo1 小时前
CentOS 7停服之后该怎么安装软件呢?
linux·运维·服务器·centos
小宏运维有点菜1 小时前
Prometheus
linux·运维·prometheus·监控
张文君2 小时前
树莓派根目录满了可以使用外部存储吗
linux·ubuntu
m0_747124532 小时前
将QT移植到IMX6ULL开发板
linux·单片机·qt·imx6ull
起个别名2 小时前
必须掌握的Linux的九大命令
linux·服务器·网络