Linux Vim的 命令大全

Linux Vim的 命令大全

在这里插入图片描述


文章目录

  • Linux Vim的 命令大全
    • @[TOC](文章目录)
    • Vim 的历史
    • Vi 的诞生
    • Vim 的诞生
    • Vim 的开源与发展
    • Vim 的影响力
    • 1.Vim 的基本模式
    • 2. 正常模式常用命令
    • 3. 插入模式
    • 4. 命令模式
    • 5. 可视模式
    • 6. 其他有用的命令
    • 7. 自定义设置
    • 下载

Vim 的历史

在这里插入图片描述

Vim 的历史可以追溯到 1991 年,它是由荷兰程序员 Bram Moolenaar 开发的。Vim 的全称是 Vi IMproved,顾名思义,它是对经典文本编辑器 Vi 的增强版。以下是 Vim 的发展历史及其背景介绍:

Vi 的诞生

要了解 Vim,首先要提到它的前身 Vi。Vi 是 UNIX 操作系统中的一种文本编辑器,由 Bill Joy 在 1976 年开发。Vi 的诞生初衷是为了提供一个可以在当时计算机资源受限的环境中使用的高效文本编辑器。Vi 的设计哲学强调键盘上的简洁快捷操作,减少依赖鼠标的交互,极大地提高了编辑文本的效率。

由于 Vi 是开源的,并且伴随 UNIX 的流行在多个操作系统中得到广泛应用,许多开发者和用户都对其功能提出了更多需求。然而,Vi 在早期版本中存在一些功能的局限性,这为 Vim 的诞生奠定了基础。

Vim 的诞生

Bram Moolenaar 于 1991 年发布了最初版本的 Vim,最初它是为 Amiga 计算机设计的。最初版本被称为 “Vi IMitation”,旨在模仿 Vi 的行为。随着时间推移,Moolenaar 添加了大量新功能,使其超越了 Vi 的功能,因而重命名为 Vi IMproved,即 Vim。

Vim 作为 Vi 的增强版,提供了许多原始 Vi 所缺乏的功能,例如:

多级撤销:Vi 只有单级撤销功能,而 Vim 支持无限撤销。
语法高亮:Vim 提供了语法高亮显示,帮助用户在编辑代码时更容易区分不同的语法元素。
可视模式:Vim 引入了可视模式,允许用户在选择文本后对其进行操作。
插件系统:Vim 支持插件,使其功能可以进一步扩展,适应各种需求。
这些改进使得 Vim 不仅是一个高效的文本编辑器,还成为了开发者、系统管理员等专业用户的首选工具之一。

Vim 的开源与发展

Bram Moolenaar 从 Vim 的早期版本开始就将其作为开源软件发布,并一直保持着对 Vim 的维护和更新。他还通过 Vim 推广慈善项目。他将用户捐款用于支持乌干达的儿童福利项目,尤其是帮助当地的儿童教育和基础设施建设。

随着时间的推移,Vim 社区不断壮大,越来越多的贡献者加入,推出了各种插件和配置,进一步扩展了 Vim 的功能。例如,Vim 的插件系统使得它能够支持 IDE 功能,如代码补全、错误检查等,使其成为了现代开发者的强大工具。

Vim 的影响力

Vim 的影响力不仅限于 Linux 和 UNIX 系统,它几乎可以在所有主流操作系统上运行,包括 Windows 和 macOS。Vim 的轻量级、高效特性使其在资源受限的环境中尤其受欢迎,许多服务器管理员依赖 Vim 进行快速的远程文件编辑。

Vim 的设计思想和模式编辑方式也影响了许多其他编辑器。许多现代文本编辑器(如 Sublime Text、Visual Studio Code 等)提供了 Vim 模式,让用户可以在这些编辑器中使用 Vim 的操作方式。


1.Vim 的基本模式

Vim 有三种主要的模式,每种模式对应不同的操作:

正常模式(Normal Mode):默认模式,用于浏览和修改文本。
插入模式(Insert Mode):用于插入和编辑文本。
命令模式(Command Mode):用于执行保存、退出、查找等命令。
进入 Vim
复制代码
vim filename
打开文件 filename,进入正常模式。如果文件不存在,Vim 会创建一个新文件。

2. 正常模式常用命令

进入 Vim 默认处于正常模式,可通过以下命令来快速导航和操作文本。

基本导航
h:光标左移一个字符
l:光标右移一个字符
j:光标下移一行
k:光标上移一行
w:跳到下一个单词的开头
b:跳到上一个单词的开头
gg:移动到文件开头
G:移动到文件结尾
0:移动到行首
$:移动到行尾
Ctrl + f:向下翻页
Ctrl + b:向上翻页
编辑文本
x:删除光标所在字符
dd:删除当前行
yy:复制当前行
p:粘贴复制或剪切的内容
u:撤销上一步操作
Ctrl + r:重做撤销的操作
r:替换当前字符
J:将当前行与下一行合并

