Linux环境开发工具之vim

前言

上一期我们已经介绍了软件包管理器yum, 已经可以在linux上查找、安装、卸载软件了,本期我们来介绍一下文本编辑器vim。

本期内容介绍

什么是vim

vim的常见的模式以及切换

vim命令模式常见的操作

vim底行模式常见的操作

解决普通用户无法执行sudo问题

vim配置

一、什么是vim?

vim是一款多模式的文本编辑器。

多模式是指他有不同的操作模式,各个模式的功能是不是一样的。我知道的他好像有12种模式!

二、vim常见的模式

vim的常见模式有三种,分别是:命令模式(正常、普通模式)、插入模式底行模式

命令模式

默认一开始进入vim(在命令行输入:vim filename)的那个模式(左下角有"normal一般的"提示)!

作用:允许使用者通过相关的指令,来进行文本的编辑和控制。例如光标移动等

在bash输入vim filename即可进入,此时就是命令模式!

插入模式

通过在命令模式按i\a\o等进入的那个模式(左下角有"insert插入"的提示)!

作用:进行对文本的编辑!

底行模式

在命令模式按shift + ; = :进入的模式(有"command命令"的提示)进入后下面会有 : 和光标等你操作!

作用:文本保存、退出,与shell交互等

三种模式的切换

命令模式切换到插入模式

在命令模式输入: i\o\a

i\o\a的区别:

i进入后光标在上一次的位置(第一次进入在文本内容的第一个字符处)!

o进入后会光标在上一次的行换行到下一行(第一次o进入默认第一行换到第二行!)!

