当前位置: 首页 > news >正文

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,你可以在这个文件中添加自定义设置,例如:

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:

    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    
  2. 配置插件:
    ~/.vimrc 中添加:

    call plug#begin('~/.vim/plugged')
    Plug 'preservim/nerdtree'
    call plug#end()
    
  3. 安装插件:
    打开 VIM,输入 :PlugInstall

学习资源

  • VIM 自带教程:在终端中输入 vimtutor
  • 官方文档::help
  • 在线资源和社区:VIM 官网、VIM Wiki、Stack Overflow等
http://www.lryc.cn/news/447284.html

相关文章:

  • .NET 6.0 使用log4net配置日志记录方法
  • Unity角色控制及Animator动画切换如走跑跳攻击
  • JSP+Servlet+Mybatis实现列表显示和批量删除等功能
  • Cannot read properties of undefined (reading ‘upgrade‘)
  • javaJUC基础
  • std::distance 函数介绍
  • 如何在Windows和Linux之间实现粘贴复制
  • 【第十七章:Sentosa_DSML社区版-机器学习之异常检测】
  • 【Vue】为什么 Vue 不使用 React 的分片更新?
  • 大学生科技竞赛系统小程序的设计
  • 什么是聚集索引?
  • Centos/fedora/openEuler 终端中文显示配置
  • 使用kaggle命令下载数据集和模型
  • 生信初学者教程(十一):数据校正
  • JS设计模式之桥接模式:搭建跨越维度的通路
  • 苹果电脑系统重磅更新——macOS Sequoia 15 系统 新功能一 览
  • DoppelGanger++:面向数据库重放的快速依赖关系图生成
  • Linux(含麒麟操作系统)如何实现多显示器屏幕采集录制
  • calibre-web默认左上角字体修改
  • 考研数据结构——C语言实现归并排序
  • LDO功率管选取NMOS和PMOS区别
  • 【Linux】进程的标识符、状态(超详解)
  • Elasticsearch 启动后在浏览器输入http://localhost:9200 访问失败
  • javascript中new操作符的工作原理
  • 基于springboot+vue 旅游网站的设计与实现
  • Ansible集群服务部署案例
  • 探索AI编程新境界:aider库揭秘
  • SQL Server 2012 ldf日志文接太大的截断和收缩日志处理
  • java日志门面之JCL和SLF4J
  • Oracle DB运维常用的视图及数据字典