【Linux】-Linux下的编辑器Vim的模式命令大全及其自主配置方法

目录

1.简单了解vim

2.vim的模式

2.1命令模式

2.2插入模式

2.3底行模式

3.vim各模式下的命令集

3.1正常(命令模式下)

3.1.1光标定位命令

3.1.2 复制粘贴

3.1.3 删除

3.1.4 撤销

3.1.5大小写转换

3.1.6替换

「R」:替换光标所到之处的字符,直到按下「ESC」键为止,这是进入了替换模式,是一个模式(replace)

3.1.7shift=3  高亮查找函数名

3.2 vim插入模式下

3.3vim底行模式下

3.3.2 两个文件对比

vim光标特点:上次退出时光标在那个位置,再次打开光标就在那个位置

3.4 注释模式

4.vim的自主配置

4.1vim的基本配置

4.1.1常用配置

4.1.2 使用插件的方式

4.2自动化配置vim

5.结语


1.简单了解vim

vim本质是linux下的一个编辑器用于写代码,相当于windows中使用文本写代码

vim使用成本比较高,是linux下的一款多模式的编辑器

很早之前使用的是vi,vim更简单,vim是扩展板的vi, 方便进行简单的使用

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且 还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

我们在windows下使用的vs等等编辑器,不仅仅可以运行C语言代码,也可以运行python/java甚至html,这种集合编译、调试、发布等等将这个项目的生命周期包括新建项目,写代码、编译代码、调试代码、发布项目功能集中的环境就是集成编译、运行、调试、发布于一体的我们叫做集成开发环境。方便用户统一操作。

linux下也有图形化操作,不过目前接触都是指令级别的操作。一个一个工具都是独立的

写代码 -----使用vim

编译代码使用gcc

调试代码使用gdb

维护结构和自动化编译使用make/makefile

当我们正常使用vim打开一个文件的时候某认是无法写入内容的,vim某认打开的是命令模式,刚打开时我们输入的内容都会被当成命令,有些命令无效就不变现,有些命令是切换命令触发就可以编写来,这也是常说的“新手偶然性”。

  • 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
  • $ vim test.c
  • 不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文 字。
  • [正常模式]切换至[插入模式]
  • ①输入a
  • ②输入i
  • ③输入o
  • [插入模式]切换至[正常模式]
  • 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可 以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
  • [正常模式]切换至[末行模式]
  • 「shift + ;」, 其实就是输入「:」
  • 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如: :
  • w (保存当前文件)
  •  : wq (输入「wq」,存盘并退出vim)
  • : q! (输入q!,不存盘强制退出vim)

注意:vim异常退出的环,内容会保存在同名的隐藏文件中

2.vim的模式

一共有12种模式:six BASIC modes和six ADDITIONAL modes.

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

上面我们已经简单接触了一下vim,现在我们就来看看这个多模式编辑器的多模式:

模式转换图

2.1命令模式

Vim某认打开的时候的模式

当我们正常使用vim打开一个文件的时候某认是无法写入内容的,vim某认打开的是命令模式,刚打开时我们输入的内容都会被当成命令,有些命令无效就不变现,有些命令是切换命令触发就可以编写来,这也是常说的“新手偶然性”。

2.2插入模式

正常模式进入插入模式:

  • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;

  • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
  • 从插入模式切换为命令模式 按「ESC」键

2.3底行模式

  • [正常模式]切换至[末行模式]
  • 「shift + ;」, 其实就是输入「:」
  • 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如: :
  • w (保存当前文件)
  •  : wq (输入「wq」,存盘并退出vim)
  • : q! (输入q!,不存盘强制退出vim)
  • 从插入模式切换为命令模式 按「ESC」键

注意:vim异常退出的话(网断了,服务器断联等等),vim会对编辑结果进行保存,内容会保存在同名的隐藏文件中,

此时不能直接打开

出现以下选项:

【o】pen read-only  [E]dit anyway  (R)ecover  (D)elete it  (Q) quit (A)bort

