当前位置: 首页 > news >正文

Linux操作系统的vim常用命令和vim 键盘图

       在vi编辑器的命令模式下,命令的组成格式是:nnc。其中,字符c是命令,nn是整数值,它表示该命令将重复执行nn次,如果不给出重复次数的nn值,则命令将只执行一次。例如,在命令模式下按j键表示光标向下移动1行,而在命令模式下输入10j则表示光标将向下移动10行。显然,这样比单纯移动键盘光标键效率要高。

1、定位光标

由于文件内容的插入、删除和替换等操作都是针对光标所在的字符或行而言的,因此应该熟悉光标移动的命令和方法,并充分利用命令重复执行的次数。

w   将光标移动到下1个单词的第1个字符。

W    将光标移动到后面第2个单词的第1个字符

e或E    将光标移动到下1个单词的最后1个字符

b或B   将光标移动到前1个单词的第1个字符

/string   向后移动光标,并使之停留在字符串string的第一个字符处

?string    向前移动光标,并使之停留在字符串string的第一个字符处

$     将光标移动到本行的最后1个字符上

Ctrl+b   将光标移动到本行的第1个字符上

其中,w或W命令的差别只是在于非空格分割字符上,w命令视非空格分隔字符为单词,而W命令则忽略它。当使用/string或?string命令时,除了光标移动到指定的位置外,还使文件中所有符合字符串string的地方高亮显。

2、插入或添加

无论是插入还是添加,都是向所编辑的文件中加入新的内容,但由于插入可以在光标前或当前行前,添加可以在光标后或当前行后,所以vi提供了多种插入和添加命令:

i   在光标前插入字符

I   在当前行的行头插入字符

a   在光标后添加字符

A   在当前行的行尾添加字符

o    在当前行后添加新行

O   在当前行前添加新行

由于这6个命令都会使vi编辑器从命令模式切换到文本编辑模式下的插入状态,所以当插入或添加完成后,必须按ESC键返回到命令模式下。

3、删除

删除文本文件中的内容,可以按照字符、单词和行为单位进行删除,因此,也有多个删除命令。删除命令执行后将使vi继续处于命令模式下。

x    删除光标所在位置的字符,且光标移动到本行的下1个字符

nx  删除光标所在位置的n个字符

X    删除光标所在位置的前一个字符,且光标停留在原来的字符上

D    删除光标所在位置到行尾的所有字符,且光标停留在本行的行尾

dd     删除光标所在的行,且光标移动到下1行

ndd  从光标位置开始删除 n 行

dw     删除光标所在位置到下一个单词的第一个字符间的所有字符,且光标移动到下一个单词的第一个字符。

4、查找

在文件中查找字符串时,可以向前查找也可以向后查找,因此有两种命令,其格式为:

/expression

?expression

其中,斜杠(/)表示从当前位置开始向后查找,问号(?)表示从当前位置开始向前查找,expression是正则表达式。如果正则表达式是字符串且包含:. ^ $  / ~等特殊字符(元字符),则查找包含这些特殊字符的字符串时,一定要在它们每一个前面加上反斜杠(\)字符表示转义。

查找字符串~/yt-3.1.8,在命令行模式下输入:/\~\/yt-3\.1\.8,注意:要在

每1个标签字符前都要使用转移字符。

5、修改

在vi编辑器中修改文本文件内容的命令主要是删除指定的字符或行并输入新的字符,替换指定的字符或行。

s    删除光标所在位置的字符,且光标移动到下1个字符上。然后进入

文本编辑模式下的插入状态,等待用户输入

S    删除光标所在行,且光标仍在本行的行首,然后进入文本编辑模式下的插入状态,等待用户输入

按2次c    与S命令功能相同

C或c$    删除光标所在位置到行尾的所有字符,且光标停留在本行的行尾,然后进入文本编辑模式下的插入状态,等待用户输入

r    用r命令后输入字符替换当前光标位置处的字符。1次只能替换1个字符,如果是相同连续的字符可以用nnr命令的形式。

R    使用该命令会使用vi进入文本编辑模式的替换状态,在屏幕的左下方显示“REPLACE(替换)"状态信息。在这种状态下,从当前光标所在的位置开始,

新输入的字符将逐个替换原有的字符,直到用户按下Esc键返回命令模式为止。

注意:s、S、C、c$命令是修改命令,它们与x、X、D、d删除命令不同的地方在于删除字符或行后vi的工作模式转变,等待用户插入字符修改。R、r是替换命令,此时vi是文本编辑模式下的替换状态而非插入状态,输入的新字符将覆盖旧字符,所以在输入时一定要注意是否覆盖了不该覆盖的字符。

6、剪切与粘贴

