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

Linux Vim教程

Linux Vim 教程

Vim(Vi IMproved)是一个强大的文本编辑器,广泛用于编程和系统管理。本文将带你全面了解 Vim 的基础使用、常用命令、高级功能等。

1. 安装 Vim

在大多数 Linux 发行版中,Vim 已经预装。如果没有,可以通过以下命令安装:

  • Debian/Ubuntu:

    sudo apt update
    sudo apt install vim
    
  • CentOS/RHEL:

    sudo yum install vim
    
  • Fedora:

    sudo dnf install vim
    
  • Arch Linux:

    sudo pacman -S vim
    

2. 启动 Vim

在终端中输入以下命令启动 Vim:

vim 文件名

如果文件不存在,Vim 会创建一个新文件。

3. Vim 界面基本介绍

Vim 有几个不同的模式:

3.1 规范模式

Vim 启动后默认进入规范模式,这是编辑文本的主要模式。

3.2 插入模式

在规范模式下,按 i 进入插入模式,你可以输入文本。按 Esc 返回到规范模式。

3.3 命令模式

在规范模式下,按 : 进入命令模式,输入命令并按 Enter 执行。

4. Vim 基本命令

4.1 移动光标

命令说明
h左移
j下移
k上移
l右移
w跳到下一个单词开头
b跳到上一个单词开头
0行首
$行尾
G跳到文件末尾
gg跳到文件开头

4.2 编辑文本

  • 插入文本

    • i - 在光标前插入
    • I - 在行首插入
    • a - 在光标后插入
    • A - 在行尾插入
  • 删除文本

    • x - 删除光标下的字符
    • dd - 删除整行
    • d + 移动命令(如 dw)- 删除字符到单词前
  • 复制和粘贴

    • yy - 复制当前行
    • y + 移动命令(如 yw)- 复制字符到单词前
    • p - 在光标后粘贴
    • P - 在光标前粘贴

4.3 保存与退出

  • :w - 保存文件
  • :q - 退出 Vim
  • :wq - 保存并退出
  • :q! - 强制退出不保存

5. 查找与替换

5.1 查找

  • /关键字 - 向下查找
  • ?关键字 - 向上查找
  • n - 查找下一个
  • N - 查找上一个

5.2 替换

  • :s/旧词/新词/ - 替换当前行的第一个旧词
  • :s/旧词/新词/g - 替换当前行的所有旧词
  • :%s/旧词/新词/g - 替换全文件的所有旧词

6. 多文件编辑与窗口分割

6.1 打开多个文件

vim 文件1 文件2

使用 :n 切换到下一个文件,:prev 切换到上一个文件。

6.2 窗口分割

  • :split:sp - 垂直分割窗口
  • :vsplit:vsp - 水平分割窗口
  • Ctrl + w + 方向键 - 在窗口间切换

7. 高级功能

7.1 宏

录制一组命令并重放:

  • q[字母] - 开始录制宏
  • 输入命令
  • q - 结束录制
  • @[字母] - 播放宏

7.2 书签

添加和跳转书签:

  • m[a-z] - 设置书签
  • \'[a-z] - 跳转到书签

7.3 配置 Vim

编辑 Vim 配置文件:~/.vimrc

常见配置示例:

set number          " 显示行号
set autoindent      " 自动缩进
set expandtab       " 使用空格替代 Tab
set shiftwidth=4    " 每次缩进 4 个空格
syntax on           " 启用语法高亮

8. 常用插件管理

使用 Vundle 或 Pathogen 插件管理器来扩展 Vim 功能。以 Vundle 为例:

  1. 克隆 Vundle:

    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    
  2. ~/.vimrc 中添加插件:

    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()
    Plugin 'VundleVim/Vundle.vim'
    Plugin '某个插件'
    call vundle#end()
    
  3. 启动 Vim,运行 :PluginInstall 来安装插件。

9. 参考文档

  • 官方文档:在 Vim 中输入 :help
  • 在线教程和视频,YouTube 上有许多优秀的 Vim 教学视频。

10. 总结

Vim 是一个功能强大的文本编辑器,适合各类开发和系统管理任务。通过不断地使用和实践,可以掌握更多的高级功能,提高工作效率。建议你多看一些 Vim 的教程和练习,以便更好的使用 Vim!

相关文章:

Linux Vim教程

