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

【从Python基础到深度学习】 8. VIM两种状态

一、安装

sudo apt install vim

二、VIM两种模式 - 命令状态/编辑状态

1.1 进入/退出VIM

进入VIM

vim

退出vim 

:q <enter>

2.2 根目录下添加配置文件

window下创建vimrc类型文件内容如下:

set nu
set cursorline
set hlsearch
set tabstop=4

使用Winscp 将vimrc文件拖入根目录下(Winscp使用见【从Python基础到深度学习】3. Winscp与Ubuntu使用及配置-CSDN博客)

更改配置文件为隐藏文件

cp vimrc .vimrc

2.3 进入vim后默认为命令模式

2.4 命令模式与编辑模式切换

按 i 键后左下角出现 insert 即进入编辑模式

编辑模式下可对文本正常进行输入

 

按 ESC键回到命令模式 

三、文档保存与退出

结束编辑:
:q
在未修改文档的情况下退出
: q !
放弃文档的修改,强行退出
: w
文档存盘
: wq文档存盘退出其他:
:help命令查看该命令的帮助提示(不常用,当不小心按F1时,通过:q进行退出>
: % ! xxd十六进制模式
: %!xxd -r 返回文本模式中间有一个空格的
如果在编辑过程中不小心按了Ctrl+s, vim 会处于僵死状态,按Ctrl+q可以恢复。
 

四、删除与修改

X 删除光标处的字符
dd 删除光标所在的整行
[n]dd 删除光标所在行以及下面的两行(删除[n]行,[n]表示一个整数)
D 删除光标到行尾的文本,常用语删除注释语句(d$)
yy 复制光标所在的整行
[n]yy 从光标开始往下复制n行,[n]表示一个整数

p 将复制后的文本粘贴到光标处
u 撤销上次操作

先yy后再去p的效果就是复制粘贴的效果
先dd后再去p的效果就是剪切的效果
 

五、光标移动

^光标移动到行首
$光标移动到行尾
Ctr1+d向下翻半页
Ctrl+f向下翻一页
Ctrl+u向上翻半页
Ctrl+b向上翻一页
gg光标定位到文档头
G光标定位到文档尾
H光标定位到当前页首
L光标定位到当前页的最后一行的行首
w光标往后移一个字
b光标往前移一个字
[n]+光标向后移动n行,[n]表示一个整数10+
[n]-光标向前移动n行,[n]表示一个整数10-
[n]G光标定位到第n行行首,[n]表示一个整数20G
:[n]到达第[n]行

六、查找与替换

/[str]
查找字符串str,[str]表示要查找的字符串回车后会加亮显示所有找到的字符串,接着
命令n移动到下一个找到的字符串,命令N(shift + n)移动到上一个找到的字符串。


:s/[src]/ [dst] 

部分替换(只能替换光标之所在的行) /i忽略大小写 /g全部匹配
:3,6s/[src]/[dst]/ig   (3-6行中进行替换)



: %s/[src]/[dst]/g 

全部替换,将文档中所有src的字符串替换为dst字符串

:%s/^ l/g

将文档每一行的行首的空格去掉
 

七、 块操作

v 可视化块选择状态

  • 选中块之后,可以对块进行删除(d),复制(y),剪切(x),粘贴(p)

Ctrl +v 竖向选择模式,主要用于批量注释代码,输入步骤如下:

  1. 首先按ctr1+v,竖选选中要注释的行
  2. 输入Ⅰ(注意是大写的I),然后输入/ /3、再输入esc,就会看到选中的行被注释了。
     

相关文章:

  • MySQL双写机制
  • 网络原理-TCP/IP(7)
  • 基于MapVGL的地理信息三维度数据增长可视化
  • 网络安全产品之认识蜜罐
  • 第五章:变换矩阵
  • [职场] 会计学专业学什么 #其他#知识分享#职场发展
  • Python访问数据库
  • 【LeetCode: 103. 二叉树的锯齿形层序遍历 + BFS】
  • GPT-4带来的思想火花
  • 开发实体类
  • 28. 找出字符串中第一个匹配项的下标
  • 模型 IPO(输入、处理、输出)学习模型
  • 网络协议与攻击模拟_17HTTPS 协议
  • CTFshow web(文件上传158-161)
  • EXTI外部中断
  • python3.6+scrapy+mysql 爬虫实战
  • 【React系列】如何构建React应用程序
  • cookie和session
  • es6
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Mysql5.6主从复制
  • rabbitmq延迟消息示例
  • Vue 2.3、2.4 知识点小结
  • 阿里云前端周刊 - 第 26 期
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 构造函数(constructor)与原型链(prototype)关系
  • 记录:CentOS7.2配置LNMP环境记录
  • 前端临床手札——文件上传
  • 温故知新之javascript面向对象
  • 我的面试准备过程--容器(更新中)
  • 小李飞刀:SQL题目刷起来!
  • ![CDATA[ ]] 是什么东东
  • #ifdef 的技巧用法
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (70min)字节暑假实习二面(已挂)
  • (9)STL算法之逆转旋转
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (学习日记)2024.01.09
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • @EnableAsync和@Async开始异步任务支持
  • @RequestMapping处理请求异常
  • [20190113]四校联考
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [C/C++] C/C++中数字与字符串之间的转换
  • [C++]C++类基本语法
  • [ES-5.6.12] x-pack ssl
  • [ESP32] 编码旋钮驱动
  • [JS]JavaScript 简介
  • [LeetCode] Binary Tree Preorder Traversal 二叉树的先序遍历