选D过后保存退出就可以正常打开了。(把产生异常的临时文件清理掉),有些代码可能会丢失

3.vim各模式下的命令集

3.1正常(命令模式下)

3.1.1光标定位命令

 vim可以直接用键盘上的光标来上下左右移动,老式键盘是没有上下左右方向键的但正规的vim是用

  • 小写英文字母「h」、「j」、「k」、 「l」,分别控制光标左、下、上、右移一格

  • 按「G」:移动到文章的最后
  • 按「 $ 」:移动到光标所在行的“行尾”
  • 按「^」:移动到光标所在行的“行首”
  • 按「w」:光标跳到下个单词的开头
  • 按「e」:光标跳到下个字的字尾
  • 按「b」:光标回到上个单词的开头
  • 按「#l」:光标移到该行的第#个位置,如:5l,56l 按
  • [gg]:进入到文本开始 按
  • [shift+g]:进入文本末端
  • 【按下一个数字 + shiift +g】光标定位到指定的数字行
  • 按「ctrl」+「b」:屏幕往“后”移动一页
  • 按「ctrl」+「f」:屏幕往“前”移动一页
  • 按「ctrl」+「u」:屏幕往“后”移动半页
  • 按「ctrl」+「d」:屏幕往“前”移动半页

3.1.2 复制粘贴

「yy」:复制光标所在行到缓冲区。

数字+yy  :复制光标往下的数字行

「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。

数字+p :实现数字次粘贴,比如5次粘贴

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

「#yw」:复制#个字到缓冲区

3.1.3 删除

「x」:每按一次,删除光标所在位置的一个字符

「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符

「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符

「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符

「dd」:删除光标所在行

「#dd」:从光标所在行开始删除#行

dd hou+p相当于剪切功能

3.1.4 撤销

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回恢复。

「ctrl + r」: 撤销的恢复

3.1.5大小写转换

shift按住不动+~,将光标所在一行小写转大写,也可以大写转小写,按一下可以转换一次。

3.1.6替换

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

【#r】:[20r]+v,将光标所在位置后20个字符替换为v.

「R」:替换光标所到之处的字符,直到按下「ESC」键为止,这是进入了替换模式,是一个模式(replace)

esc回到命令模式,在替换模式中输入的字符会替换原有内容,但是如果按删除键会回复原来的内容。

3.1.7shift=3  高亮查找函数名

配合n 下一个

3.2 vim插入模式下

这个模式下就是代码编写,没有过多命令讲解

3.3vim底行模式下

shift+;进入底行模式(但是要在正常模式下)

wq: 保存内容并退出

有时保存退出没有权限无法保存退出,也有可能文件处于特殊状态无法保存退出,比如:

文件正在被别人打开,或者文件对应的拥有者不是操作者或者root写一些配置文件时,W!强制写入

q!强制退出

【:!comand】可以直接跟shell命令

q退出

甚至可以做到不退出vim进行代码的编译和运行

  • 列出行号 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。 跳到文件中的某一行
  • 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行。
  • 查找字符 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。
  • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「n」会往前寻找到您要的关键字为止。
  • 保存文件 「w」: 在冒号输入字母「w」就可以将文件保存起来
  • 离开vim 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件

3.3.2 两个文件对比

在底层模式下输入vs 文件名,可以打开另外一个文件

绿色的光标在那个位置操作的就是那个文件。

多窗口级别光标移动:ctrl+ww

vim光标特点:上次退出时光标在那个位置,再次打开光标就在那个位置

vim 文件名+行号

进入viM时光标就在指定行

3.4 注释模式

ctrl + v进入 VISUAL BLOCK模式 可进行批量注释

按住上下就可以批量选中

shift +a = a  输入双斜杠//  在按esc就全部注释掉了

ctrl V +上下选择+d  删除注释

4.vim的自主配置

目前使用的还是原生vim,vim打开时会默认读取用户特定的配置文件。

