Linux-Vim

一、Vim 配置

​ vim界面打开以后很丑就不提了,关键有很多基本功能没有办法实现,所以需要自己配置,如果是linux系统,那么应该找到

/usr/share/vim/.vimrc

​ 如果是windows装完git以后会自动一个vim,此时应该找到

Git\etc\vimrc

​ 打开这个文件以后,进行以下配置

"语法高亮"
syntax on
"显示行号"
set number
"设置tab缩进"
set tabstop=4
set softtabstop=4
set shiftwidth=4
"自动缩颈"
set autoindent
set cindent
"显示匹配括号"
set showmatch
set matchtime=1
"设置没有备份文件"
set nobackup
set noswapfile
"括号自动补全"
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
	if getline('.')[col('.') - 1] == a:char
		return "\<Right>"
	else
		return a:char
	endif
endfunction
filetype plugin indent on 

二、Vim 操作

2.1 总论

​ 个人感觉Vim太神奇了,但是我确实使用的不太舒服,虽然可以完全脱离鼠标办公了,但是功能键和编辑模式的完全分离,还是让人感觉到很不舒服。而且因为我现在也不需要那么多的功能,所以很多功能用的是真的很不习惯。所以只是在这里简单记录一下。

​ Vim 会涉及到很多个模式,但是我个人感觉模式之间并不是完全平等的关系,显然最开始进入的 Normal 模式为主模式,而其他模式就类似于卧房之于客厅,是从属关系,我们对文本的编辑主要依赖 Normal 模式。这也是我用不习惯 Vim 的原因。因为我没有很多的功能需求,我敲代码一个一个敲,用到的功能无非是复制粘贴,就好像有人买了台游戏机,却不打游戏一样,纯属浪费。所以为了符合 Vim的设计思想,我不打算一个模式一个模式的介绍,而是以功能分类进行介绍

模式功能
Normal就是初始模式,在这个模式下,所有的按键都是功能按键
Command命令行模式,输入“:”后进入,在这个模式下可以输入各种命令,一般是文件操作或者是查找替换
Insert编辑模式,输入“a,i,o”进入,就是所谓的编辑模式,可以码字的那种
Visual可视化模式,输入“v”进入,就是可以选中一些字符,类似于复制粘贴之前要选中目标的操作

​ 此外,在Normal模式下输入的功能键,会在右下角显示,我一开始一直以为没有显示(图里输入了z)

在这里插入图片描述

2.2 进入编辑模式

  • 朴素进入:按 a 或者 i 都可进入,按a是在光标后插入,按i是在光标前插入,所以应该按a
  • 另起一行以后进入:按 o 进入

2.3 文件操作

​ 这些操作都需要进入命令行模式后进行

  • w:保存
  • q:退出
  • wq:保存后退出,但是因为还需要打一个:,所以不太方便,可以在Normal模式下用ZZ代替
  • saveas + filename:另存为

2.4 撤销 / 恢复

  • u:撤销
  • Ctrl + r:恢复

2.5 选中

选中操作都需要在可视化模式下进行,通过光标的移动进行配合

  • o:重新定位起始光标

​ 有三种进入块操作的方式:

按键意义
v字符选择,会将光标经过的地方反白选择
V行选择,会将光标经过的行反白选择
Ctrl + v可视区块,可以用矩形的方式选择数据(就像鼠标的框选一样)

2.6 复制/粘贴/删除

  • x:删除(准确是剪切)光标后的一个字符
  • y:复制选中的内容(包括可视块中的数据)
  • yy:复制当前行
  • 行数 + yy:从当前行开始赋值指定的行数
  • y + 光标移动操作:复制当前行到光标移动行中的所有内容,比如说 ygg 就是赋值从当前行到文首的内容
  • dd:删除(准确是剪切)一行,下一行会自动上移
  • 行数 + dd:删除光标向下的 n 行
  • d + 光标移动操作:删除当前行到光标移动行中的所有内容,比如说 d10G 就是删除从当前行到第十行所有内容
  • p:粘贴,内容可以来自复制,也可以来自剪切

​ 从2.5、2.6两节可以看出,稍微复杂一点,功能强大一点的命令都是与光标的移动结合在一起的,可以说光标的移动构成了指令的执行范围。还有一种功能拓展方法就是 n + 操作表示一种重复操作。

