linux下的工具---vim

一、了解vim

1、vim是linux的开发工具

2、vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows
3、Linux下进行编程是需要使用独立的开发工具的,vim就是不错的工具

二、vim的基本概念

我们需要掌握的是vim的三种模式:命令模式(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,底行模式直接输入
 

 

三、vim的常见操作

注意: 下面介绍的指令,大多数都是在命令模式下执行的,部分指令是在底行模式下进行,会有特别说明的,比如第一条指令 set nu 设置行号

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

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

2、正常模式切换至插入模式

        输入a
        输入i
        输入o

3、[插入模式]切换至[正常模式]

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

4、[正常模式]切换至[末行模式]

「shift + ;」, 其实就是输入「:」

5、退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如
: w (保存当前文件)
: wq (输入「wq」,存盘并退出vim)
: q! (输入q!,不存盘强制退出vim)

四、vim正常模式命令集

行操作:

1.删除
删除当前光标所在行内容:dd
从当前光标行开始,删除n行:ndd

2.撤销
撤销上一步的操作:u
反撤销:ctrl+r

3.替换式写入
shift r进入replace模式,即原代码不用删除直接覆盖式写入

光标定位:

将光标定位到文件的最开始:gg
将光标定位到文件的最结尾:shift + gg
将光标定位到文件的任意一行:n,shift+g

将光标定位到当前行的最结尾(锚点):shift+$
将光标定位到当前行的最开始(锚点):shift+^

按照单词进行前移:b
按照n个单词进行前移:nb

按照单词进行后移:w
按照n个单词进行后移:nw

删除光标所在行的文本内容,从左至右每次删除1个单字符:x
删除光标所在行的文本内容,从右至左每次删除1个字符:shift + x

对字母进行进行大小写转换:shift + ~
对n字母进行进行大小写转换:n,shift + ~

光标的上下左右移动:方向键或者h(左),l(右),k(上),j(下)

删除文字:

「x」:每按一次,删除光标所在位置的一个字符
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」:删除光标所在行
「#dd」:从光标所在行开始删除#行

复制

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

替换:
「r」:替换光标所在处的字符。

「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

批量注释:

批量去注释:

       

五、vim末行模式命令集

文本查找:/+查找文本,按n选择下一个
文本查找:?+查找文本,按n选择上一个

行号建立:set + nu
行号取消: set + nonu

保存写入文件:w
强制写入文件:w!
退出文件:q
强制退出:q!

跨文件操作:vs + 文件名
切换文件窗口:ctrl + w + h/l

 

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

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

相关文章

Android笔记(十四):JetPack Compose中附带效应(一)

在Android应用中可以通过定义可组合函数来搭建应用界面。应用界面的更新往往是与可组合函数内部定义的状态值相关联的。当界面的状态值发生变更,会导致应用界面进行更新。在Android笔记(九):Compose组件的状态,对Compo…

【新手解答2】深入探索 C 语言:一些常见概念的解析

C语言的相关问题解答 写在最前面问题1变量名是否有可能与变量重名?变量名和变量的关系变量名与变量是否会"重名"举例说明结论 变量则是一个地址不变,值时刻在变的“具体数字”变量的地址和值变量名与数据类型具体化示例结论 问题2关于你给我的…

priority_queue模拟实现

目录 仿函数 模拟实现 结果 大根堆 小根堆 完整代码 priority_queue.h test.c 仿函数 仿函数的通俗定义:仿函数(functor)又称为函数对象(function object)是一个能行使函数功能 的类。仿函数的语法几乎和我们…

ubuntu修改系统语言

修改ubuntu系统语言 操作指令修改系统设置总结 操作 ubuntu系统自带的英文环境,个人觉得用起来不方便。改掉吧。换成中文 指令修改 参考了一些博客的解决方式 ctrlartT 打开终端。 sudo apt-get install language-pack-zh-hans 输入下载汉化包的指令。 但是&…

MATLAB的rvctools工具箱熟悉运动学【机械臂机器人示例】

1、rvctools下载安装 rvctools下载地址:rvctools下载 截图如下,点击红色箭头指示的“Download Shared Folder” 即可下载 下载之后进行解压,解压到D:\MATLAB\toolbox这个工具箱目录,这个安装路径根据自己的情况来选择&#xff0c…

jquery学习的文档

jquery文档 $(document.body).css( "background", "black" ); $(myForm.elements).hide()$("<div>", {class: "test",text: "Click me!",click: function(){$(this).toggleClass("test");} }).appendTo(&q…

OSG编程指南<三>:利用Cmake+VS2019+OSG3.6.5编译osgVerse

目前osgearth的ralease版本和debugx64都已经编译过了并且自测可用&#xff0c;放到资源里osgearth下载&#xff0c;供需要的朋友下载参考。环境配置&#xff1a;win10VS2017OSG3.6.4OSGEarth2.10.2&#xff0c; 1、配置OSG环境 编译好osg&#xff0c;然后在系统变量中配置如下…

ORACLE 多实例监听的配置

多实例监听的配置 三种情况&#xff1a; 1、一个监听在一个IP一个端口上监听多个实例 2、一个监听在一个IP不同端口上监听多个实例 3、多个监听监听多个实例 情况1&#xff1a; listener.ora文件&#xff1a; # listener.ora Network Configuration File: E:\app\…

risc-v异常处理

异常与中断的关系 中断和异常都为异常&#xff0c;分为&#xff1a; 同步异常&#xff1a;IO&#xff0c;illegal, page fault&#xff0c;miss_aligh 等来自处理器内部的发生的异常。异步异常&#xff08;中断&#xff09;&#xff1a;鼠标&#xff0c;键盘&#xff0c;Time…

javascript 运算符

javascript 运算符 目录 javascript 运算符 一、算术运算符 1、自增运算符 2、自减运算符 二、比较运算符 三、赋值运算符 四、逻辑运算符 五、条件运算符 疑难解答&#xff1a; 这一节&#xff0c;我们来介绍JavaScript的运算符。运算符是完成一系列操作的符号&…

常用连接池的使用(jdbc)java 连接数据库

C3P0 导入依赖 <!-- https://mvnrepository.com/artifact/c3p0/c3p0 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><!-- https://mvnrepository.c…

Rocket架构

NameServer&#xff1a;作为注册中心&#xff0c;提供路由注册、路由踢出、路由发现功能&#xff0c;舍弃强一致&#xff0c;保证高可用&#xff0c;集群中各个节点不会实时通讯&#xff0c;其中一个节点下线之后&#xff0c;会提供另外一个节点保证路由功能。 Rocket mq name…

基于Python获取亚马逊的评论信息的处理

文章目录 一、分析亚马逊的评论请求二、获取亚马逊评论的内容三、亚马逊评论信息的处理四、代码整合4.1 代理设置4.2 while循环翻页 总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具…

力扣hot100 和为 K 的子数组 前缀和

&#x1f468;‍&#x1f3eb; 题目地址 &#x1f37b; AC code class Solution {public int subarraySum(int[] nums, int k){int ans 0;int n nums.length;int[] s new int[n 1];// 前缀和s[0] 0;s[1] nums[0];for (int i 2; i < n; i)s[i] s[i - 1] nums[i - 1…

函数重载记录

重载 函数重载&#xff08;Function Overloading&#xff09;是指在同一作用域内&#xff0c;可以定义多个名称相同但参数列表&#xff08;参数类型、参数个数或参数顺序&#xff09;不同的函数。编译器会根据调用时提供的参数类型和个数来判断应该调用哪个函数。 条件 函数…

C#-基础及扩展合集(持续更新)

一、基础 Ⅰ 关键字 1、record record&#xff08;记录&#xff09;&#xff0c;编译器会在后台创建一个类。支持类似于结构的值定义&#xff0c;但被实现为一个类&#xff0c;方便创建不可变类型&#xff0c;成员在初始化后不能再被改变 &#xff08;C#9新增&#xff09; …

七牛云1024创建节-赛后有感

距离比赛结束已经过去快半个月时间&#xff0c;七牛云又发起了有奖征文的活动&#xff0c;正好借此机会记录一下自己参加这次比赛的经历&#xff0c;感受和一些比赛的心得。 如何了解到的比赛信息 其实我很早就开始关注七牛云了&#xff0c;最早是在今年二三月的时候&#xf…

JavaScript的输入和输出介绍与说明

JavaScript的输入和输出介绍与说明 概述 JavaScript 作为一种编程语言&#xff0c;其核心规范&#xff08;ECMAScript&#xff09;不直接提供输入和输出功能&#xff0c;或者说其核心规范&#xff08;ECMAScript部分&#xff09;不包含处理输入和输出的内置机制&#xff0c;在…

PostgreSQL + SQL Server = WiltonDB

WiltonDB 是一个基于 PostgreSQL 的开源数据库&#xff0c;通过 Babelfish 插件支持 Microsoft SQL Server 协议以及 T-SQL 语句。 Babelfish 是亚马逊提供的一个开源项目&#xff0c;使得 PostgreSQL 数据库同时具有 Microsoft SQL Server 数据查询和处理的能力。Babelfish 可…

如何提高学生的课堂参与度

提高学生的课堂参与度是让许多教师头疼的问题。不过通过采取一些简单的方法&#xff0c;就可以让学生更积极的参与课堂活动。那么&#xff0c;这些方法是什么呢&#xff1f; 激发学生的兴趣 学生如果对课堂内容感兴趣&#xff0c;他们就会更加积极地参与其中。教师可以通过使用…