VIM简要介绍

安装

大多数 Linux 发行版和 macOS 都预装了 VIM。如果没有,你可以通过包管理器安装:

  • Ubuntu/Debian : sudo apt-get install vim
  • Fedora : sudo dnf install vim
  • macOS : brew install vim(使用 Homebrew)
  • Windows : 可以从 VIM 官网下载安装包,或者使用包管理工具如 Chocolatey (choco install vim)

启动VIM

在终端中输入 vim,然后回车。你也可以指定要编辑的文件,例如:vim filename.

基本模式

VIM 有多个工作模式,常用的有以下几种:

  1. 普通模式 (Normal Mode): 默认模式,用于导航和文本操作。
  2. 插入模式 (Insert Mode) : 按 i 进入,进行文本插入。
  3. 可视模式 (Visual Mode) : 用于选择文本。按 v 进入字符选择,V 进入行选择,Ctrl+v 进入块选择。
  4. 命令模式 (Command Mode) : 按 : 进入,用于执行底线命令。

基本命令

普通模式导航
  • h:左移光标
  • j:下移光标
  • k:上移光标
  • l:右移光标
  • gg:跳到文件首行
  • G:跳到文件尾行
  • w:跳到下一个单词的开头
  • b:跳到前一个单词的开头
  • 0:跳到行首
  • $:跳到行尾
插入文本
  • i:在光标前插入
  • a:在光标后插入
  • o:在当前行下插入新行
  • O:在当前行上插入新行
编辑操作
  • x:删除光标所在字符
  • dd:删除整行
  • yy:复制当前行
  • p:粘贴
  • u:撤销
  • Ctrl+r:重做
文件操作
  • :w:保存文件
  • :q:退出 VIM
  • :wq 或 ZZ:保存并退出
  • :q!:强制退出(不保存)
  • :e filename:打开文件
  • :set nu:显示行号
  • :set nonu:隐藏行号
搜索与替换
  • /pattern:向前搜索 pattern
  • ?pattern:向后搜索 pattern
  • n:跳到下一个匹配项
  • N:跳到上一个匹配项
  • :%s/old/new/g:替换整个文件中的 old 为 new
  • :s/old/new/g:替换当前行中的 old 为 new

高级功能

分割窗口
  • :split 或 :sp:水平分割窗口
  • :vsplit 或 :vsp:垂直分割窗口
  • Ctrl+w w:切换窗口
  • Ctrl+^:在两个最近的文件之间切换
标签页
  • :tabnew:新建标签页
  • :tabnext 或 :tabn:下一个标签页
  • :tabprevious 或 :tabp:上一个标签页
  • :tabclose:关闭当前标签页
配置

VIM 的配置文件通常位于 ~/.vimrc,你可以在这个文件中添加自定义设置,例如:

vim 复制代码
set number        " 显示行号
syntax on         " 启用语法高亮
set tabstop=4     " 设置 Tab 宽度为 4
set expandtab     " 将 Tab 转换为空格
set shiftwidth=4  " 设置自动缩进的宽度

插件管理

VIM 有丰富的插件生态,你可以使用插件管理器如 Vundle、Pathogen 或 vim-plug 来安装和管理插件。例如,使用 vim-plug:

  1. 安装 vim-plug:

    sh 复制代码
    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  2. 配置插件:

    在 ~/.vimrc 中添加:

    vim 复制代码
    call plug#begin('~/.vim/plugged')
    Plug 'preservim/nerdtree'
    call plug#end()
  3. 安装插件:

    打开 VIM,输入 :PlugInstall。

学习资源

  • VIM 自带教程:在终端中输入 vimtutor
  • 官方文档::help
  • 在线资源和社区:VIM 官网、VIM Wiki、Stack Overflow等
相关推荐
2035去旅行6 小时前
ADB的底层原理
linux·adb·嵌入式·arm·soc
武子康6 小时前
单卡 A6000 跑 Qwen-Drive:怎样留下可比较的第一条基线?
linux·人工智能·深度学习
女神下凡7 小时前
芯参谋(107):杰理AC_中科蓝讯_开发指南
linux·服务器·网络·单片机·嵌入式硬件
落羽的落羽7 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
猫不易11 小时前
Neovim 配置与使用:LazyVim 精简版 个人备忘
vim
爱和冰阔落11 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
say_fall13 小时前
【Linux网络编程】UDP套接字编程:系统编程组件、基础回显服务、InetAddr与地址转换、翻译服务与线程池聊天室
linux·服务器·网络·udp·vr
ö Constancy13 小时前
一台电脑的硬件组成与作用:按功能分类详解(Windows 与 Linux 视角)
linux·windows·电脑
江湖有缘14 小时前
基于Ubuntu部署SoduWork:企业级 AI 原生协同平台实战全流程
linux·人工智能·ubuntu·ai·soduwork
无奈笑天下1 天前
银河麒麟上nproc命令教程详解
linux·运维·服务器