2.7 查找替换

  • 替换:
    • :s/要替换的关键词/替换后的关键词:替换光标所在行第一个
    • :s/要替换的关键词/替换后的关键词/g:替换光标所在行所有
    • :%s/要替换的关键词/替换后的关键词:替换全行第一个
    • :%s/要替换的关键词/替换后的关键词/g:替换全行所有
  • 查找:直接在命令模式下输入 /查找内容 即可
  • n:表示向下再次执行查找内容
  • N:表示向上再次执行查找内容

2.8 光标移动

  • 0:将光标移动到行首
  • gg:是跳转回开头(感觉多余记这个,用 1G 代替挺好的)
  • G命令是区分大小写的):移到最后一行
  • 行号+G:移到指定行
  • w:按单词向后移动光标
  • b:按单词向前移动光标

2.9 多文件编辑

  • vim filename1 filename2 …… filenamen :在bash中输入这种命令,就可以同时打开多个文件

  • n:可用于向下切换文件。

  • N:可用于向上切换文件。

  • :files:提供一个打开的文件目录

2.10 多窗口

  • :sp filename:打开一个内容是filename的文件
  • 先按Ctrl + w 可以松手按 up:移动到下方窗口
  • 先按Ctrl + w 可以松手按 down:移动到上方窗口

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

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

相关文章

电子招标采购系统—企业战略布局下的采购寻源

​ 智慧寻源 多策略、多场景寻源&#xff0c;多种看板让寻源过程全程可监控&#xff0c;根据不同采购场景&#xff0c;采取不同寻源策略&#xff0c; 实现采购寻源线上化管控&#xff1b;同时支持公域和私域寻源。 询价比价 全程线上询比价&#xff0c;信息公开透明&#xff…

vue + table原生实现表格单元列列宽可重置

