Linux 基础入门操作 前言 VIM的基本操作 2

1 VIM的背景介绍

Vi 的诞生与1976年,Vim 的前身是 Vi(Visual Editor),由 Bill Joy 在 BSD Unix 系统上开发,作为 ed(行编辑器)的改进版本,提供全屏编辑功能,成为 Unix/Linux 系统的标准文本编辑器。

Vim 的诞生1991年,Vi 虽然强大,但功能有限。1991年,Bram Moolenaar 基于 Vi 开发了 Vim(Vi IMproved),增加了多级撤销、语法高亮、跨平台支持等特性,并逐步成为最流行的 Vi 增强版本。

目前开源与社区发展,Vim 是开源软件(遵循 GPL 协议),拥有活跃的开发者社区,至今仍在持续更新(最新稳定版为 Vim 9.0,2022年发布)。Vim 是终端环境下的高效编辑器,凭借其极简设计和强大的可扩展性,在开发者中经久不衰。尽管学习成本较高,但熟练使用后编辑速度远超常规编辑器,尤其适合服务器维护和键盘流编程。

它的特点如下:

  1. 模态编辑(Modal Editing):
    Vim 的核心设计是模式分离(普通模式、插入模式、可视模式等),减少手指移动,提升编辑效率。

  2. 键盘优先:
    几乎所有操作均可通过键盘完成,避免依赖鼠标,适合快速文本处理。

  3. 可扩展性:
    支持插件(通过 .vimrc 配置)和脚本(Vimscript/Lua),可定制成 IDE(如搭配 LSP)

1.1 VIM的用途

Vim 是一款功能强大的文本编辑器,学习曲线较陡,但掌握基本操作后效率会大幅提升。它用途如下:

  1. 系统管理员与开发者:

默认预装在大多数 Linux/Unix 和 macOS 系统中(vi 通常是 Vim 的别名)。常用于配置文件编辑(如 /etc/nginx/nginx.conf)、远程服务器调试(通过 SSH)。

  1. 程序员:

高效编写代码(支持语法高亮、自动补全插件如 coc.nvim)。与版本控制工具(Git)结合(如 fugitive.vim)。

  1. 写作与日志:

纯文本编辑(Markdown、LaTeX 支持),适合无干扰写作。

1.2 VIM的安装

在ubuntu 环境下面的安装

sudo apt update
sudo apt install vim          # 安装基础版
sudo apt install vim-gtk3    # 安装图形化版本(GVim)

1.3 其它常用的编辑器

(1) Nano

特点:简单易用,适合新手,快捷键提示在屏幕底部。

sudo apt install nano    # Debian/Ubuntu
sudo dnf install nano   # RHEL/Fedora
sudo pacman -S nano     # Arch Linux

(2)Micro
特点:现代化终端编辑器,支持鼠标操作、语法高亮、多光标。

curl https://getmic.ro | bash  # 一键安装
sudo mv micro /usr/local/bin  # 添加到 PATH

1.4 总结

  1. 服务器/终端:Vim、Nano、Micro

  2. 桌面环境:VS Code、Kate、Sublime Text

  3. 极客/可定制:Emacs、Neovim、Helix

2 VIM 常见指令

VIM 一共有四种模式。

  1. 普通模式(Normal Mode):默认模式,用于导航和操作文本。从其他模式按 Esc 返回普通模式。

  2. 插入模式(Insert Mode):输入文本。 从普通模式按 i(光标前插入)、a(光标后插入)、o(下一行插入)等进入。

  3. 可视模式(Visual Mode):选择文本。 按 v(字符选择)、V(行选择)、Ctrl+v(块选择)。

  4. 命令模式(Command Mode):执行命令(如保存、退出)。从普通模式按 : 进入。

2.1 普通模式-- 移动光标

  1. 基本移动:也可以使用箭头来移动

h(左)、j(下)、k(上)、l(右)。

w(下一个单词开头)、b(上一个单词开头)。

0(行首)、^(行首非空格)、$(行尾)。

  1. 翻页:

Ctrl+f(下一页)、Ctrl+b(上一页)。

  1. 跳转:

gg(文件开头)、G(文件结尾)、行号+G(跳转到指定行)。

2.2 编辑模式

  1. 删除:

x(删除当前字符)或者del、dw(删除单词)、dd(删除整行)。

  1. 复制/粘贴:

yy(复制行)、p(粘贴到光标后)、P(粘贴到光标前)。

  1. 撤销/重做:

u(撤销)、Ctrl+r(重做)。

  1. 替换:

r(替换单个字符)、cw(替换单词)、:%s/old/new/g(全局替换)。

2.3 命令模式

  1. 保存、退出
    :w 保存文件。

:q 退出(未修改时)。

:q! 强制退出(不保存修改)。

:wq 或 :x 保存并退出。

:e 文件名 打开其他文件。

  1. 搜索:

/关键词 向下搜索,?关键词 向上搜索。

按 n(下一个匹配)、N(上一个匹配)。

  1. 替换:

😒/old/new 替换当前行第一个匹配。

😒/old/new/g 替换当前行所有匹配。

:%s/old/new/g 全局替换。

2.4 可视模式

选择文本后进行编辑(删除、复制、缩进等)。

在这里插入图片描述

2.5 配置

  1. vim ~/.vimrc 打开文件
  2. 添加以下语句
set number          " 显示行号
syntax on           " 语法高亮
set tabstop=4       " Tab缩进4空格
set expandtab       " Tab转空格

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

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

相关文章

Java:Set操作

目录 Set 转 List Set 转 List Set<String>set new HashSet<String>(); set.add("c"); set.add("d"); set.add("a"); set.add("a");//方法一&#xff1a; List<String>list new ArrayList<String>(set);//…

算力驱动未来:从边缘计算到高阶AI的算力革命

算力驱动未来&#xff1a;从边缘计算到高阶AI的算力革命 摘要 本文深入探讨了不同算力水平&#xff08;20TOPS至160TOPS&#xff09;在人工智能领域的多样化应用场景。从边缘计算的实时目标检测到自动驾驶的多传感器融合&#xff0c;从自然语言处理的大模型应用到AI for Scie…

虚拟机上安装openEuler和openGauss数据库

1.虚拟机版本选择VM 16 PRO 2.openEuler版本选择openEuler-22.03-LTS-SP4-x86_64 下载地址&#xff1a;https://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP4/ISO/x86_64/openEuler-22.03-LTS-SP4-x86_64-dvd.iso 3.虚拟机安装openEuler过程&#xff1a; 4.安装ope…

0_Pytorch中的张量操作

[引言]张量的概念 1.基本概念 张量是一个通用的多维数组&#xff0c;可以表示标量&#xff08;0 维&#xff09;、向量&#xff08;1 维&#xff09;、矩阵&#xff08;2 维&#xff09;以及更高维度的数据。张量是 PyTorch 中的核心数据结构&#xff0c;用于表示和操作数据。…

LS-LINUX-002 简易创建SSH

LS-LINUX-002 简易创建SSH 1. CentOS 8 创建和配置SSH服务 1.1 安装SSH服务 CentOS 8 默认已经安装了OpenSSH服务。如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo dnf install -y openssh-server1.2 启动SSH服务 安装完成后&#xff0c;需要启动SSH服务…

计算机专业求职面试的常见题目分类整理

以下是计算机专业求职面试的常见题目分类整理&#xff0c;每个大类精选20道高频问题&#xff0c;结合参考内容进行解析与扩展&#xff0c;帮助系统化备考&#xff1a; 一、数据结构与算法 解释时间复杂度和空间复杂度 时间复杂度衡量算法执行时间随输入规模的增长趋势&#xf…

脚本启动 Java 程序

如果你想在后台启动一个 Java 程序&#xff0c;并在终端窗口中显示一个自定义的名字&#xff0c;可以通过编写一个简单的脚本来实现。以下是一个基于 Linux/macOS 的解决方案&#xff0c;使用 Bash 脚本启动 Java 程序&#xff0c;并在终端窗口中显示自定义标题。 示例脚本 创建…

CentOS禁用nouveau驱动

1、验证 nouveau 是否在运行 lsmod | grep nouveau如果命令返回结果&#xff0c;说明 nouveau 驱动正在运行。 2、编辑黑名单文件 通过编辑黑名单配置文件来禁用 nouveau 驱动&#xff0c;这样在系统启动时不会加载它。 vi /etc/modprobe.d/blacklist-nouveau.conf修改以下…

Linux: network: tcpdump: packets dropped by kernel

文章目录 最近遇到一个问题原因libpcap/tcpdump 接口linux/libpcap 接口内核的处理原因可能有以下几种:解决方法:man pcap_stats最近遇到一个问题 tcpdump命令显示有dropped的包,而且是被内核drop的。 [root@-one-01 ~]# tcpdump -i any udp and port 8080 -v -w /root/udp…

WEB安全--提权思路

