四、vi/vim编辑器

vi/vim

模式
命令模式
编辑模式
末行模式
home键 行首
end键 行尾
命令模式切换到编辑模式
a 当前字符后输入
A 当前行行尾输入
i 当前字符前输入
I 当前行行首输入
o 当前行下一行输入
O 当前行上一行输入
s 删除当前字符后输入
S 删除当前行后输入
u 撤销一步操作
ctrl+r 重做
yy 复制 p 粘贴(当前行下一行) P(当前行上一行)
100yy 复制100行
dd 剪切/删除
100dd 删除100行
^ 行首
$ 行尾
y^ 复制当前字符到行首(不包含当前字符)
d^ 删除当前字符到行首
y$ 复制当前字符到行尾 (包含当前字符)
d$ 删除当前字符到行尾
G 最后一行
gg 第一行
53G
ygg 复制当前行到首行
dgg 删除当前行到首行
yG 复制当前行到尾行
dG 删除当前行到尾行
末行模式 (shift+:)
:w
:w!

:wq
:wq!

:q
:q!

:e /root/aa.txt
:w /tmp/xx.txt
:2,5w /tmp/yy.txt
:e! 重新打开当前文件

功能设置
:set nu
:set nonu
:set list
:set nolist

制表符 8个空格
:set tabstop=16 全文件 制表符=16个空格长度
:set softtabstop=16 已有行制表符长度不变 新的行长度=16

设置自动缩进
:set autoindent
:set noautoindent

设置永久生效
配置文件: /etc/vimrc
查找
/ab n 下一个 N 上一个
?a

替换
😒/ab/XX/ 光标所在行 匹配到的第一个ab
:%s/ab/XX/g 所有行所有ab都替换 -g 全局 % 所有行
:2,5s/ab/XX/g 2-5行替换
:%s/ab/XX/gc c 交互式替换
:%s/ //g 替换掉所有的空格
:%s/^ *//g 替换掉所有开头的空格
:g/^$/d 删除空行
:g/^#/d 删除所有#号开头的行

可视化模式
v
选中
y 复制 d删除
可视化块模式
ctrl + v
选中
y复制 d删除
ctrl+v —> 选中注释列—>shift+i—->输入#—->ESC(两次)

多文件处理
[root@localhost ~]# vim aa.txt cc.txt tt.txt
:next 下一个文件
:prev 上一个
:first 第一个
:last 最后一个
ctrl+^ 两个文件之间切换(当前和 上次打开的)

多窗口
[root@localhost ~]# vimdiff aa.txt cc.txt tt.txt
ctrl+ w w 切换文件
退出 wqa qa!

[root@localhost ~]# vim -O aa.txt cc.txt tt.txt
[root@localhost ~]# vim -o aa.txt cc.txt tt.txt

加密
末行模式 X 保存退出

总结问题:
出现问题原因:

没有正常退出vim 在cache 找到 vim 搜索.swap 删除即可,这是在非正常退出留下的副本,如果在编辑的时候出问题导致编辑进度丢失可以用这个备份的文件恢复编辑进度
解决方法:
1.通过D命令删除交换文件
2.rm -rf .tt.txt.swp

Original: https://www.cnblogs.com/wang-yongxu/p/16426164.html
Author: Lyon-w
Title: 四、vi/vim编辑器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581989/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • [SSM架构]springboot笔记

    框架基础介绍 框架概念 框架(Framework)是一个半成品软件,将所有的、公共的、重复的功能解决掉,帮助程序快速高效的进行开发,他是可重复的,可拓展的。 常见的框架&#8211…

    Linux 2023年6月13日
    081
  • TCP 粘包-拆包问题及解决方案

    歧义在”TCP”上,这个”粘包”跟TCP其实没关系。这里的”粘包”其实是应用程序中没有处理好数据包分割,两个…

    Linux 2023年6月13日
    095
  • 代码审计-Typecho反序列化getshell

    0x01 漏洞代码 install.php: php $config = unserialize(base64_decode(Typecho_Cookie::…

    Linux 2023年5月28日
    083
  • lvs负载均衡

    Lvs 一.Lvs简介 二. 体系结构 三. Lvs管理工具 1. ipvs 2. ipvsadm 四.lvs工作模式及原理 1.NAT模式 2. DR模式 3.TUN模式(隧道模…

    Linux 2023年6月7日
    0108
  • Python的闭包是什么意思?

    闭包算是编程语言里一个比较常见的概念,但说实话,这个名词有点晦涩。在查看了半天网上的资料后,还是有点不明就里。 我疑惑的点主要是:这个东西是用来解决什么问题的?或者说,他的作用是什…

    Linux 2023年6月8日
    093
  • Kubernetes 安装Redis集群

    一、Operator 以集群模式安装 可以在service_account和 operator后面加-n 参数指定namespace 这个yaml文件中使用的资源较高,测试环境可能…

    Linux 2023年5月28日
    061
  • 安卓逆向从0到1学习总结

    PS:该文已经首发于公众号信安之路!!! 初识安卓逆向是在2019年的暑假,到现在也快一年了,这一年来有刚从web渗透转来的迷茫,有成功破解了第一个app的喜悦,也有通宵熬夜逆向的…

    Linux 2023年6月8日
    0110
  • 【深度学习】RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

    报错代码: if __name__ == ‘__main__’: model = Perception(2, 3, 2).cuda() input = torch.randn(4,…

    Linux 2023年6月13日
    078
  • 4.8 Linux解压.bz2格式的文件(bunzip2命令)

    要解压”.bz2″格式的压缩包文件,除了使用”bzip2 -d 压缩包名”命令外,还可以使用 bunzip2 命令。 bunzip2…

    Linux 2023年6月7日
    076
  • 前端之CSS初识

    一、CSS介绍 CSS( Cascading Style Sheet,层叠样式表)定义 如何显示HTML元素。 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染…

    Linux 2023年6月14日
    088
  • MySQL数据库用户授权

    相关库:mysql 相关表:user 查看权限表: 5.7之前的版本 select user,host,password from mysql.user; 5.7之后的版本 sel…

    Linux 2023年6月14日
    074
  • WSL系统安装与使用

    WSL是适用于 Linux 的 Windows 子系统,可让开发人员按原样运行 GNU/Linux 环境 – 包括大多数命令行工具、实用工具和应用程序 – …

    Linux 2023年5月27日
    0127
  • SpringMVC底层——请求参数处理流程描述

    在DispatcherServlet.java的doDispatch方法中,springmvc通过handlermapping里面找哪个handler能处理请求,handler封装…

    Linux 2023年6月6日
    0131
  • Golang 实现 Redis(4): AOF 持久化与AOF重写

    AOF 持久化是典型的异步任务,主协程(goroutine) 可以使用 channel 将数据发送到异步协程由异步协程执行持久化操作。 在 DB 中定义相关字段: type DB …

    Linux 2023年5月28日
    090
  • Mysql数据库 ALTER 基本操作

    背景: ALTER作为DDL语言之一,工作中经常遇到,这里我们简单介绍一下常见的几种使用场景 新建两个测试表offices 和 employess CREATE TABLE off…

    Linux 2023年6月6日
    0102
  • linux 系统调优相关参数

    posted @2022-09-05 00:32 LB_运维技术 阅读(4 ) 评论() 编辑 Original: https://www.cnblogs.com/libin-li…

    Linux 2023年6月13日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球