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

linux中vim介绍以及常用命令大全

前言

在Linux系统中,Vim是一个功能强大的文本编辑器,它广泛应用于服务器管理、脚本编写和程序开发中。Vim拥有两种模式:命令模式和插入模式。了解和掌握常用的Vim命令对于提高文本编辑效率至关重要。本文将详细介绍Vim的常用命令,帮助你更高效地使用Vim。

Vim模式简介

命令模式:

启动Vim后,默认进入命令模式。
在命令模式下,按键用于执行操作,如移动光标、复制文本等。

插入模式:

在命令模式下按i键进入插入模式。
在插入模式下,按键用于输入文本。

常用Vim命令

基本移动命令

光标移动:

h:左移
j:下移
k:上移
l:右移

翻页:

Ctrl + f:向下翻页
Ctrl + b:向上翻页

跳转:

gg:跳转到文件开头
G:跳转到文件末尾
:n:跳转到第n行(n为行号)

文本编辑命令

插入文本:

i:在光标前插入
a:在光标后插入
o:在当前行下方新开一行并插入

删除文本:

x:删除光标所在位置的字符
dd:删除整行
dw:删除从光标所在位置到下一个单词的末尾

复制和粘贴:

yy:复制整行
p:粘贴复制的内容

撤销和重做:

u:撤销
Ctrl + r:重做

搜索和替换命令

搜索:

/word:向下搜索"word"
?word:向上搜索"word"

替换:

:%s/old/new/g:将文件中所有的"old"替换为"new"

保存和退出命令

保存:

:w:保存文件
:wq:保存并退出

退出:

:q:退出
:q!:不保存强制退出

Vim高级技巧

使用寄存器:

Vim允许使用多个寄存器来存储文本,例如使用"ayy复制到寄存器a。

使用正则表达式:

Vim的搜索和替换功能支持正则表达式,提供强大的文本处理能力。

使用Vim脚本:

Vim脚本可以自动化复杂的编辑任务,提高编辑效率。

多窗口编辑

Vim 允许在同一实例中打开多个窗口,这样可以同时查看和编辑多个文件。

水平分割:

:split 或简写为 :sp,创建一个水平分割的窗口。

垂直分割:

:vsplit 或简写为 :vsp,创建一个垂直分割的窗口。

切换窗口:

Ctrl + w 后跟方向键(左、右、上、下)可以在不同窗口间切换。

折叠

Vim 的折叠功能允许你将代码块折叠起来,以便于查看和编辑。

手动折叠:

za 打开或关闭当前代码块的折叠。

自动折叠:

在 .vimrc 文件中设置 foldmethod 和 foldlevel 来定义如何自动折叠代码。

宏录制

Vim 允许你录制一系列命令,然后重复执行这些命令。

开始录制:

q 开始录制宏到指定的寄存器。

停止录制:

q 停止录制。

执行宏:

@ 执行录制的宏。

会话和视角

Vim 允许保存和恢复编辑会话,以及在不同文件间快速切换。

保存会话:

:mksession 保存当前会话。

恢复会话:

:source <session_file> 恢复保存的会话。

快速切换:

:bn 和 :bp 在打开的文件间前后切换。

插件管理

Vim 插件可以极大地扩展其功能。使用插件管理器如 Vundle、Pathogen 或 Vim-plug 可以方便地安装和更新插件。

安装插件管理器:

将插件管理器的脚本添加到 .vimrc 文件并运行一次 Vim。

安装插件:

通过插件管理器的命令安装所需的插件。

定制 Vim

通过 .vimrc 文件,你可以定制 Vim 的外观、行为和键绑定。

定制键绑定:

在 .vimrc 中使用 map 命令定义新的快捷键。

定制颜色方案:

选择一个颜色方案,或创建自己的颜色方案来改变 Vim 的外观。

定制状态栏:

使用状态栏显示有用的信息,如文件名、行号、字符编码等。

与外部工具集成

Vim 可以与外部工具集成,如编译器、终端、文件浏览器等。

集成终端:

:terminal 在 Vim 中打开一个终端窗口。

集成文件浏览器:

使用 :e 命令打开文件浏览器插件。

集成编译器:

使用 :make 命令运行编译器并查看错误。

总结

Vim是一个功能强大的文本编辑器,掌握其常用命令对于Linux系统管理员和开发者来说非常重要。通过熟练使用Vim,你可以更高效地进行文本编辑和文件管理。


good day!!!

http://www.lryc.cn/news/435218.html

相关文章:

  • 线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析
  • CSS“多列布局”(补充)——WEB开发系列35
  • UI自动化测试痛点解决方案
  • 如何将QAD系统EDI模块无缝迁移到知行之桥?
  • Linux学习-ELK(一)
  • Selenium事件监听
  • 视频写作入门:9个步骤开始您的视频日志并与观众建立真实的联系
  • 使用豆包MarsCode 编写 Node.js 全栈应用开发实践
  • Spring Cloud全解析:熔断之Hystrix执行流程
  • 大模型算法岗,面试百问百答,7天3个offer拿到手!
  • 代码随想录算法day32 | 动态规划算法part05 | 完全背包,518. 零钱兑换 II, 377. 组合总和 Ⅳ,70. 爬楼梯 (进阶)
  • 【Linux 从基础到进阶】自动化备份与恢复策略
  • 前端打包装包——设置镜像
  • volatile 的作用?是否具有原子性,对编译器有什么影响?什么情况下一定要用 volatile, 能否和 const 一起使用?
  • iPhone 16分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 16 Plus、iPhone 16 Pro、iPhone 16 Pro Max
  • FunASR搭建语音识别服务和VAD检测
  • 设计一个支持多线程写入的并发日志记录系统:C++实战指南
  • 使用LSTM(长短期记忆网络)模型预测股票价格的实例分析
  • 开源的 Windows 12 网页体验版!精美的 UI 设计、丰富流畅的动画
  • chapter14-集合——(List)——day18
  • Frida 脚本抓取 HttpURLConnection 请求和响应
  • Java实现建造者模式和源码中的应用
  • Windows安装docker
  • SprinBoot+Vue校园车辆管理系统的设计与实现
  • 【C语言进阶】C语言动态内存管理:深入理解malloc、calloc与realloc
  • Java+控制台 图书管理系统
  • gi清除无用缓存
  • 云PLM系统对企业影响有哪些?解析云PLM系统的作用
  • 四、查找算法
  • 果蔬识别系统性能优化之路(三)