【linux】linux中vim/vi (linux基本开发工具)

news2024/9/25 11:13:58

  •  本期主题:linux中vim/vi的使用和介绍。
  • 博客主页:小峰同学
  • 分享小编的在Linux中学习到的知识和遇到的问题
  • 小编的能力有限,出现错误希望大家不吝赐

 

目录

🍁vim键盘图

🍁vim基本概念

🍁vim的基本操作

🍁vim命令模式命令集

🍁vim末行模式命令集

🍁vim简单配置


🍁vim键盘图

这是vim/vi的键盘图,基本的一些操作,上面都标识的比较清晰。

🍁vim基本概念

  • ·vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。
  • 我们讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和 底行模式(last line mode)。

各模式的功能区分如下:

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

基本的三种模式之间的相互转换:

🍁vim的基本操作

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

  •  vim test.c  用vim 打开test.c
  • 进入之后是在正常模式(命令模式)下。

进入:

 命令模式界面:

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

  • a:向后退一个字符开始输入。
  • i:当前位置开始输入。
  • o:另起一行,开始输入。

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

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

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

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

退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」

  • w :保存当前文件。
  • wq :存盘并退出vim。
  • q! :不存盘强制退出vim。
  • w!:强制退出。
  • wq!:强制写入并退出。有时候我们在修改系统配置文件的时候就要用到。

🍁vim命令模式命令集

命令模式的意义归根结底就是利用命令代替鼠标操作,运用命令来提高编辑效率。

切换到插入模式

  • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件。
  • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字。
  • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
  • 按「O」进入插入模式后,是插入新的上一行,从行首开始输入文字。

光标移动

  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
  • 如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!

 

  • 按「 $ 」:移动到光标所在行的“行尾”
  • 按「^」:移动到光标所在行的“行首”
  • 按「w」:光标跳到下个字的开头,也支持#w。
  • 按「e」:光标跳到下个字的字尾
  • 按「b」:光标回到上个字的开头
  • 按「#l」:光标移到该行的第#个位置,如:5l,56l
  • 按[gg]:进入到文本开始
  • 按[shift+g]:进入文本末端
  • 按「ctrl」+「b」:屏幕往“后”移动一页
  • 按「ctrl」+「f」:屏幕往“前”移动一页
  • 按「ctrl」+「u」:屏幕往“后”移动半页
  • 按「ctrl」+「d」:屏幕往“前”移动半页
  • [n+shift+g]:跳转光标到第 n 行。

删除文字

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

注意:配合p使用就是剪切操作所以删除就是删除到缓冲区。

复制

  • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  • 「#yw」:复制#个字到缓冲区
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  • 「p」:将缓冲区内的字符贴到光标所在位置。
  • 「#p」:#次粘贴。[6p] 粘贴6次。

注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能

撤销上一次操作

  • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。(撤销)
  • 「ctrl + r」: 撤销的恢复。取消u操作。

替换

  • 「r」:替换光标所在处的字符。
  • 「#r」:将后面#个字符全部替换,成同一个字符。例如:5r+【字符】,就是讲从光标开始向后5个字符全部替换为输入的字符。
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。其实就是进入替换模式(批量化替换)。
  • 「shift+ ~」:自动大小写切换。按一次切换一个,长按切换一行。

 更改

  • 「cw」:更改光标所在处的字到字尾处。
  • 「c#w」:例如,「c3w」表示更改3个字。

注意:这里是字,指的是单词,不是字符。也是直接进入插入模式。进行修改。

🍁vim末行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式

调出行号和取消行号

  • 列出行号「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
  • 取消行号「set nonu」: 输入「set nonu」后,行号会消失。

跳到文件中的某一行

  • 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

