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
  • :wqZZ:保存并退出
  • :q!:强制退出(不保存)
  • :e filename:打开文件
  • :set nu:显示行号
  • :set nonu:隐藏行号
搜索与替换
  • /pattern:向前搜索 pattern
  • ?pattern:向后搜索 pattern
  • n:跳到下一个匹配项
  • N:跳到上一个匹配项
  • :%s/old/new/g:替换整个文件中的 oldnew
  • :s/old/new/g:替换当前行中的 oldnew

高级功能

分割窗口
  • :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等
相关推荐
南棱笑笑生9 小时前
20251106给荣品RD-RK3588-MID开发板跑Rockchip的原厂Android13系统时禁止锁屏+永不休眠
linux·运维·服务器·rockchip
赖small强9 小时前
Linux 优先级反转问题详解与处理方案
linux·优先级反转·优先级继承·缩短临界区
wdfk_prog10 小时前
[Linux]学习笔记系列 -- [kernel][time]timekeeping
linux·笔记·学习
yuanManGan10 小时前
走进Linux的世界:冯诺依曼体系结构
linux
小白银子10 小时前
零基础从头教学Linux(Day 60)
linux·数据库·mysql·oracle
new_daimond10 小时前
Linux 服务器内存监控与优化指南
linux·服务器·chrome
一介草民丶10 小时前
Linux | Mongodb 6 离线安装
linux·运维·mongodb
赖small强10 小时前
Linux 线程相关结构对照表与关系图
linux·thread_info·task_struct·thread_struct
Justin_1910 小时前
部署zabbix
linux·centos·zabbix
STUPID MAN11 小时前
Linux使用tomcat发布vue打包的dist或html
linux·vue.js·tomcat·html