一、情形 在我们成功上传webshell到服务器中并拿到权限时&#xff0c;发现我们的权限很低无法执行特定的命令&#xff0c;这时为了能做更多的操作&#xff0c;我们就需要提升权限。 二、方式 2.1、Windows提权 1、普通用户执行systeminfo命令获取服务器的基本信息&#xff0…

001 vue

https://cn.vuejs.org/ 文章目录 v-bindv-modelv-on修饰符条件渲染/控制&#xff1a;v-if v-show列表渲染 M&#xff1a;即Model&#xff0c;模型&#xff0c;包括数据和一些基本操作 V&#xff1a;即View&#xff0c;视图&#xff0c;页面渲染结果 VM&#xff1a;即View-Mode…

Tomcat 负载均衡

目录 二、Tomcat Web Server 2.1 Tomcat 部署 2.1.1 Tomcat 介绍 2.1.2 Tomcat 安装 2.2 Tomcat 服务管理 2.2.1 Tomcat 启停 2.2.2 目录说明 2.2.3编辑主页 2.3 Tomcat管理控制台 2.3.1开启远程管理 2.3.2 配置远程管理密码 三、负载均衡 3.1 重新编译Nginx 3.1.1 确…

使用SpringSecurity下,发生重定向异常

使用SpringSecurity下&#xff0c;发生空转异常 环境信息&#xff1a; Spring Boot 3.4.4 &#xff0c; jdk 17 &#xff0c; springSecurity 6.4.4 问题背景&#xff1a; 没有自定义controller &#xff0c;改写了login 页面&#xff0c;并且进行了成功后的跳转处理&#xf…

S130N-ISI 全栈方案与云平台深度协同:重构 PLC 开发新范式

一、什么是 PLC&#xff1f; 1.技术定义 PLC&#xff08;Power Line Communication&#xff09;是一种创新的通信技术&#xff0c;它以电力线作为天然的传输介质&#xff0c;通过先进的信号调制技术将高频数据信号叠加于工频电流之上&#xff0c;实现电力输送与数据通信的双频共…

SU-YOLO:基于脉冲神经网络的高效水下目标检测模型解析

论文地址:https://arxiv.org/pdf/2503.24389 目录 一、论文概述 二、创新点解析 1. 基于脉冲的水下图像去噪(SpikeDenoiser) 原理与结构 2. 分离批归一化(SeBN) 原理与结构 3. 优化的残差块(SU-Block) 原理与结构 三、代码复现指南 环境配置 模型训练 四、…

实现阿里云服务器上的文字聊天程序以及C语言写的进程间通信(IPC)程序

实现阿里云服务器上的文字聊天程序以及C语言写的进程间通信&#xff08;IPC&#xff09;程序 1. 基于 Linux 中的管道进行进程间通信 我们首先使用管道进行进程间通信&#xff0c;这对于简单的聊天程序来说是一个比较简单且实用的方法。 步骤&#xff1a; 创建管道&#xf…

COMSOL 与人工智能融合的多物理场应用:28个案例的思路、方法与工具概述

应用案例概述 基于 COMSOL 与人工智能&#xff08;AI&#xff09;结合的应用案例涵盖了 28 个多领域场景&#xff0c;包括工程&#xff08;如热传导优化、结构力学预测&#xff09;、能源&#xff08;如电池热管理、燃料电池性能&#xff09;、生物医学&#xff08;如药物传递…

SAN及其ZONE

目录 一、什么是SAN? 二、什么是ZONE? 三、配置ZONE 2.1 核心概念 2.2 划分原则 2.3 Zone划分最佳实践 2.4 配置语法 1). 基于端口&#xff08;Domain,Port&#xff09;的zone语法 2). 基于WWN&#xff08;World Wide Name&#xff09;的Zone语法 3). 使用Alias简化配置 4).…

Springboot框架—单元测试操作

Springboot单元测试的操作步骤&#xff1a; 1.添加依赖spring-boot-starter-test 在pom.xml中添加依赖spring-boot-starter-test 2.在src/test/java下新建java class 3.单元测试入口代码结构 import org.junit.Test; import org.junit.runner.RunWith; import org.springfra…

用AbortController取消事件绑定

视频教程 React - &#x1f914; Abort Controller 到底是什么神仙玩意&#xff1f;看完这个视频你就明白了&#xff01;&#x1f4a1;_哔哩哔哩_bilibili AbortController的好处之一是事件绑定的函数已无需具名函数,匿名函数也可以被取消事件绑定了 //该代码2秒后点击失效…