vi的基本使用

news/2025/2/25 9:46:08

以下是vi编辑器的基本使用方法:

一、进入和退出vi

1. 进入vi

   打开终端,输入 vi [文件名] 。如果文件不存在,vi会创建一个新的空文件。例如, vi test.txt 。

2. 退出vi

   在命令模式下(刚进入vi时默认处于命令模式):

    输入 :q ,如果文件没有被修改,可以直接退出vi。

    如果文件已经被修改,输入 :q! 可以强制退出,不保存修改。

     输入 :wq 或者 :x ,可以保存文件并退出vi。

二、命令模式操作

1. 光标移动

  h :向左移动一个字符。

   j :向下移动一行。

   k :向上移动一行。

    l :向右移动一个字符。

   w :跳到下一个单词的开头。

   b :跳到上一个单词的开头。

   0(数字零):跳到行首。

   $ :跳到行尾。

   gg :跳到文件的第一行。

   G :跳到文件的最后一行。

2. 删除操作

   x :删除光标所在位置的字符。

   dd :删除光标所在的整行。

   dw :删除从光标位置到下一个单词开头的字符。

3. 复制和粘贴操作

   yy :复制光标所在的整行。

   p :将复制或剪切的内容粘贴到光标所在位置的下方。

   P :将复制或剪切的内容粘贴到光标所在位置的上方。

4. 查找操作

   /关键字 :在文件中向下查找指定的关键字。例如,/hello 会查找文件中第一个出现“hello”的地方。找到后,可以按 n 键查找下一个匹配项。

   ?关键字 :在文件中向上查找指定的关键字。找到后,可以按 N 键查找上一个匹配项。

三、插入模式操作

1. 进入插入模式

   - 在命令模式下:

     i :在光标所在位置插入字符。

     a :在光标所在位置的下一个字符处插入字符。

     I :在行首插入字符。

     A :在行尾插入字符。

     o :在光标所在行的下方插入新的一行并进入插入模式。

     O :在光标所在行的上方插入新的一行并进入插入模式。

2. 在插入模式下输入内容

   此时就可以像在普通文本编辑器中一样输入文本内容了。

四、底行模式操作

1. 进入底行模式

   - 在命令模式下输入 : 进入底行模式。

2. 底行模式的操作

   除了前面提到的 :q 、 :q! 、 :wq 、 :x 等用于保存和退出的命令外,还可以进行其他操作。

   例如,:set nu 可以显示行号, :set nonu 则取消行号显示。


http://www.niftyadmin.cn/n/5865340.html

相关文章

【Python 入门基础】—— 人工智能“超级引擎”,AI界的“瑞士军刀”,

欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创&#x1…

基于模块联邦的微前端架构:重构大型前端应用的模块化边界

引言:企业级前端的模块化困境 字节跳动广告系统采用Webpack 5模块联邦后,主应用构建时间从14分钟降至38秒,微应用独立发布频率提升至每天50次。在动态加载机制下,首屏资源加载体积减少79%,跨团队组件复用率达到92%。其…

HRI-2025 | 俄罗斯无人机自主导航新突破!UAV-VLA:基于视觉-语言-动作的大规模无人机任务生成系统

作者:Oleg Sautenkov, Yasheerah Yaqoot, Artem Lykov, Muhammad Ahsan Mustafa, Grik Tadevosyan, Aibek Akhmetkazy, Miguel Altamirano Cabrera, Mikhail Martynov, Sausar Karaf, and Dzmitry Tsetserukou 单位:俄罗斯斯科尔科沃科学技术研究院 论…

从零开始玩转TensorFlow:小明的机器学习故事 5

图像识别的挑战 1 故事引入:小明的“图像识别”大赛 小明从学校里听说了一个有趣的比赛:“美食图像识别”。参赛者需要训练计算机,看一张食物照片(例如披萨、苹果、汉堡等),就能猜出这是什么食物。听起来…

flutter Column嵌套ListView高度自适应问题

1.限制最大高度500,当布局高度小于500时高度自适应包裹 //当布局外不需要包裹Container时,使用ConstrainedBox(constraints: BoxConstraints(maxHeight: 500,minHeight: 0),child: Column()) _body(){return Container(constraints: BoxConstraints(max…

vue3学习3-route

创建路由器: 应用路由器: 路由展示区RouterView 和 路由跳转RouterLink: 路由组件(在路由配置文件中配置的)一般放到pages/views文件夹下 路由组件切换的时候执行的是 挂载/卸载操作 onMounted / onUnmouted 路由器两…

3dtiles平移旋转工具制作

3dtiles平移旋转缩放原理及可视化工具实现 背景 平时工作中,通过cesium平台来搭建一个演示场景是很常见的事情。一般来说,演示场景不需要多完善的功能,但是需要一批三维模型搭建,如厂房、电力设备、园区等。在实际搭建过程中&…

一文讲解Redis为什么读写性能高以及I/O复用相关知识点

Redis为什么读写性能高呢? Redis 的速度⾮常快,单机的 Redis 就可以⽀撑每秒十几万的并发,性能是 MySQL 的⼏⼗倍。原因主要有⼏点: ①、基于内存的数据存储,Redis 将数据存储在内存当中,使得数据的读写操…