在文本文件编辑中,经常需要将某处的1个句子或若干行文本移动或复制到本文件的其他地方,这就需要编辑器有剪切和粘贴的功能。

vi中的缓冲区分为通用缓冲区和专用缓存区,在一般情况下,最近1次的抽取、删除、插入和修改的内容都将存放在通用缓冲区中。利用这些缓冲区可以非常方便地实现文件内容的剪切和粘贴。

按2次y   将光标所在行的内容复制到通用缓冲区,该命令也称为抽取。

p    取出通用缓冲区中的内容放在光标所在位置的后面,即粘贴。

复制多行可以使用nnyy命令。另外,D、dd、O等删除、插入命令也是以行为单位将处理的内容放入通用缓冲区的。

7、撤销操作

使用编辑器的用户都会希望有撤销操作的命令。在vi编辑器中使用u键可以恢复。

8、几个特殊的命令

J命令 合并第n行与第n+1行,使用时,将光标移动到第n行上按J键即可。

.命令 重复执行前一条操作命令。

~命令  改变光标所在位置字母的大小写,即大写变小写,小写变大写。

9、移动光标

ctrl+b   屏幕往后移动一页

ctrl+f   屏蔽往前移动一页

ctrl+u   屏幕往后移动半页 

ctrl+d   屏幕往前移动半页

shift+l   光标移动到屏幕最后一行

shift+h   光标移动到屏幕第一行

shift+m  光标移动到屏幕中间一行

数字 0   移动到文件的开头,本行开始位置

G   移动到文件的最后

nG   光标移动到文件第 n 行

gg   光标移动到文件第一行,相当于 1G

$    移动到光标所在行的末尾

^   移动到光标所在行的行首

10、末行模式操作

在使用末行模式之前,请记住按住 'esc' 键确定忆经处理命令行模式后,再按冒号“:”即可进入末行模式。

set nu   显示行号

set nonu  隐藏行号

set ic  搜索时忽略大小写

set noic 取消搜索忽略大小写

n  跳转到文件的某一行,“n”表示一个数字,如输入数字15,再回车就会跳到文件的第15行

!cmd  运行 shell命令cmd

-------附加语法-------
ESC:%s/origanl/new/g

%s 表示替换文本。
origan 表示原文
new 表示新的内容
/g 表示全文替换,如果仅替换第一个则不需要/g

需要注意如果要替换的内容中包含特殊含义的字符,需要使用转义符转义

例如

:%s/\\/\//g 表示把所有 反斜杠 \ 替换成正斜杠 / 拆开来看
:%s 表示要替换
/ 语法分隔
\ 第一个 \ 表转义,第二个 \ 表示反斜杠
/ 语法分隔
/ \ 表转义, / 表示正斜杠
/ 语法分隔
/g 表示全文替换

vim键盘图:

相关文章:

  • 并发编程中常见的设计模式,c++多线程如何设计
  • 微服务间通信重构与服务治理笔记
  • [Python人工智能] 四十二.命名实体识别 (3)基于Bert+BiLSTM-CRF的中文实体识别万字详解(异常解决中)
  • 探索程序员职业迷宫:选择适合自己的职业赛道
  • 【论文阅读】Mamba:选择状态空间模型的线性时间序列建模(二)
  • FFmpeg【SDK02】关于AVIO的一些使用
  • Jenkins设置使用163邮箱发送邮件
  • html基本标签
  • 【力扣经典面试题】14. 最长公共前缀
  • 【JavaEE】_Spring MVC项目使用数组与集合传参
  • 模拟退火算法(带你了解原理 实践)
  • 【ELK日志分析系统】ELK+Filebeat分布式日志管理平台部署
  • Linux:kubernetes(k8s)搭建mater节点(kubeadm,kubectl,kubelet)(2)
  • 如何关闭远程桌面连接
  • day12_SpringCloud(Gateway,Nacos配置中心,Sentinel组件)
  • __proto__ 和 prototype的关系
  • HashMap剖析之内部结构
  • leetcode386. Lexicographical Numbers
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • tab.js分享及浏览器兼容性问题汇总
  • 服务器之间,相同帐号,实现免密钥登录
  • 关于List、List?、ListObject的区别
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端面试总结(at, md)
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 物联网链路协议
  • 找一份好的前端工作,起点很重要
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​2020 年大前端技术趋势解读
  • !$boo在php中什么意思,php前戏
  • # 数论-逆元
  • #DBA杂记1
  • #数学建模# 线性规划问题的Matlab求解
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)(1.13) SiK无线电高级配置(六)
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (2.2w字)前端单元测试之Jest详解篇
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)mysql使用Navicat 导出和导入数据库
  • (转载)Linux 多线程条件变量同步
  • .NET CLR基本术语
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net 微服务 服务保护 自动重试 Polly
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...