Linux - VIM 全面教程

Linux - VIM 全面教程

前言

VIM 是一个强大的文本编辑器,被广泛用于 Linux 系统上。对于许多程序员和系统管理员来说,熟练掌握 VIM 是一项非常重要的技能。本教程将全面介绍 VIM 的基础知识和高级功能,帮助你更好地利用这一工具。

目录

  1. 安装 VIM
  2. VIM 基础操作
  3. VIM 常用命令
  4. VIM 高级功能
  5. 自定义 VIM 配置
  6. 使用 VIM 插件

1. 安装 VIM

在 Debian/Ubuntu 上安装

sudo apt update
sudo apt install vim

在 CentOS/Fedora 上安装

sudo yum install vim

验证安装

vim --version

2. VIM 基础操作

打开和关闭文件

vim filename  # 打开文件

:q 然后按回车键退出 VIM。

基本模式

  • 正常模式(Normal mode)
  • 插入模式(Insert mode)
  • 命令模式(Command mode)

切换模式

  • 正常模式到插入模式:按 i
  • 插入模式到正常模式:按 Esc

示例

iHello, World!  # 输入插入模式,并输入文本
<Esc>           # 退出插入模式
:wq             # 保存并退出

3. VIM 常用命令

移动光标

  • h:向左移动
  • j:向下移动
  • k:向上移动
  • l:向右移动

删除操作

  • x:删除当前字符
  • dd:删除当前行

示例

iHello, World!<Esc>  # 输入并退出插入模式
dd                   # 删除整行

撤销和重做

  • 撤销:按 u
  • 重做:按 Ctrl + r

查找和替换

:/pattern  # 查找模式
:s/old/new/g  # 替换当前行的所有 old 为 new
:%s/old/new/g  # 替换整个文件的所有 old 为 new

4. VIM 高级功能

多文件编辑

  • 打开多个文件:vim file1 file2
  • 切换文件::n:N

分屏编辑

  • 水平分屏::split filename
  • 垂直分屏::vsplit filename
  • 切换分屏:按 Ctrl + w 再按 w

示例

:split file1
:vsplit file2

5. 自定义 VIM 配置

编辑 .vimrc 文件

vim ~/.vimrc

常用配置

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

示例

vim ~/.vimrc

在文件中添加以上配置并保存。


6. 使用 VIM 插件

安装插件管理器(Vundle)

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

配置 .vimrc 文件以使用 Vundle

set nocompatible              " required
filetype off                  " required" Set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
" call vundle#begin('~/some/path/here')" Let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'" Add all your plugins here (note older versions of Vundle
" used Bundle instead of Plugin)Plugin 'tpope/vim-fugitive'
Plugin 'morhetz/gruvbox'" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

安装插件

在 VIM 中执行命令:

:PluginInstall

结语

通过以上教程,相信你已经掌握了 VIM 的基本使用方法和一些高级功能。希望你能在日常工作中充分利用 VIM 提高效率。如果你有任何问题或建议,欢迎在评论区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elasticsearch集群模式部署

系统版本&#xff1a;CentOS Linux release 7.9.2009 (Core) es版本&#xff1a; elasticsearch-7.6.2 本次搭建es集群为三个节点 添加启动用户 添加之前用户要是创建好了的(这里的es用户并不是绝对要求&#xff0c;你可以根据具体的需要命名创建) visudo 修改配置文件 sys…

【吊打面试官系列-MyBatis面试题】使用 MyBatis 的 mapper 接口调用时有哪些要求?

大家好&#xff0c;我是锋哥。今天分享关于 【使用 MyBatis 的 mapper 接口调用时有哪些要求&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 使用 MyBatis 的 mapper 接口调用时有哪些要求&#xff1f; 1、Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的…

数据结构(初阶1)

文章目录 一、复杂度概念 二、时间复杂度 2.1 大O的渐进表示法 2.2 时间复杂度计算示例 2.2.1. // 计算Func2的时间复杂度&#xff1f; 2.2.2.// 计算Func3的时间复杂度&#xff1f; 2.2.3.// 计算Func4的时间复杂度&#xff1f; 2.2.4.// 计算strchr的时间复杂度&#xff1f; …

Sharding-JDBC分库分表之SpringBoot分片策略

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 前言 前一篇以一个示例分享了Sharding-JDBC的基本使用。在进行分库分表时&#xff0c;可以设置分库分表的分片策略&#xff0c;在示例中&#xff0c;使用的是最简单的…

面对数据不一致性的解决方案:

polarDB是读写分离和计算存储分离的分布式数据库&#xff0c;并且副本的log replicate是基于Parallel-Raft协议来实现的。所以在瞬时进行写和读的操作时&#xff0c;是不可避免会存在数据一致性问题&#xff0c;导致这个数据一致性问题的原因不是事务&#xff0c;而是多副本日志…

springboot篮球馆管理系统-计算机毕业设计源码21945