Linux Vim 教程 Vim(Vi IMproved)是一个强大的文本编辑器,广泛用于编程和系统管理。本文将带你全面了解 Vim 的基础使用、常用命令、高级功能等。 1. 安装 Vim 在大多数 Linux 发行版中,Vim 已经预装。如果没有,可以…...

【学习笔记】多进程信号量控制

目录 1、CreateSemaphore 2、ReleaseSemaphore 3、CreateEvent 4、SetEvent 5、WaitForSingleObject 程序案例1: 程序案例2: 1、CreateSemaphore 创建一个计数信号量对象,成功时返回信号量对象的句柄;失败时返回NULL&…...

Redis与Memorycache的区别

Redis与Memorycache主要是持久线程和持久化的区别 1、从性能方面来说: Redis是单线程的,优点是CPU开销小,省去多线程线程之间切换的开销,但是相对于Memorycache来说海量数据的相对较低 Memorycache使用了多线程技术,数…...

docker和Helm Chart的基本命令和操作

一、docker基本命令和操作 1. docker login【登录】 登录 docker client,登录成功之后会显示 Login Succeeded。 docker login登陆到指定的镜像仓库,docker pull 和 docker push 操作都需要预先执行 docker login 操作; 指令:&a…...

Node中的CSRF攻击和防御

Node中的CSRF攻击和防御 假设有一个网上银行系统,用户可以通过该系统进行转账操作。转账功能的URL可能是这样的: https://www.bank.com/transfer?toAccount123456&amount1000当用户登录到银行系统,并在浏览器中访问这个URL时&#xff…...

CSS 多按钮根据半圆弧度排列

需求 多个按钮根据弧度&#xff0c;延边均匀排列。 实现 HTML 分两级&#xff1b;第一级&#xff0c;外层定义按钮的 compose-container 宽度&#xff1b;第二级&#xff0c;按钮集合&#xff0c;使用方法 styleBtn(index)&#xff0c;根据索引计算&#xff1b; <div c…...

【Linux】网络编程套接字Scoket:UDP网络编程

目录 一、了解UDP协议 二、了解端口和IP地址 三、套接字概述与Socket的概念 四、Socket的类型 五、 Socket的信息数据结构 六、网络字节序与主机字节序的互相转换 七、地址转换函数 八、UDP网络编程流程及相关函数 socket函数 bind函数 recvfrom函数 sendto函数 …...

基于模糊PID控制器的puma560机器人控制系统的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 PUMA 560机器人的数学模型 4.2 PID控制原理 4.3 模糊PID控制器的设计 5.完整工程文件 1.课题概述 基于模糊PID控制器的puma560机器人控制系统的simulink建模与仿真&#xff0c;对比传统的PID控制器…...

C语言文件操作超详解

文章目录 1. 为什么使用文件2. 什么是文件2. 1 程序文件2. 2 数据文件2. 3 文件名3. 二进制文件和文本文件? 4. 文件的打开和关闭4. 1 流和标准流4. 1. 1 流4. 1. 2 标准流 4. 2 文件指针4. 3 文件的打开和关闭 5. 文件的顺序读写5. 1 顺序读写函数介绍5. 2 对比一组函数: 6. …...

表字段显示tip

需求背景&#xff1a; 生成的报表&#xff0c;前端只展示字段名称&#xff0c;计算逻辑没有解释&#xff0c;使用方频繁“骚扰”&#xff0c;实在受不了&#xff0c;增加一个字段tip&#xff0c;实现效果&#xff08;下图&#xff09;&#xff1a; 代码 结合使用el-table-colu…...

十二、享元模式

文章目录 1 基本介绍2 案例2.1 Digit 接口2.2 Color 枚举2.3 BigDigit 类2.4 DigitFactory 类2.5 Client 类2.6 Client 类的测试结果2.7 总结 3 各角色之间的关系3.1 角色3.1.1 Flyweight ( 抽象享元 )3.1.2 ConcreteFlyweight ( 具体享元 )3.1.3 UnsharedFlyweight ( 非享元 )…...

黑马Java零基础视频教程精华部分_18_Arrays各种方法

系列文章目录 文章目录 系列文章目录Arrays简介Arrays各种方法toString代码示例binarySearch代码示例copyOf代码示例copyOfRange和fill代码示例sort代码示例 Arrays简介 操作数组的工具类。 Arrays各种方法 toString代码示例 int[]arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //to…...

RAG私域问答场景超级详细方案(第一期方案)[1]:工业级别构建私域问答(知识处理、知识召回排序、搜索问答模块)