4.1vim的基本配置

进入自己的家目录下查看所有的隐藏文件

配置文件的位置 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下, 通常已经存在一个.vimrc文件,如果不存在,则创建之。 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~ 打开自己目录下的.vimrc文件,执行 vim .vimrc

4.1.1常用配置

设置语法高亮: syntax on

显示行号: set nu

设置缩进的空格数为4: set shiftwidth=4

也可以使用插件进行配置 都要保证上传到了这个指定目录。

4.1.2 使用插件的方式

安装TagList插件,下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到~/.vim/doc, 将解压出来 的plugin下的内容拷贝到~/.vim/plugin 在~/.vimrc 中添加: let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window=1 安装文件浏览器和窗口管理器插件: WinManager 下载winmanager.zip,2.X版本以上的 解压winmanager.zip,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到 ~/.vim/plugin 在~/.vimrc 中添加 let g:winManagerWindowLayout=‘FileExplorer|TagList nmap wm :WMToggle 然后重启vim,打开~/XXX.c或~/XXX.cpp, 在normal状态下输入"wm", 你

4.2自动化配置vim

目前只支持 Centos7 x86_64. 

在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行):

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

 

卸载方法:

在安装了 VimForCpp 的用户下执行:

bash ~/.VimForCpp/uninstall.sh

5.结语

以上就是关于vim的使用及配置,有些东西不是很具体,大家可以多做扩展

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

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

相关文章

鸿蒙(HarmonyOS)Navigation如何实现多场景UI适配?

场景介绍 应用在不同屏幕大小的设备上运行时,往往有不同的UI适配,以聊天应用举例: 在窄屏设备上,联系人和聊天区在多窗口中体现。在宽屏设备上,联系人和聊天区在同一窗口体现。 要做好适配,往往需要开发…

Git相关命令(一)

一、简介 Git 是一个开源的分布式版本控制系统。 当然, git 不会傻傻的把你的每一个版本完整的存储下来,他仅仅会存储每次修改的位置和内容(可持久化),每一次 commit 可以理解为产生一个版本,接下来的版本…

数据结构与算法 顺序表的基本运算

一、实验内容 编写一个程序实现,实现顺序表的各种基本运算(假设顺序表的元素类型为char),并以此为基础设计一个程序完成下列功能: (1)初始化顺序表; (2)采…

开源推荐榜【Sejil一个 .NET带界面的日志管理组件】

Sejil 是一个库,使您能够直接从应用程序捕获、查看和过滤 ASP.net Core 应用程序的日志事件。它支持结构化日志记录、查询以及保存日志事件查询。 开源地址:https://github.com/ZiggyCreatures/FusionCache 使用方法: 安装 Sejil 软件包 do…

鸿蒙HarmonyOS应用开发——跨端迁移

在用户使用设备的过程中,当使用情境发生变化时(例如从室内走到户外或者周围有更适合的设备等),之前使用的设备可能已经不适合继续当前的任务,此时,用户可以选择新的设备来继续当前的任务,原设备…

【前端Vue】Vue3+Pinia小兔鲜电商项目第3篇:静态结构搭建和分类实现,1. 整体结构创建【附代码文档】

Vue3ElementPlusPinia开发小兔鲜电商项目完整教程(附代码资料)主要内容讲述:认识Vue3,使用create-vue搭建Vue3项目1. Vue3组合式API体验,2. Vue3更多的优势,1. 认识create-vue,2. 使用create-vue创建项目,1. setup选项的写法和执行…

v4l2采集视频

Video4Linux2(v4l2)是用于Linux系统的视频设备驱动框架,它允许用户空间应用程序直接与视频设备(如摄像头、视频采集卡等)进行交互。 linux系统下一切皆文件,对视频设备的操作就像对文件的操作一样&#xff…

标题:深入了解 JavaScript 中的字符串分割:遇到 / 和 | 都分割