:当前行右移
<<:当前行左移
搜索与替换
/pattern:搜索 pattern
n:跳转到下一个匹配结果
N:跳转到上一个匹配结果
:%s/old/new/g:全局替换所有 old 为 new
:%s/old/new/gc:全局替换,逐个确认
高效删除
dw:删除到下一个单词的开头
d$:删除至行尾
dgg:删除至文件开头
dG:删除至文件结尾

3. 插入模式

在正常模式下,通过以下命令进入插入模式:

i:在光标前插入
I:在行首插入
a:在光标后插入
A:在行尾插入
o:在当前行下方插入新行
O:在当前行上方插入新行
进入插入模式后,输入的文本将被插入文件中。完成后按 Esc 键返回正常模式。

4. 命令模式

在正常模式下,按 : 进入命令模式,执行各种文件操作命令。

文件操作
:w:保存文件
:q:退出 Vim
:wq:保存并退出
:q!:不保存强制退出
:w filename:将文件另存为 filename
:e filename:打开文件 filename
:r filename:将文件 filename 的内容插入到当前文件中
:set nu:显示行号
:set nonu:取消行号显示

5. 可视模式

按下 v 键进入可视模式,可以通过移动光标选择文本,进行批量操作。

v:字符选择
V:行选择
Ctrl + v:块选择
d:删除选择的文本
y:复制选择的文本

:右移选择的文本
<:左移选择的文本

6. 其他有用的命令

.:重复上一个命令
~:切换字符大小写
Ctrl + g:显示光标所在行与文件信息
:! command:执行外部命令,例如 :! ls 列出当前目录的文件

7. 自定义设置

你可以通过配置 .vimrc 文件,定制 Vim 的行为。例如,自动显示行号、设置缩进等。

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

下载

下载https://www.vim.org/download.php

windows 下载

文档下载

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

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

相关文章

SD三分钟入门!秋叶大佬24年8月最新的Stable Diffusion整合包V4.9.7来了~

1 什么是 Stable Diffusion&#xff1f; Stable Diffusion&#xff08;简称SD&#xff09;是一种生成式人工智能技术&#xff0c;于2022年推出。它主要用于根据文本描述生成精细图像&#xff0c;同时也可应用于其他任务&#xff0c;如图像修补、扩展&#xff0c;以及在文本提…

pycharm如何安装selenium

在pycharm中打开一个项目后,点击Setting(ALTCtrlS快捷键) 然后点击install package完成后点击关闭这个窗口,就可以在代码中使用selenium了 成功后出现如下界面 编写一段正常可以运行操作chorme浏览器的 from selenium import webdriver # 指定ChromeDriver的路径driver we…

SQL 编程基础

SQL&#xff08;结构化查询语言&#xff09;广泛应用于数据库操作&#xff0c;是每个程序员都需要掌握的技能之一。这篇文章将带你从基础入门&#xff0c;了解SQL编程中的常量、变量及流程控制语句。我们将采用简单易懂的语言&#xff0c;结合实际示例&#xff0c;帮助你轻松理…

骨传导耳机推荐排名,精选五款热门好用不踩雷推荐

近两年来&#xff0c;骨传导运动蓝牙耳机在运动领域内日益流行。与传统耳机相比&#xff0c;它的显著优势是能够保持双耳开放&#xff0c;不会堵塞耳道&#xff0c;消除了入耳式耳机可能引起的不适感。此外还能避免运动时耳内出汗可能导致的各种卫生和健康问题。很多人就问了&a…

Python 调用手机摄像头

Python 调用手机摄像头 在手机上安装软件 这里以安卓手机作为演示&#xff0c;ISO也是差不多的 软件下载地址 注意&#xff1a;要想在电脑上查看手机摄像头拍摄的内容的在一个局域网里面(没有 WIFI 可以使用 热点 ) 安装完打开IP摄像头服务器 点击分享查看IP 查看局域网的I…

谷粒商城のNginx

文章目录 前言一、Nginx1、安装Nginx2、相关配置2.1、配置host2.2、配置Nginx2.3、配置网关 前言 本篇重点介绍项目中的Nginx配置。 一、Nginx 1、安装Nginx 首先需要在本地虚拟机执行&#xff1a; mkdir -p /mydata/nginx/html /mydata/nginx/logs /mydata/nginx/conf在项目…

数学建模笔记——TOPSIS[优劣解距离]法