目 录 摘要 1 绪论 1.1选题背景 1.2研究意义 1.3论文结构与章节安排 2 篮球馆管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 …

数据结构--二叉树收尾

1.二叉树销毁 运用递归方法 分类&#xff1a; 根节点左子树右子树&#xff08;一般都是这个思路&#xff0c;不断进行递归即可&#xff09; 选择方法&#xff08;分析)&#xff1a; 前序&#xff1a;如果直接销毁根就无法找到左子树右子树 中序&#xff1a;也会导致丢失其…

【算法】(C语言):快速排序(递归)、归并排序(递归)、希尔排序

快速排序&#xff08;递归&#xff09; 左指针指向第一个数据&#xff0c;右指针指向最后一个数据。取第一个数据作为中间值。右指针指向的数据 循环与中间值比对&#xff0c;若大于中间值&#xff0c;右指针往左移动一位&#xff0c;若小于中间值&#xff0c;右指针停住。右…

红酒的奇幻之旅:从葡萄园到酒杯的魔法

在世界的某个角落&#xff0c;隐藏着一场关于红酒的奇幻之旅。这是一场从葡萄园到酒杯的魔法变幻&#xff0c;将大自然的馈赠与人类的智慧很好结合&#xff0c;最终呈现在我们眼前的&#xff0c;是一杯散发着迷人香气的雷盛红酒。 一、葡萄园的魔法启幕 当清晨的第一缕阳光洒落…

windows server 2019 更新补丁

1 点击 搜索按键--windows 更新设置 2 点击 安装补丁 3 安装完成&#xff0c;重新启动服务器

四、Python日志系统之日志文件的备份和删除

import os import datetime import logging from watchdog.events import FileSystemEventHandler from watchdog.observers import Observer """实现代码中处理日志文件的备份和删除""" class UserLog:def __init__(self):self.logger logging…

简述 Kamailio 的多租户

如题&#xff0c;大家猜下我会怎么写 过几天公布答案 首先&#xff0c;是认证表 如果单租户, insert into subscriber(username, password) values (1000, 1234)&#xff0c;这样就行 多租户则不然, insert into subscriber(username, domain, password) values (1000, abc.…

WebGIS面试题

文章目录 1. 前端1.1. 选择器的优先级1.2. CSS 中它的布局有哪些&#xff1f;1.3. CSS3 的新特性1.4. CSS 的两种盒子模型1.5. CSS 的伪元素选择器和伪类选择器有哪些&#xff1f;1.6. ES6 的新特性1.7. 谈谈你对 promise 的理解1.8. 简单说一下原型链1.9. 简单说一下深浅拷贝1…

CPLD编程注意事项

1、CPLD体积小&#xff0c;如果仅仅是完成简单的触发等时序&#xff0c;完全可以采用CPLD这类器件。 2、CPLD资源相当少&#xff0c;一般逻辑资源如上图&#xff0c;才160&#xff0c;稍微不注意&#xff0c;就会超标&#xff0c;所以&#xff0c;寄存器输入一定要尽量减少&…

算法小练之 位运算基础

前言 今天正式走入&#xff0c;位运算这个章节&#xff0c;关于这一部分我会先介绍几个重要的知识点&#xff0c;然后再根据几个力扣上的题来讲解。 了解6种位操作 总所周知&#xff0c;变量在计算机中都是二进制存储的&#xff0c;比如一个变量int a 1&#xff1b; 它的存…

nvidia driver和cuda版本较低,ubuntu系统更新nvidia驱动的方法(对于小白最快最最保险的方法)

问题描述&#xff1a; 系统&#xff1a;ubuntu22.04LTS 这两天安装另一个低版本的pytorch环境&#xff0c;提示我的cuda版本很旧&#xff0c;然后运行程序时候甚至直接报错&#xff0c;如下所示&#xff1a; .local/lib/python3.10/site-packages/torch/cuda/__init__.py&quo…

高通开发系列 - 使用QFIL工具单刷某个镜像文件

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 背景过程记录背景 有时候设备中刷的是user版本,无法使用fastboot刷单个镜像,这个时候该怎么办呢? 要解决在user…

Linux 一键部署Mysql 8.4.1 LTS

mysql 前言 MySQL 是一个基于 SQL(Structured Query Language)的数据库系统,SQL 是一种用于访问和管理数据库的标准语言。MySQL 以其高性能、稳定性和易用性而闻名,它被广泛应用于各种场景,包括: Web 应用程序:许多动态网站和内容管理系统(如 WordPress)使用 MySQL 存…

Python从0到100(三十五):beautifulsoup的学习

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

【网络安全科普】网络安全指南请查收

随着社会信息化深入发展&#xff0c;互联网对人类文明进步奖发挥更大的促进作用。但与此同时&#xff0c;互联网领域的问题也日益凸显。网络犯罪、网络监听、网络攻击等是又发生&#xff0c;网络安全与每个人都息息相关&#xff0c;下面&#xff0c;一起来了解网络安全知识吧。…