RAG私域问答场景整体夏详细方案(第一期方案):工业级别构建私域问答(知识处理、知识召回排序、搜索问答模块) 大模型性能的跳阶式增长给文本摘要、信息检索、信息抽取、语义问答等自然语言处理任务带来了卓越的性能提升。同时,LangChain 作为一种基于 LLM 的框架,能够快速…...

【AI在医疗领域的应用】AI在疾病诊断、个性化治疗等领域的应用

AI在医疗领域的应用 AI在疾病诊断、个性化治疗等领域的应用 引言 人工智能&#xff08;AI&#xff09;技术正在迅速改变各个行业&#xff0c;而医疗领域无疑是AI应用最广泛、影响最深远的领域之一。AI在医疗中的应用不仅能够提高诊断的准确性和效率&#xff0c;还为个性化治疗…...

SpEL结合AOP示例

AOP不用多说&#xff0c;是spring框架的两大基石之一。SpEL是Spring Expression Language的缩写&#xff0c;意为Spring表达式语言&#xff0c;&#xff0c;其支持在运行时查询和操作对象图提供了更加丰富的功能&#xff0c;最特别的是方法调用与字符串模板功能。熟悉js的es6语…...

【Linux:环境变量】

目录 命令行参数&#xff1a; 环境变量&#xff1a; 命令行参数&#xff1a; argv是一个char*类型的数组&#xff0c;里面存放着字符、字符串的指针地址&#xff0c;且该数组必定是以NULL结尾 命令行中启动的进程都是Bash的子进程&#xff0c;命令行参数的存在本质上就是通过…...

8月9日笔记

8月9日笔记 什么是代理? “代理”通常指的是“网络代理”&#xff0c;它是一种特殊的网络服务&#xff0c;允许一个网络终端&#xff08;一般为客户端&#xff09;通过这个服务与另一个网络终端&#xff08;一般为服务器&#xff09;进行非直接的连接。代理服务器作为中间人…...

API 签名认证:AK(Access Key 访问密钥)和 SK(Secret Key 私密密钥)

API签名认证 在当今的互联网时代&#xff0c;API作为服务与服务、应用程序与应用程序之间通信的重要手段&#xff0c;其安全性不容忽视。你是否遇到过需要在HTTP请求中加入访问密钥(ak)和私密密钥(sk)的情况&#xff1f;是不是担心这些敏感信息会被拦截或者泄露&#xff1f;本…...

Redis 单机和集群环境部署教程

目录 一、Redis 单机环境部署1. 环境准备2. 安装 Redis2.1 安装依赖2.2 下载并编译 Redis2.3 配置 Redis2.4 设置 Redis 为系统服务 3. Redis 配置选项详解4. 注意事项 二、Redis 集群环境部署1. 环境准备2. 安装 Redis3. 配置 Redis 集群3.1 配置文件调整3.2 启动 Redis 实例3…...

华为hcip-big data 学习笔记《一》大数据应用开发总指导

一、大数据应用开发总指导 1. 前言 随着大数据技术的飞速发展和大数据应用的不断普及&#xff0c;大数据已经成为当今时代最热门的话题之一。不过对于大数据的了解&#xff0c;很多人还只是停留在表面&#xff0c;提到大数据&#xff0c;很多人只是直到它是最新的科技&#x…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

Qt Quick模块功能及架构

Qt 6.0 中的 Qt Quick 模块是构建现代、动态用户界面的核心框架&#xff0c;基于声明式编程&#xff08;QML&#xff09;和 JavaScript&#xff0c;专注于高性能、流畅的动画和跨平台 UI 开发。、 一、主要功能改进 1. Qt Quick 核心架构 QML 引擎升级&#xff1a;Qt 6.0 使用…...

KKCMS部署

目录 账号 网站目录 快看CMS使用手册 http://10.141.19.241/kkcms/install/ 常规思路&#xff1a;页面点点观察url变化&#xff0c;参数 常规思路&#xff1a;点一个功能模块抓包看什么东西&#xff0c;正确是什么样&#xff0c;错误的是什么样&#xff0c;构造参数。 账号…...

HarmonyOS Next 弹窗系列教程(3)

HarmonyOS Next 弹窗系列教程&#xff08;3&#xff09; 选择器弹窗 (PickerDialog) 介绍 选择器弹窗通常用于在用户进行某些操作&#xff08;如点击按钮&#xff09;时显示特定的信息或选项。让用户可以进行选择提供的固定的内容。 以下内容都属于选择器弹窗&#xff1a; …...