【Linux】vim的使用

个人主页 : zxctsclrjjjcph
文章封面来自:艺术家–贤海林
如有转载请先通知

目录

  • 1. 前言
  • 2. vim的基本概念
  • 3. vim的基本操作
  • 4. vim正常模式命令集
    • 4.1 命令模式
      • 4.1.1 光标定位
    • 4.2 插入模式
    • 4.3 底行模式

这个是在网上找的一张关于vim键盘的图
在这里插入图片描述

1. 前言

vim是Linux编辑器,功能上和记事本没有区别。不仅仅可以用来写c语言和c++,其它语言也可以在上面写。

2. vim的基本概念

vim是一款多模式的编辑器,但是目前掌握这3种即可,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

  1. 正常/普通/命令模式(Normal mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  2. 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式
  3. 末行模式(last line mode)
    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入

3. vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

vim a.txt

在这里插入图片描述

不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。

[正常模式]切换至[插入模式]有三种方式:
输入a
输入i
输入o
在这里插入图片描述

在这里插入图片描述

[插入模式]切换至[正常模式]
目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

[正常模式]切换至[底行模式]
「shift + ;」, 其实就是输入「:」
在这里插入图片描述

在这里插入图片描述
退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」
: w (保存当前文件)
: wq (输入「wq」,存盘并退出vim)
: q! (输入q!,不存盘强制退出vim)
在这里插入图片描述
总之,三个模式切换如下图:

在这里插入图片描述
注意:底行模式是不能直接到插入模式的,同样插入模式也不能直接到底行模式。

4. vim正常模式命令集

4.1 命令模式

允许使用者通过命令,来进行文本的编辑控制。
像键盘是用来做输入的,那么鼠标是用来对文本进行控制,例如复制粘贴,区域选择、大小写转换。
yy:复制当前光标所在的行
n+yy:连续复制n行
p:粘贴,当前光标的下一行
n+p:表示把指定内容粘贴n次。
举个例子:把第5行yy一下,再p三次
在这里插入图片描述
直接进行10p就粘贴了10次。
在这里插入图片描述

u:撤销
要将上面命令撤销,就u三次
在这里插入图片描述
ctrl+r: 对历史撤销,进行撤销
在这里插入图片描述
dd:剪切/删除指定行
举个例子:dd一下第5行
在这里插入图片描述

n+dd:剪切/删除指定多行
举个例子:5dd
在这里插入图片描述
在这里插入图片描述

4.1.1 光标定位

shift+4=$:将光标的位置定位到当前行的结尾
在这里插入图片描述
shift+6=^:将光标的位置定位到当前行的开始
在这里插入图片描述
gg:将光标定位到整个文本的最开头
在这里插入图片描述
shift+g=G:将光标定位到整个文本的最后一行
在这里插入图片描述
n+shift+g=G:将光标定位到整个文本的任意一行
举个例子:10+shift+g,定位到第10行
在这里插入图片描述
h,j,k,l:左,下,上,右,也可以带n。
h(左) j(jimp,下) 上(king,上) l(右)
键盘上的上下左右键也能用。

w:按照单词为单位进行光标后移
在这里插入图片描述
b:按照单词为单位进行光标前移
在这里插入图片描述
在这里插入图片描述
shift+`=~:大小写进行切换
在这里插入图片描述

n+x:删除光标后续的一个字符,可以删除一次n个(在一行内)
在这里插入图片描述
n+shift+x=X:删除光标之前的一个字符,可以删除一次n个(在一行内)
在这里插入图片描述
n+r:对光标指定位置,进行一个字符替换,可以一次替换多个
把w替换为a
在这里插入图片描述
shift+r=R:进入替换模式,直接进行文本替换
在这里插入图片描述
shift+zz=Z:保存退出
在这里插入图片描述

4.2 插入模式

也就是编辑模式

  1. 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
    在这里插入图片描述

在这里插入图片描述

  1. 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
    在这里插入图片描述

  2. 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
    在这里插入图片描述

4.3 底行模式

用来进行让vim进行包括但不限于shell进行交互的。
w (保存当前文件)
在这里插入图片描述

wq (输入「wq」,存盘并退出vim)
在这里插入图片描述

q! (输入q!,不存盘强制退出vim)
在这里插入图片描述
打开test.c发现还是修改之前的
在这里插入图片描述

set nu 打开行号
在这里插入图片描述
set nonu 去掉行号
在这里插入图片描述
!command:不退出vim,可以进行shell命令执行,常用函数查看
举个例子:!gcc test.c
在这里插入图片描述

在这里插入图片描述
再来看看!ls -l
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

:vs filename分屏,多文件操作
先新建一个code.c
在这里插入图片描述
然后打开
在这里插入图片描述
在这里插入图片描述
再打开test.c
如果想要在vim中进行多文件操作
在底行模式下输入:vs test.h
在这里插入图片描述
在底行模式下又输入:vs code.c
在这里插入图片描述
光标在哪个文件就在哪个文件编辑。
那么怎么从一个文件跳到另一个文件呢?
在命令模式下用ctrl+ww
在这里插入图片描述
在这里插入图片描述
就能实现界面光标的切换。

有问题请指出,大家一起进步吧!

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

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

相关文章

Summerize for Bioinformatics with ChatGPT

目录 Basic Introduction Historical Events Bioinformatics vs. Computational Biology Levels of Bioinfo & CompBio Molecular Biology Primer Homework 1 A brief Introduction to DNA & RNA A brief Introduction to Protein Sequencing Technologies S…

3d效果图的应用场景和3d渲染的发展前景

3D效果图一直都是视觉行业非常重要的一部分,它在不同领域都有广泛应用,通过效果图,设计师能够准确展示设计方案,方便沟通。本文将深入分析3D效果图在不同场景中的应用和未来发展趋势。 一、3D效果图的应用场景 1、建筑领域 在建筑…

Qt —— 自定义飞机仪表控件(附源码)

示例效果 部署环境 本人亲测版本Vs2017+Qt5.12.4,其他版本应该也可使用。 源码1 qfi_ADI::qfi_ADI( QWidget *parent ) :QGraphicsView ( parent ),m_scene ( nullptr )

HCIP之BGP联邦实验

华子目录 实验拓扑及要求规划网段和IP地址实验步骤配置IP地址先让IGP通建BGP邻居修改ospf下环回接口网络类型修改联邦之间的最大跳数每台运行BGP的路由器批量宣告路由修改本地下一跳测试 实验拓扑及要求 规划网段和IP地址 实验步骤 配置IP地址 r1配置,依次类推 […

网络安全基础概念

目录 网络安全背景 网络空间安全 --- Cyberspace 常见的网络安全术语 协议栈自身的脆弱性: 常见安全风险: 物理层--物理攻击 物理设备窃听: 链路层-- MAC洪泛攻击: 链路层--ARP欺骗 网络层--ICMP攻击 传输层--TCP SYN Flood攻击: …

【注解】@RequiredArgsConstructor 按需自动生成构造函数,举例说明

RequiredArgsConstructor 是Lombok库中的一种注解,它用于自动生成构造函数,针对于final字段的构造函数。它的作用包括以下几点: 自动生成构造函数:RequiredArgsConstructor 注解自动生成一个构造函数,该构造函数接受标…

寒假思维训练计划day11

每日一题,这两天有事,断更了一天,今天补上,感觉状态也不太好,来道1500的题压压惊。 宣传一下我总结的几个构造题模型,一点个人的浅薄见解: 1、前后缀贪心,比如说观察前后缀的sum&…

git内部原理

git内部原理 介绍目录结构说明 介绍 项目的本地仓库中,包含一个隐藏的.git目录,其不同的文件产生都源于git的各种不同命令造成,文件目录如下所示: 目录结构说明 上面最核心重要的为object目录,目录最主要有三个对象…

算法训练营Day45

#Java #动态规划 Feeling and experiences: 最长公共子序列:力扣题目链接 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新…

【笔记】《WebGL 编程指南》第 2 章 WebGL 入门

第一个 WebGL 程序 【P42】 默认情况下&#xff0c;<canvas>是透明的 【P44】 它不直接提供绘图方法&#xff0c;而是提供一种叫上下文&#xff08;context&#xff09;的机制来进行绘图。 【P45】 计算机系统通常使用红、绿、蓝这三原色组合来表示颜色&#xff0c;这种…

linux zabbix监控

zabbix总结 zabbix-server 10051 zabbix-agent 10050 zabbix-proxy 10051 1.监控项&#xff08;模板&#xff09;&#xff1a;获取监控数据 #模板直接链接到新的主机 2.触发器&#xff1a;设置一个值 在非合理区间报警 3.动作&#xff1a;可以帮忙发送通知&#xff08;告…

python:socket基础操作(2)-《udp发送信息》

基础发送udp信息 1.导入socket模块 2.使用udp模块 3.发送内容 4.关闭套接字 很简单的4步就可以实现udp的消息发送 import socket # 导入模块udp_socket socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 使用ipv4 udp协议udp_socket.sendto(b"hello world",(&…