a进入后光标会转移到上一个字符的下一个位置(第一次进入在文本内容的第一个字符处

i进入:

o进入:

a进入:

插入模式切换到命令行模式

直接在插入模式按Esc即可退出到命令模式

命令行模式切换到底行模式

直接在命令行模式按 shift + ; 到底行模式

底行模式切换到命令行模式

直接在底行模式按Esc即可退出到命令模式

底行模式是无法直接进入插入模式的!同样,插入模式也是无法直接进入底行模式的!要想在底行模式进入插入模式,可以先底行到命令,在命令到插入!插入到底行则反之!

三、vim命令模式常见的操作

光标移动

将光标定位到当前行的结尾: shift + 4 = $ 

将光标定位到当前行的开始: shift + 6 = ^

将光标定位到整个文件的最开头:gg

将光标定位到整个文件的最后一行:shift + g = G

将光标定位到任意行: n + shift + g = nG

上、下、左、右 :k、j、h、l 这几个也都支持n(键盘的上下左右也是支持的)

光标以照单词为单位进行后移: w

光标按照单词为单位进行前移: b

光标移动到下一个单词的结尾:e

复制

复制当前行: yy  

连续复制n 行:n + yy

粘贴到当前行的下一行:p

当前行的下一行开始粘贴n行:n + p

撤销:u

对指令撤销(对撤销撤销): ctrl + r

剪切/删除:dd

剪切/删除n行 :n + dd

删除

删除光标后的一个字符(一行内):x

删除光标后的n个字符(一行内):n + x

删除光标前的一个字符(一行内):shift + x

删除光标前的n个字符(一行内):n + shift + x

删除当前行:dd

替换

大小写转换:shift + ` = ~

替换光标所在的字符:r 

替换光标所在的后n个:n + r 

替换模式替换(替换光标所到之处的字符,Esc结束到命令模式):shift + r = R 

注释和去注释

注释:ctrl + v,hjkl, shift + i, //, Esc*2

去注释:ctrl + v, hjkl, //, d(注意在选择时仅仅选择注释//即可)

四、vim底行模式常见的操作

列出行号:set nu

跳转到文件中的某一行:n

搜索字符:/ + 字符 或 ? + 字符

保存:w

退出:q

保存并退出:wq(一般建议在退出vim时wq

强制:!

不退出vim与shell交互:!command

分屏(多文件操作):vs filename

五、解决普通用户无法执行sudo问题

我们以前在权限的时候介绍过,在你执行某个是需要root权限,但是你又是普通用户;你又想让你的指令以root的身份执行时,此时可以利用sudo指令对你的指令赞提权!此时输入你的密码就可以以root的身份执行指令了!但问题我们前面也说了,如果每个普通用户都可以随意sudo的话那岂不是没有必要存在root了,而且也很危险!所以linux默认一般的用户是无法执行sudo的,普通用户要想执行sudo就必须让root把你添加到以前的白名单中!他就是:/etc/sudoers

ls /etc/sudoers/

我们现在介绍了vim可以利用vim让root把你把自己的账户添加到这个文件中(自己没有权限无法添加)

一进去是这样的:

可以在底行模式调出行号:

在100行左右找到这个:

然后: yy 在 p一下, i 进入插入模式,只需要把root换成你普通用户的名字即可!

底行退出vim时此时需要 wq!

ok,这样cp这个普通用户就可以以root的身份执行指令了!!!

六、vim配置

在/etc/ 目录下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
而在每个用户的家目录下,都可以自己建立私有的配置文件,命名为:“ .vimrc ”,如果不存在自己创建。 配置Vim就是对这个文件的内容进行修改!!!

简单的vim配置

 set nu           "在左侧行号 
 set tabstop      "tab 长度设置为 4
 set autoindent   "自动缩进
 set cindent "设置c语言自动对其  
 syntax on  "设置语法高亮
 set shiftwidth=4 "设置缩进的空格数为4

 //....

这有好多的设置,可以上网查询更多的!如果嫌麻烦私信我教你一键生成~!

OK,好兄弟本期分享就到这里,我们下期再见!

结束语:

你我终将上岸,阳光万里!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习300问】40、如何评估一个异常检测系统?

上一篇文章是我学习异常检测系统如何实现的学习笔记,这篇文章接着上文记录几个评价异常检测系统的关键步骤和指标。如果友友们没有看过之前的文章可以点击下面的链接去看看哦! 【机器学习300问】39、高斯分布模型如何实现异常检测?http://t.…

【鸿蒙HarmonyOS开发笔记】通知模块之发布基础类型通知,内含如何将图片变成PixelMap对象

通知简介 应用可以通过通知接口发送通知消息,终端用户可以通过通知栏查看通知内容,也可以点击通知来打开应用。 通知常见的使用场景: 显示接收到的短消息、即时消息等。 显示应用的推送消息,如广告、版本更新等。 显示当前正…

数据库系统概论-第3章 关系数据库标准语言SQL

3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结

Wav2Lip+facefusion通过云GPU实现自定义数字人

1 通过Wav2Lip同步嘴型 这里我是用的云GPU,选择的恒通云,下面是我的套餐信息 比较注意的是选择的镜像必须选择拥有python3.6的镜像,因为Wav2Lip需要的环境就是python3.6 开始进入系统执行下面操作 克隆源码: git clone https:…

【四六级最强四六级通关秘籍】十万字经验贴,浅谈 大学生与大学英语四六级的“爱恨情仇“

大学生与大学英语四六级的"爱恨情仇" 一、、创文初衷 1.1创作目的 亲爱的网友们, 大家好!我最近意识到,尽管英语六级考试对许多大学生来说是一个重要的挑战,但并不是每个人都能找到合适的学习方法和技巧来顺利通过这…

计算机设计大赛 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…

内核移植——开发板的软件抽象(struct machine_desc)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 内核支持什么架构、支持哪款cpu,这是如何确定的?主要是通过机器码来确定的。 内核中定义了一份机器码,uboot也会给内核传递一个机器码。 在内核启动的汇编阶段&…

【呼市经开区建设服务项目水、电能耗监测 数采案例】

实施方案 针对能耗采集中的水、电能源数据采集,因客观因素条件,数据采集方面存在较大难度。大多数国网电表485接口由于封签限制,不能实施采集,不让拆机接线,采集实施存在困难。水量能耗采集,存在类似问题&a…

网络原理(3)——TCP协议

目录 一、连接管理 二、三次握手 1、何为三次握手? 2、三次握手有何意义? 三、四次挥手 三次握手和四次挥手的相似之处和不同之处 (1)相似之处 (2)不同之处 四、TCP的状态 建立连接: 断开…

Fabric.js在vue2中使用

Fabric.js安装 这里我是基于vue来使用的,先安装上Fabric.js npm install fabric 在main.js中 import fabric from fabric Vue.use(fabric);Fabric 提供了 7 种基础形状: fabric.Circle (圆)fabric.Ellipse (椭圆)fabric.Line (线)fabric.Polyline (多条…

GIS学习

匹配查询,先连接两个表,然后在一个表里面查询 合并两个形状 比较好的colormap http://soliton.vm.bytemark.co.uk/pub/cpt-city/views/totp-cpt.html https://docs.gmt-china.org/latest/cpt/builtin-cpt/ 计算坡度时就要捕捉栅格 重分类时也要捕捉栅…

protobuf原理解析-基于protobuf-c实现序列化,反向序列化

1.一个实例 前面介绍了使用protobuf的流程. (1). 定义proto文件来描述需要序列化和反向序列化传输的消息. (2). 借助proto-c,为proto文件生成对应的代码控制文件. (3). 程序借助生成的代码控制文件和protobuf-c动态库的支持实现类…

HarmonyOS如何创建及调用三方库

介绍 本篇主要向开发者展示了在Stage模型中,如何调用已经上架到三方库中心的社区库和项目内创建的本地库。效果图如下: 相关概念 Navigation:一般作为Page页面的根容器,通过属性设置来展示页面的标题、工具栏、菜单。Tabs&#…

win10 配置 oh-my-posh

win10 配置 oh-my-posh 0. 前置1. 安装1.1. 软件1.2. 字体1.3. 激活1.3.1. Git Bash1.3.2. PowerShell 2. 配置2.1. 效果2.2. 说明2.3. 其他2.3.1. 新版PowerShell2.3.2 conda问题 0. 前置 这个东西毕竟是个,命令行美化工具,所以需要先有一个命令行&…

代码随想录算法训练营第60天 | 84.柱状图中最大的矩形

单调栈章节理论基础: https://leetcode.cn/problems/daily-temperatures/ 84.柱状图中最大的矩形 题目链接:https://leetcode.cn/problems/largest-rectangle-in-histogram/description/ 思路: 本题双指针的写法整体思路和42. 接雨水是一…

ubuntu 20.04 Kimera semantic 运行记录

Ubuntu20.04 Kimera Semantic运行记录 Kimera VIO ROS 配置 MIT Kimera-VIO-ROS 安装 mkdir -p Kimera_ws/src cd Kimera_ws catkin init catkin config --cmake-args -DCMAKE_BUILD_TYPERelease -DGTSAM_TANGENT_PREINTEGRATIONOFF catkin config --merge-develcd src git…

《量子十年》报告更新!IBM精研量子计算,助力行业优化转型

近日,IBM商业价值研究院(IBM Institute for Business Value,简称IBV)精心出版了一本引人入胜的报告,《量子十年》第四版。这不仅是一本值得一读的书籍,更是对当前行业发展状况的全面总结和重要补充。 这部由…

Linux | Ubuntu安装pylsl

PYNQ开发中使用pylsl过程记录 操作系统为 Linux pynq 5.15.19-xilinx-v2022.1 #1 SMP PREEMPT Mon Apr 11 17:52:14 UTC 2022 armv7l armv7l armv7l GNU/Linux 使用 pip install pylsl 安装后在导入包的过程中会遇到如下错误: RuntimeError: LSL binary library f…

如何实现跨标签页通讯

什么是跨标签页通讯 同一浏览器,可以打开多个标签页,跨标签页通讯就是,一个标签页能够发消息给另一标签页。 有哪些实现方案 localStorage (window.onstorage事件监听)BroadcastChannel(广播&#xff09…