const tableMixin {data() {return {dragState: {}, // 记录子表的列宽移动的一些数值dragging: false // 子表是否在重置列宽}},methods: {handleMouseMove(event) {let target event.targetwhile (target && target.tagName ! TH) {target target.parentNode}if (…

算法竞赛ICPC、CCPC、NIO、蓝桥杯、天梯赛

算法竞赛前言一、为什么学习算法竞赛二、学习算法的阶段三、算法竞赛具体学习内容1、基础数据结构1.1、链表1.1.1、动态链表1.1.2、静态链表1.1.3、STL list1.2、队列1.2.1、STL queue1.2.2、手写循环队列1.2.3、双端队列和单调队列1.2.4、优先队列1.3、栈1.3.1、STL stack1.3.…

23 - x的平方根,快速幂,超级次方

文章目录1. x的平方根2. 快速幂3. 超级次方1. x的平方根 二分查找 class Solution { public:int mySqrt(int x) {int left 1, right x;while(left < right){int mid left (right - left) / 2;if(mid > x / mid){right mid - 1;}else if(mid < x / mid){left mi…

OpenShift 4 - Red Hat 是如何对容器镜像的安全风险进行评估分级的

《OpenShift / RHEL / DevSecOps 汇总目录》 文章目录RedHat 对 CVE 的风险级别的评级通用漏洞评分系统 CVSS红帽严重性分级RedHat 对容器镜像的整体风险的分级云原生应用的运行载体是容器镜像&#xff0c;因此容器镜像的安全便是云原生应用安全的关键因素。为此&#xff0c;Re…

联合解决方案|亚信科技AntDB携手蓝凌软件,助推企业数字化办公转型升级

随着企业数字化转型的深入&#xff0c;企业对于协同办公、移动门户、数字运营、智能客服等方面的需求越来越高&#xff0c;数智化正成为催生新动能和新优势的关键力量。数字化的办公平台可以帮助企业实现各类信息、流程的集中化、数字化和智能化管理&#xff0c;为企业管理者提…

老板,你的绩效管理该升级了!

中小企业的绩效考核&#xff0c;一直是一个备受关注的话题。虽然传统的绩效考核理论已经非常成熟&#xff0c;但是在实际应用中&#xff0c;我们往往会遇到各种各样的问题。因此&#xff0c;在选择绩效考核工具和方法时&#xff0c;我们应该注重实用性&#xff0c;不断探索新的…

32位单片机MM32G0140免费申请样品及开发板

灵动微MM32G系列MCU搭载ArmCortex-M0或安谋科技“星辰”STAR-MC1处理器&#xff0c;率先推出的产品支持64KB到128KB Flash存储范围&#xff0c;提供从20脚到64脚封装选项&#xff0c;适用于广泛的智能工业与电机&#xff0c;物联网&#xff0c;智能家居和消费类等应用。其中&am…

比亚迪车载Android开发岗三面经历~

前言 首先&#xff0c;我想说一下我为什么会想去比亚迪这样的车企做车载Android开发。我是一名有5年经验的Android开发工程师&#xff0c;之前一直在互联网软件公司工作&#xff0c;做过移动端App和IoT产品的开发。但我一直对汽车领域很感兴趣&#xff0c;也希望自己的技术能应…

【python+requests】接口自动化测试

这两天一直在找直接用python做接口自动化的方法&#xff0c;在网上也搜了一些博客参考&#xff0c;今天自己动手试了一下。 一、整体结构 上图是项目的目录结构&#xff0c;下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类&#xff0c;比如数据库sql…

前端算法codewhy第一章:队列

目录 认识队列 生活中的队列 开发中队列的应用 队列类的创建 队列的常见操作 击鼓传花 import ArrayQueue from "./01_实现队列结构Queue";function hotPotato(names: string[], num: number): number {if (names.length 0) return -1;// 1.创建队列结构const queue…

数据库安装与使用、mysql、sqlite、mongodb

一、MongoDB MongoDB Server 安装 优秀文章&#xff1a; link1 link2 MongoDB 是一个文档数据库&#xff0c;旨在简化开发和扩展。 下载 官网(社区版) &#xff1a;https://www.mongodb.com/try/download/community 下载完后一路安装即可。 添加环境变量 开启 mongodb服务…

[Linux]环境变量

一.什么是环境变量 为了满足不同的运行场景&#xff0c;操作系统预先设置了一大批全局变量&#xff0c;这种可以指定操作系统运行环境的变量就是环境变量。 我们平常使用的指令本质上也是用C语言实现的一个个小程序&#xff0c;但是我们在执行我们自己的可执行程序时往往是类…

go调用docker远程API(二)-docker API 的容器操作

文章目录1 获取容器列表2 查看指定容器信息3. 查看容器日志4 创建容器4.1 简单使用4.1.1 语法4.1.2 完整示例4.2 端口映射4.2.1 语法4.2.2 完整示例4.3 挂载本机目录/文件4.3.1 语法4.3.2 完整代码5. 启动容器6 停止容器7 删除&#xff08;已停止的&#xff09;容器8 进入容器执…

线程池的7种创建方式

文章目录普通方式创建线程存在的问题什么是线程池线程池的好处线程池设计思路线程池相关类的继承关系线程池的创建方式固定容量线程池——FixedThreadPool相关构造方法示例运行结果缓存线程池——CachedThreadPool相关构造方法示例运行结果单线程线程池——SingleThreadExecuto…

关于国产化系统银河麒麟(Kylin)的问题记录--持续更新

kylin 镜像 &#xff1a; Kylin-Server-10-SP2-x86-Release-Build09-20210524 Kylin-Server-10-SP1-Release-Build20-20210518-x86_64 1.ansible 模块无法使用yum 报错&#xff1a;"msg": "The Python 2 bindings for rpm are needed for this module. If you r…

Dart语言操作符?和!的用法

一.基本使用 1. ? 操作符跟在类型后面&#xff0c;表示当前变量可为null。 int a null; //这句代码在有空安全时&#xff0c;编译会提示错误如果想给一个变量赋值null要如何处理呢&#xff1f;只需要在类型 后面添加操作符&#xff1f;即可&#xff0c;eg: int? a null…

UWB高精度定位系统源码,工业安全定位系统源码

基于VueSpring boot前后端分离架构开发的一套UWB高精度定位系统源码。有演示。 文末获取联系 系统采用UWB高精度定位技术&#xff0c;可实现厘米级别定位。UWB作为一种高速率、低功耗、高容量的新兴无线局域定位技术&#xff0c;目前应用主要聚焦在室内外精确定位。在工业自动化…

spring boot 实现根据用户名查找用户功能

目录 1、UserEnetity类 2、UserMapper类 3、UserService类 4、UserController类 5、postman测试结果 为了实现根据用户名查询用户功能&#xff0c;我们需要在spring boot框架当中编写一下几个类&#xff1a; 1、UserEnetity类 它是根据数据库表的实体类&#xff0c;用于…

Downie 4 4.6.13 MAC上最好的一款视频下载工具

Downie for Mac 简介 Downie是Mac下一个简单的下载管理器&#xff0c;可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们。 Downie 4 Downie 4 for Mac Downie 4 for Mac软件特点 支持许多站点 -当前支持1000多个不同的站点&…