在 JavaScript 中,处理字符串是一项常见的任务。有时候,我们需要将字符串按照特定的字符进行分割,以提取或操作其中的各个部分。在这篇博客中,我们将深入探讨如何使用 JavaScript 的字符串分割功能,特别是当遇到斜杠 /…

汽车后视镜反射率检测光纤光谱仪:安全驾驶的守护神

在汽车的日常使用中,后视镜扮演着至关重要的角色。它不仅帮助驾驶员观察车辆后方的情况,还确保了行车的安全性。然而,由于各种原因,后视镜的反射率可能会降低,从而影响到驾驶员的视线范围和判断能力。为了解决这一问题…

Reactor 模式全解:实现非阻塞 I/O 多路复用

Reactor网络模式是什么? Reactor网络模式时目前网络最常用的网络模式。如果你使用Netty,那么你在使用Reactor;如果你使用Twisted,那么你子啊使用Reactor;如果你使用netpoll,那么你在使用Reactor。 这里先给出答案:Reactor I/O多…

Python与供应链-2预测误差及指数平滑需求预测模型

主要介绍预测误差和指数平滑模型的相关理论,然后再通过Python的statsmodels封装的指数平滑函数预测需求。 1预测误差 预测误差是指预测结果与预测对象发展变化的真实结果之间的差距。这种误差分为绝对误差和相对误差。绝对误差是预测值与实际观测值的绝对差距,而相对误差则…

Spring学习——什么是循环依赖及其解决方式

文章目录 前言一、什么是循环依赖二、解决思路1、循环依赖分类2、对象初始化步骤及对象分类3、spring是如何解决的4、图解5、三级缓存1、区别2、ObjectFactory是什么 三、源码debug1、spring创建对象过程1、dubug第一步——找到getBean2、dubug第二步——getBean与doGetBean3、…

35.基于SpringBoot + Vue实现的前后端分离-在线考试系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的在线考试系统设计与实现管理工作系统…

Uniapp三种常用提示框

具体参数方法可参考: uniapp交互反馈 uni.showToast(OBJECT) //显示消息提示框。 uni.hideToast() //隐藏消息提示框。 //具体使用 uni.showToast({title: 新增成功,duration: 2000 }); uni.showLoading(OBJECT) //显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提…

区块链安全之DDoS防护的重要性及其实施策略

随着区块链技术的不断发展和广泛应用,其安全问题也日益凸显。其中,分布式拒绝服务(DDoS)攻击是对区块链网络稳定性和效率构成潜在威胁的重要因素之一。本文旨在深入探讨区块链为何需要采取DDoS高防措施,并提出相应的防护策略。 一、区块链面…

毕马威:量子计算成未来3-5年重大挑战

毕马威(KPMG)是一家全球性的专业服务网络,其历史可追溯到19世纪末。作为“四大”会计师事务所之一,毕马威在审计、税务和咨询服务领域享有盛誉。公司在全球范围内拥有多个办事处,服务遍及各个行业,包括金融…

【大数据】Flink学习笔记

认识Flink Docker安装Flink version: "2.1" services:jobmanager:image: flinkexpose:- "6123"ports:- "20010:8081"command: jobmanagerenvironment:- JOB_MANAGER_RPC_ADDRESSjobmanagertaskmanager:image: flinkexpose:- "6121"- …

Visio Viewer for Mac(Visio文件查看工具)

Visio Viewer for Mac是一款专为Mac用户设计的Microsoft Visio文件查看器。它拥有直观易用的用户界面,使得用户可以快速加载和显示Visio文件,无需安装完整的Microsoft Visio软件。 软件下载:Visio Viewer for Mac3.1.0激活版 Visio Viewer fo…

java Web线上网游商品交易平台用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 jsp线上网游商品交易平台是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0…

spring使用内置jetty创建提供http接口服务

1、添加pom文件依赖 <dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-server</artifactId><version>9.4.22.v20191022</version> </dependency> <dependency><groupId>org.eclipse.jetty<…