数学建模笔记——TOPSIS[优劣解距离法] TOPSIS(优劣解距离)法1. 基本概念2. 模型原理3. 基本步骤4. 典型例题4.1 矩阵正向化4.2 正向矩阵标准化4.3 计算得分并归一化4.4 python代码实现 TOPSIS(优劣解距离)法 1. 基本概念 C. L.Hwang和 K.Yoon于1981年首次提出 TOPSIS(Techni…

Windows操作系统sid系统唯一标识符查看和修改

1、sid介绍 sid 作为windows系统唯一的标识&#xff0c;对某些集群业务有依赖关系&#xff0c;如果重复可能导致集群部署异常。 如&#xff1a;域控AD 就依赖 sid 功能。 但是某个云主机或虚拟机使用同一个ghost进行操作系统部署&#xff0c;就可能会导致重复的情况&#xf…

为什么现在都流行开放式耳机?平价高品质蓝牙耳机推荐大赏

现在开放式耳机流行&#xff0c;是因为相比入耳式&#xff0c;它具有以下的优势&#xff1a; 一、佩戴舒适 开放式耳机通常设计轻盈&#xff0c;不直接刺激耳膜&#xff0c;长时间使用也不会给耳膜带来压迫感。而且其不入耳的设计不会堵塞耳道&#xff0c;使用较长时间后&…

Notepad++ 修改 About

1. 用这个工具&#xff0c;看标题&#xff0c;修改 1700 里的 Caption, 保存为 xx.exe, 2.修改链接&#xff0c;先准备如上。 2.1 使用插件 Hex Editor&#xff0c;拖入刚保存的 Notepad.exe 到 Notepad.exe, 按 c..S..H 2.2 按 ctrlf 查找 68 00 74 00 74 00 70 00 73 00 3…

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中&#xff0c; "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时&#xff0c;经常听到第一范式&#xff08;1NF&#xff09;、第二范式&#xff08;2NF&#xff09;、第三范式&#xff08;3NF&#xff09;以及 BCNF&#xff08;Boyce-…

线程的四种操作

所属专栏&#xff1a;Java学习 1. 线程的开启 start和run的区别&#xff1a; run&#xff1a;描述了线程要执行的任务&#xff0c;也可以称为线程的入口 start&#xff1a;调用系统函数&#xff0c;真正的在系统内核中创建线程&#xff08;创建PCB&#xff0c;加入到链…

利士策分享,从零开始创业:一场勇敢而精彩的旅程

利士策分享&#xff0c;从零开始创业&#xff1a;一场勇敢而精彩的旅程 附上可落地执行的策略&#xff1a; 在创业的征途中&#xff0c;理论固然重要&#xff0c;但可落地执行的策略才是推动我们前进的实际动力。 以下是一些具体且可操作的策略&#xff0c;希望可以帮助你从零…

vue通过html2canvas+jspdf生成PDF问题全解(水印,分页,截断,多页,黑屏,空白,附源码)

前端导出PDF的方法不多&#xff0c;常见的就是利用canvas画布渲染&#xff0c;再结合jspdf导出PDF文件&#xff0c;代码也不复杂&#xff0c;网上的代码基本都可以拿来即用。 如果不是特别追求完美的情况下&#xff0c;或者导出PDF内容单页的话&#xff0c;那么基本上也就满足业…

《数字信号处理》学习05-单位冲击响应与系统响应

目录 一&#xff0c;单位冲激响应 二&#xff0c;LTI系统对任意序列的系统响应 三&#xff0c;LTI系统的性质 通过上一篇文章《数字信号处理》学习04-离散时间系统中的线性时不变系统-CSDN博客的学习&#xff0c;我已经知道了离散时间线性时不变系统&#xff08;LTI&#x…

GQA (group query attention)

什么是GQA&#xff1f; 多个head的Query共用一组K和V。llama模型就用到该技术。 需要明确几点&#xff1a; 1.group有几组 2.每个group对应几个head 3.q以head为单位 k,v以group为单位 每个head/group特征维度都是head_dim 代码实现 import torch.nn as nn import torch …

串口通信协议(UART)

简介 uart通讯协议&#xff0c;是一种成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信的协议&#xff1b;是一种全双工&#xff0c;设备点对点通信的协议。下面从硬件电路、电平标准和串口参数等方面来了解uart通信协议。 硬件电路 硬件电路非常简单&am…

深入Redis:强大的主从复制

如果某个服务器或者程序&#xff0c;只有一个节点&#xff08;服务器&#xff09;&#xff0c;就会有很大的问题。比如可用不高&#xff0c;并发量也比较低。引入分布式系统&#xff0c;也主要是为了解决上述的单点问题。 Redis&#xff0c;主要部署在分布式系统上。在分布式系…

无人机之地面站篇

无人机的地面站&#xff0c;又称无人机控制站&#xff0c;是整个无人机系统的重要组成部分&#xff0c;扮演着作战指挥中心的角色。以下是对无人机地面站的详细阐述&#xff1a; 一、定义与功能 无人机地面站是指具有对无人机飞行平台和任务载荷进行监控和操纵能力的一组设备&…

Postgresql碎片整理

创建pgstattuple 扩展 CREATE EXTENSION pgstattuple 获取表的元组&#xff08;行&#xff09;信息&#xff0c;包括空闲空间的比例和行的平均宽度 SELECT * FROM pgstattuple(表名); 查看表和索引大小 SELECT pg_relation_size(表名), pg_relation_size(索引名称); 清理碎片方…