Linux文本编辑器vim使用和配置详解

vim介绍

​ vim是Linux的一款文本编辑器,可以用来编辑代码,而且支持语法高亮,还可以进行一系列配置使vim更多样化。也可以运行于windows,mac os上。

​ vim有多种模式,但目前我们只介绍绝大多数场景用的到的模式,也就是命令模式,插入模式和底行模式,其他模式以后用到了会介绍。

  • 正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

  • 插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

  • 末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模
式。

要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

vim的基本操作

  • 在命令行输入vim 文件名后就会进入vim全屏幕编辑画面,进入vim后处于正常模式,想要编辑文本需要切换到插入模式

vim 文件名 n:打开文件并且让光标直接跳转到第n行

  • 正常模式切换到插入模式
  • 输入a(光标会跳转到下一个位置)
  • 输入i (光标会在当前位置)
  • 输入o(光标会跳转到下一行)
  • 插入模式末行模式切换到正常模式需要按esc
  • 正常模式切换到末行模式需要按shift + ;,也就是:
  • 退出vim需要进入末行模式
  • 输入w (保存当前文件)
  • 输入wq (保存当前文件并且退出)
  • 输入q! (不保存当前文件并且强制退出)
  • 插入模式末行模式不能互相切换
  • 末行模式下的一些指令
  • set nu/nonu:显示行号
  • !cmd:在不退出vim的情况下进行查看,编译,运行等动作
  • /关键字:搜索关键字,n表示下一个

​ 一下是一图流:

image-20231104115943892

注意,如果在vim界面时直接关闭XShell会生成一个隐藏的临时文件文件名.swp,以后再vim这个文件时会提示你,不想提示删除这个隐藏文件即可

vim命令模式指令集

记住以下操作都是在vim的命令模式下才能有效!

  • 光标的操作
  • hjkl:分别是让光标往 左/下/上/右 移动
  • gg:定位代码第一行
  • n+shift+g:定位代码第n行,没有n就是最后一行
  • shift+6(^):移动到当前行的开始
  • shift+4($):移动到当前行的结尾
  • w:以单词为单位,向后移动,支持跨行
  • b:以单词为单位,向前移动,支持跨行
  • e:光标跳到下个单词的词尾
  • 复制
  • n+yy:复制包含当前行的n行到缓冲区,没有n就是1行
  • n+p:粘贴n次缓冲区的内容到当前行之后,没有n就是粘贴1次
  • n+yw:复制光标开始n个单词到缓冲区,没有n就是1个
  • 删除
  • n+dd:从当前行开始剪切n行,没有n就是1行,剪切也相当于删除
  • n+x:向后删除n个字符,如果没有n就是1个
  • n+shift+x:向前删除n个字符,如果没有n就是1个
  • 替换
  • n+r:替换光标所在处的字符,或者n个字符
  • shift+'`':可以让字母在大小写之间转换
  • shift+r:进入替换模式(esc退回命令模式),替换光标所到之处的字符,直到按下esc为止
  • 撤销上一次操作
  • u:和windows的ctrl+z功能一样,撤销上一次操作
  • ctrl+r:撤销的恢复