分屏操作

  • vs  test2.c 会再次打开一个文件,分屏操作。(无论分多少个屏幕,光标在那个屏幕,就是操作那个屏幕。
  • ctrl+ww 在各个屏幕下切换光标。(在命令模式下,不在底行模式)。

注意:假如我们现在要退出,要退出那个文件,直接光标在那个文件中,进入底行模式 wq 即可。(光标在那个屏幕就操作那个屏幕)。

 底行模式下执行linux命令

  • !【linux命令】:直接在底行模式下执行linux命令。按 任意键 退回到vim页面。

 全局搜索替换

 

 

🍁vim简单配置

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。这个是全局的vim配置。
  • 虽然每个用户,用的是同一个vim程序,但是,大家可以使用不同的vim配置。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下。
  • 通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
  • 打开自己目录下的.vimrc文件,执行 vim .vimrc 。写入命令就可以了。
  • vim的基本配置修改自己的 ".vimrc" 文件,root用户也有自己的 ”.vimrc” 文件。不要动不属于自己的配置文件。
  • 配置的指令需要我们自己去网上查找。一般很多帖子都会讲的很清楚。直接去百度vim配置大全。

 

 这就是  vim 的基本配置,就是给自己家目录下的 “.vimrc” 文件写入配置指令。

vim 的一键配置,就是运用别人写好的脚本。直接配置。

在gtiee上 有一个项目,直接搜索:vimforcpp 下面有一个链接,直接拷贝下来,一键配置。(注意只是支持 Centos7 x86_64 环境。

找到下面的链接即可:

完成后再次打开 vim test.c文件就可以看到 配置好的文件。

关于什么首行缩进,语法高亮都会配置好,也可以自己打开  .vimrc文件 修改配置。

 我给大家找了一篇文章,可以看看,学习vim配置的更多知识。

 拓展阅读。

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

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

相关文章

Python使用库(二)

Python使用库(二) 第三方库 认识第三方库 第三方库就是别人已经实现好了的库, 我们可以拿过来直接使用. 虽然标准库已经很强大了, 但是终究是有限的. 而第三方库可以视为是集合了全世界 Python 程序猿的智慧, 可以说是几乎无穷无尽. 问题来了, 当我们…

Linux驱动入门-最简单字符设备驱动(基于pc ubuntu)

一.字符设备驱动概念 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI,LCD 等等都是字符设备&#xff0…

公共管理老师赴英国G5名校-伦敦大学学院CSC公派访学

CSC青年骨干教师项目的实施院校一般都要求申请人提前上报邀请函等申请材料,以进行校内遴选。为提升竞争优势,A老师希望能获得英国名校的邀请函。最终我们为其申请到英国G5名校之一的伦敦大学学院,凭借该邀请函,A老师顺利通过了本校…

【2022年终总结】勇敢追梦,去和人生博弈

目录序言刚开始的1月松懈的2月忙碌的3月迷茫的4月开源项目的5月入职汇报的6月7月8月9月假期过后的10月至关重要的11月最后冲刺的12月2022年的总结2023年的目标往年回顾序言 在刚刚过完的平安夜和圣诞节之际,同时意味着2022年要画上一个句号。这一周算是比较煎熬的几…

高效的事件处理模式——Reactor、Proactor

IO模型 从理论上说,阻塞IO、IO复用和信号驱动IO都是同步IO模型。因为在这三种IO模型中,IO的读写操作,都是在IO事件发生之后,由应用程序来完成的。而POSIX规范所定义的异步IO模型则不同。对异步IO而言,用户可以直接对I…

ubuntu18.04安装docker和nvidia-docker2

ubuntu18.04安装docker和nvidia-docker 1、卸载旧版本的docker 旧版本的 Docker 被称为 docker、docker.io 或 docker-engine。 如果安装了这些,需要卸载它们: sudo apt-get remove docker docker-engine docker.io containerd runc2、 使用存储库安装…

聊一聊 SQLSERVER 的行不能跨页

一:背景 1. 讲故事 相信有很多朋友在学习 SQLSERVER 的时候都听说过这句话,但大多都是记忆为主,最近在研究 SQLSERVER,所以我们从 底层存储 的角度来深入理解下。 二:理解数据页 1. 数据页的组织 在前面的文章中我…

Vue2学习笔记(二):MVVM模型、数据代理

一、MVVM M(Model): 对应data中的数据 V(View): 也就是模板(template) VM(ViewModel): 对应Vue实例对象 大多数的前端框架都或多或少借鉴了MVVM模型,其中VM可以看做是View与Model中间的桥梁,它协助页面(View)和数据(Model)的展示。 二、数据代理 1.了…

JUC(十一)-线程池-ScheduledThreadPoolExecutor分析

ScheduledThreadPoolExecutor 分析 文章目录ScheduledThreadPoolExecutor 分析一、ScheduledThreadPoolExecutor介绍二、ScheduledThreadPoolExecutor应用2.1 ScheduledThreadPoolExecutor 构造器2.2 ScheduledThreadPoolExecutor 应用代码三、ScheduledThreadPoolExecutor源码…

10多个LearnDash示例和演示:从这些在线教育网站获得灵感!

正在寻找真实的LearnDash示例来激发您自己的电子学习网站的灵感? LearnDash 是最受欢迎的 WordPress LMS 插件之一,约翰霍普金斯大学和 Collibra 等大型组织以及 Yoast 和 ProBlogger 等小型品牌都在使用它。 LearnDash在线教育网站定制 LearnDash是最…

基于FireBeetle 2 ESP32-E开发板的LVGL移植及传感器显示(Arduino+TFT_eSPI+LVGL)

目录项目介绍硬件介绍硬件结构说明LVGL移植综合实现功能展示项目总结👉 【Funpack2-3】基于FireBeetle 2 ESP32-E开发板的LVGL移植及传感器显示 👉 CSDN-工程源文件 👉 Github-KafCoppelia/FireBeetle2_lvgl_sensors 项目介绍 本项目基于Fir…

蓝桥杯寒假集训第三天《灌溉》

没有白走的路,每一步都算数🎈🎈🎈 题目描述: 一个长方形块,在方形块的中间位置有给定的水管,这些水管在单位时间会往上下左右四个方向进行灌溉。问在给定的方块中,一定时间后&#…

PyCharm 发布了新版,支持最新 Python 3.11 和 PyScript 框架

通常而言,使用新潮的或者快速发展的技术,可能会挺有挑战性,你可能得经常阅读文档,才能熟悉新的语法、API 和协议。 PyCharm 2022.2 通过提供对 Python 3.11 的语言特性和新的 PyScript 框架的支持,能够帮助你完成这一…

代码随想录算法训练营day59|503.下一个更大元素II,42. 接雨水

503.下一个更大元素II 503. 下一个更大元素 II - 力扣(LeetCode) 思路:单调栈 1. 单调递增栈;在遍历的过程中模拟走两边nums; class Solution {public int[] nextGreaterElements(int[] nums) {if(numsnull || num…

【MySQL】八,角色管理

创建角色 引入角色的目的是方便管理拥有相同权限的用户。恰当的权限设定,可以确保数据的安全性。 语法 CREATE ROLE role_name[host_name] [,role_name[host_name]]...创建一个经理的角色 create role managerlocalhost;给角色赋予权限 创建角色之后&#xff0…

使用 npm link 测试本地编写的 node 模块 / 引入全局安装的 node 模块

目录 1. npm install VS npm install -g 2. npm install -g 的本质?映射脚本的作用? 3. 如何测试使用未发布的 npm 包?npm link 原理? 4. link 到项目 4.1 全局 link 4.2 解除 link 4.3 link 到项目有两种情况(…

ansible 第二天

要求: 安装并且配置ansible 1)安装和配置ansible以及ansible控制节点server.example.com如下: 2)创建一个名为/home/student/ansible/inventory的静态库存文件如下所示: 2.1)node1 是dev主机组的成员 2.2)node2是test主机组的成员 2.3)node1和…

什么是 Loader、手写 Webpack Loader

目录 1. 什么是 Loader 1.1 Loader 工作原理 1.2 Loader 执行顺序 1.3 内联 Loader 前缀​​​​​​​ 2. 如何开发 Loader 2.1 Loader 长什么样子 2.2 配置本地 Loader 的四种方法 2.2.1 在配置 rules 时,指定 Loader 的绝对路径 2.2.2 在 resolveLoader…

Windows配置万德(Wind)量化接口

原理:wind会在python的第三方库中安装一个属于wind的库 文章目录步骤1:确定python的路径步骤2:配置wind的接口步骤3:检查配置步骤4:使用python提取任意的wind数据步骤1:确定python的路径 如果是默认安装,一般路径是:C:\Users\用户名\Anacond…

磨金石教育摄影技能干货分享|优秀作品欣赏—技巧十足的艺术摄影

想要赏析艺术类的摄影,就得立足于画面身后的意蕴,想作者所想,思作者所思。 这有一定的难度,但也不乏趣味。 今天我们就再来看一组艺术类摄影作品,看看作者如何用高明的技巧表达自己心中的感受吧。 1、江苏省-李玉龙-《…