不小心删除了一段代码用u撤回,代码就回来了,然后用ctrl+r撤回了我刚才的撤回,所以代码又回到了删除的时候,左右横跳😄

  • 查找
  • shift+3(#):查找同名单词,n单次跳转

视图模式

命令模式下输入ctrl+v进入视图模式进行批量化注释:

  1. 通过jk进行光标上下移动选中区域
  2. 输入shift+i进入插入模式
  3. 输入//
  4. esc即可完成注释

​ 批量化删除注释:

  1. ctrl+v进入视图模式
  2. hjkl进行光标上下移动选中区域
  3. 输入d完成删除

vim的其他应用

  • vim打开一个不存在的文件并且保存退出就会创建这个文件
  • vim多文件编辑
  • 底行模式vs+文件名:就可以多开文件

image-20231104141813152

  • 无论打开多少文件,光标只有一个,光标在一个区域就表示当前正在编辑哪一个文件。在文件之间切换光标是ctrl+ww

vim简单配置

​ 首先vim在启动的时候会自动扫描当前用户家目录下的vimrc文件,让.vimrc文件里的选项生效。vim配置实际上就是向.vimrc文件里添加更多的配置选项。

​ 配置vim:

  1. 首先输入cd ~进入当前用户家目录
  2. 输入ls -al看看有没有.vimrc文件,如果没有就创建一个
  3. 百度搜索vim配置,就可以把别人的配置复制添加到.vimrc文件里,就完成配置啦

​ 或者直接下载别人已经配置好的.vimrc然后拷贝到我们的家目录即可。

这里我推荐点我这个网址的vim配置,用普通账户在前面加上sudo运行一下代码即可配置完成,放心没有安全问题!(下面是成果预览)

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

概览

sudo添加用户信任列表

​ 如果用户没有被加入到sudo用户白名单是用不了sudo指令的,所以这里我们来演示如何添加用户到信任列表里。首先需要登录root账号

  1. vim /etc/sudoers进入sudoers文件

往下翻直到看见root ALL=(ALL) ALL为止

image-20231104145651489

然后在复制root ALL=(ALL) ALL,在下面粘贴,把root改为自己用户的名字即可,记得底行模式输入wq!退出(我的用户名字是normal)

然后你就可以使用sudo了,试试去运行我上面写的代码自动化配置vim吧😊

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

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

相关文章

SpringBoot整合数据库版本管理工具Liquibase,赶紧整起来!

SpringBoot整合数据库版本管理工具Liquibase 背景一、什么是数据库版本管理工具?数据库版本管理工具主要特性什么是数据库版本管理工具Flyway和Liquibase对比及选型 二、Liquibase整合步骤1.引入pom依赖2.配置application.yml3.新建master.xml(用于配置你…

什么是 DevOps

DevOps是一套融合软件开发(Dev)和 IT 运营(Ops)的实践,旨在缩短应用程序开发周期并确保以高软件质量持续交付,通过采用 DevOps 实践,您可以帮助组织更可靠、更快速、更高效地交付软件。 什么是…

pytorch 中 nn.Conv2d 解释

1. pytorch nn.Con2d 中填充模式 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_mode‘zeros’, deviceNone, dtypeNone) 1.1 padding 参数的含义 首先 ,padd N, 代表的是 分别在 上下&…

Android Studio布局

线性布局 水平或竖直排列子元素的布局容器 相对布局 可针对容器内每个子元素设置相对位置(相对于父容器或同级子元素的位置) 网格布局 找了下面这篇文章连接可以参考(不再赘述) GridLayout(网格布局) | 菜鸟教程 (runoob.com) …

零基础搭建Nextcloud私有云盘并通过内网穿透实现远程访问

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

Apache HttpClient库编写的Scala程序

Apache HttpClient库编写的Scala下载器程序,用于下载图片。代码如下: import org.apache.http.HttpHost import org.apache.http.client.HttpClients import org.apache.http.client.methods.HttpHead import org.apache.http.impl.client.CloseableHtt…

【Solidity】Remix在线环境及钱包申请

好久没有学习区块链方面的知识了,目前通过自学大致掌握了Fabric联盟链的搭建,链码编写、部署,api调用,可以独立开发出一些基于fabric的应用,感觉开发出去中心化的应用还是很有意思的,因为他与之前开发的ssm…

Android Studio的Java项目种运行main()的方法

首先随便在项目里面建一个类 public class TestSocket {public static void main(String[] args) {System.out.println("hahah");}}直接运行时会直接报错的 在项目的 .idea 添加代码 <option name"delegatedBuild" value"false"/> 再…

微信小程序获取剪切板的内容到输入框中

xml代码 <navigation-bar title"Weixin" back"{{false}}" color"black" background"#FFF"></navigation-bar> <view><input placeholder"请输入内容" name"content" type"text" …

蓝桥杯每日一题2023.11.2

题目描述 等差素数列 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题我们需要求出最小的公差并且长度为10&#xff0c; 1.确保序列开始为素数 2.确定枚举的个数 注意&#xff1a;序列中数只是d的变化&#xff0c;可以通过此计算将开始数字后9个数字都计算出来&#xff0c;d是…

[极客大挑战 2019]Knife 1(两种解法)

题目环境&#xff1a; 这道题主要考察中国菜刀和中国蚁剑的使用方法 以及对PHP一句话木马的理解 咱们先了解一下PHP一句话木马&#xff0c;好吗&#xff1f; **eval($_POST["Syc"]);** **eval是PHP代码执行函数&#xff0c;**把字符串按照 PHP 代码来执行。 $_POST P…

[Machine Learning][Part 8]神经网络的学习训练过程

目录 训练过程 一、建立模型&#xff1a; 二、建立损失函数 J(w,b): 三、寻找最小损失函数的(w,b)组合 为什么需要激活函数 激活函数种类 二分法逻辑回归模型 线性回归模型 回归模型 训练过程 一、建立模型&#xff1a; 根据需求建立模型&#xff0c;从前面神经网络的…