怎么在CentOS下装vi_CentOS安装vi编辑器及基本使用教程

答案是安装vim-enhanced包可解决CentOS中vi功能简陋问题。CentOS默认预装vim-minimal,仅提供基础编辑功能,需通过yum或dnf安装vim-enhanced以获得语法高亮、多级撤销、分屏等完整Vim功能。

怎么在centos下装vi_centos安装vi编辑器及基本使用教程

在CentOS系统下安装vi编辑器其实通常不是一个“安装”动作,因为绝大多数CentOS版本,包括其基础镜像,都会预装一个简化版的vi,通常是

vim-minimal

或者指向它的符号链接。如果你发现它功能过于基础,比如没有语法高亮,那么你真正需要的是安装功能更强大的

vim-enhanced

版本。这个过程非常直接,只需通过系统的包管理器(

yum

dnf

)执行一个简单的命令即可。

解决方案

如果你想在CentOS上确保拥有一个功能完整的vi(即Vim),或者你的系统确实缺失了,以下是具体的步骤:

检查当前vi版本:在终端输入

vi --version

或者

which vi

。如果

vi

命令可用,通常会显示其版本信息,或者指出它是一个指向

vim

nvi

的符号链接。如果提示

command not found

,那确实需要安装。

安装或升级到Vim增强版:CentOS 7及更早版本,或者那些依然使用

yum

作为主要包管理器的系统:

sudo yum install vim-enhanced

CentOS 8及更新版本,或者那些切换到

dnf

的系统:

sudo dnf install vim-enhanced

执行命令后,系统会提示你确认安装,输入

y

并回车即可。这个包会替换掉可能存在的

vim-minimal

,提供一个功能更丰富的Vim版本。

验证安装:安装完成后,再次输入

vi

vim

。你会发现编辑器启动时可能会显示Vim的版本信息,并且在编辑文件时,如Shell脚本或Python代码,会看到语法高亮。

CentOS系统为什么自带的vi用起来有些“简陋”?Vim和Vi究竟有什么区别

这个问题问得很好,也是很多初学者甚至有经验的Linux用户会感到困惑的地方。我个人在刚接触Linux时,也曾被这个“简陋”的vi搞得一头雾水,总觉得是不是自己哪里没配置好。

其实,CentOS默认提供的

vi

,很多时候并不是我们常说的那个功能强大的

vim

(Vi IMproved)。它通常是一个指向

vim-minimal

或者更原始的

nvi

的符号链接。这个“简陋”版本的设计初衷是为了尽可能地小巧、快速,占用最少的系统资源,这对于服务器环境来说非常重要,尤其是在系统资源紧张或者需要进行紧急修复时。它能保证你在一个几乎“裸奔”的系统上也能进行最基本的文本编辑。

那么,

vi

vim

究竟有什么区别呢?简单来说,

vim

vi

的“升级版”或“增强版”,正如其名“Vi IMproved”。

vi

是上世纪70年代末期诞生的经典文本编辑器,它的核心理念是“模态编辑”,即有命令模式、插入模式等。这种模式切换在当时是非常高效的,但功能相对单一。

vim

在此基础上进行了巨大的扩展和改进:

语法高亮: 这是最直观的区别,让代码和配置文件更易读。多级撤销/重做:

vi

通常只能撤销最后一次操作,

vim

则可以无限次撤销。可视模式(Visual Mode): 允许你像在图形界面编辑器中那样选中一块文本进行操作。分屏编辑: 可以在一个终端窗口中同时打开并编辑多个文件。宏录制与回放: 录制一系列按键操作并重复执行,极大地提高了重复性任务的效率。插件系统:

vim

拥有庞大的插件生态,可以扩展出无数功能,从代码补全到文件管理,无所不能。正则表达式增强: 搜索和替换功能更加强大。

所以,当你觉得

vi

用起来“简陋”时,其实你是在期待

vim

的功能。一旦安装了

vim-enhanced

,你会发现它完全是另一个世界。对于日常开发和管理工作,我几乎不会选择使用

vim-minimal

,因为

vim-enhanced

带来的效率提升是巨大的,那点额外的磁盘空间和内存占用完全值得。

安装Vim后,如何快速上手进行文件编辑和保存?

Vim的模态编辑是它最核心也最让人“望而生畏”的特性。初次接触,很多人会卡在“怎么输入文字”、“怎么保存退出”这些基本操作上。别急,我们一步步来。理解了这几个模式和基本命令,你就能在Vim的世界里迈出第一步了。

Vim主要有以下几个模式:

普通模式(Normal Mode/命令模式): 这是Vim启动时的默认模式。在这个模式下,你不能直接输入文本,而是通过各种按键来执行命令,比如移动光标、删除行、复制粘贴等。插入模式(Insert Mode): 在普通模式下,按下特定的键(如

i

,

a

,

o

等)就可以进入插入模式。在这个模式下,你就可以像在普通文本编辑器里一样输入文字了。末行模式(Command-line Mode): 在普通模式下,按下冒号

:

,Vim会在屏幕底部显示一个命令行提示符,你可以在这里输入各种命令,比如保存、退出、查找、替换等。可视模式(Visual Mode): 在普通模式下,按下

v

(字符)、

v

(行)或

Ctrl+v

(块),可以进入可视模式,用于选中文本。

快速上手编辑和保存:

打开/创建文件:在终端输入

vim filename

。如果

filename

存在,则打开;如果不存在,则创建一个新文件。

进入插入模式(开始输入文字):文件打开后,你处于普通模式。

按下

i

:在当前光标位置插入。按下

a

:在当前光标位置插入。按下

o

:在当前行下方新建一行并插入。按下

o

:在当前行上方新建一行并插入。选择其中一个,然后你就可以自由输入文字了。

退出插入模式(回到普通模式):无论何时,只要你想停止输入文字,执行命令,就按下键盘左上角的

Esc

键。你会发现光标可能会变粗,表示回到了普通模式。

保存文件:在普通模式下,按下

:

(进入末行模式),然后输入

w

(write),回车。

:w

这样就保存了文件,但不会退出Vim。

保存并退出:在普通模式下,按下

:

,然后输入

wq

(write and quit),回车。

:wq

或者,你也可以在普通模式下直接按下

ZZ

(大写Z两次),这同样会保存并退出。

不保存退出:如果你做了修改但不想保存,想直接退出:在普通模式下,按下

:

,然后输入

q!

(quit forcefully),回车。

:q!

这个命令会强制退出,不保存任何修改。

光标移动(在普通模式下):

h

:左移

j

:下移

k

:上移

l

:右移

w

:跳到下一个单词开头

b

:跳到上一个单词开头

0

:跳到行首

$

:跳到行尾

gg

:跳到文件开头

G

:跳到文件结尾

数字G

:跳到指定行(例如

10G

跳到第10行)

Vim的哲学是“手不离键盘”,一旦你习惯了这些模式切换和命令,你会发现它的编辑效率是惊人的。刚开始可能会觉得有些反直觉,但坚持下去,你会发现它能让你沉浸在编辑中,效率远超鼠标点击。

Vim有哪些实用的高级功能或配置技巧能提升我的工作效率?

Vim的强大之处远不止基本的编辑和保存,它的可配置性和丰富的特性是提升工作效率的关键。一个精心配置的

.vimrc

文件,加上一些常用技巧,能让你的Vim变成一个高度定制化的开发环境。

1. 配置文件

.vimrc

:你的Vim个性化工作室

Vim的所有高级配置都集中在用户主目录下的

.vimrc

文件中。如果文件不存在,你可以自己创建一个。

AI图像编辑器 AI图像编辑器

使用文本提示编辑、变换和增强照片

AI图像编辑器 46 查看详情 AI图像编辑器

touch ~/.vimrcvim ~/.vimrc

一些我个人觉得非常实用的配置项:

显示行号:

set nu " 或者 set number

这几乎是我打开任何Vim的第一件事,方便定位和参考。

语法高亮:

syntax on

让代码和配置文件变得五彩斑斓,大大提升可读性。

设置缩进:

set tabstop=4    " 设置Tab键的宽度为4个空格set shiftwidth=4 " 自动缩进的宽度为4个空格set expandtab    " 将Tab键转换为空格

统一代码风格,避免Tab和空格混用造成的混乱。

自动缩进:

set autoindentset smartindent

当你敲回车时,新行会自动继承上一行的缩进,写代码时非常方便。

搜索结果高亮:

set hlsearchset incsearch

hlsearch

让所有匹配项高亮,

incsearch

则在输入搜索词时实时显示匹配。

文件类型识别与插件:

filetype plugin indent on

这行配置非常重要,它让Vim能根据文件类型加载相应的插件和缩进规则,比如Python文件有Python的缩进,C++文件有C++的。

光标行高亮:

set cursorline

高亮显示当前光标所在的行,方便阅读。

这些只是冰山一角,

.vimrc

可以非常复杂,但从这些基础开始,你就能感受到Vim的强大。

2. 实用高级功能

分屏操作:在一个Vim窗口中同时编辑多个文件,或者查看同一个文件的不同部分。

:
sp

:split

:水平分屏,在新分屏中打开当前文件。

:
vsp

:vsplit

:垂直分屏,在新分屏中打开当前文件。

Ctrl+w

后跟

h/j/k/l

:在分屏间切换光标。

Ctrl+w

后跟

方向键

:同样可以在分屏间切换。

Ctrl+w

后跟

q

:关闭当前分屏。

多文件缓冲区(Buffer)管理:你可以同时打开多个文件,但只在当前窗口显示一个。

:
e filename

:打开一个新文件到新的缓冲区。

:
ls

:列出所有打开的缓冲区。

:
b N

:切换到编号为N的缓冲区。

:
bnext

/

:bprev

:切换到下一个/上一个缓冲区。

宏(Macro)录制:录制一系列按键操作,然后重复执行,对于重复性任务非常高效。

q

后跟一个字母(例如

qa

):开始录制宏到寄存器

a

。执行你的操作序列。再次按下

q

:停止录制。

@a

:回放寄存器

a

中的宏一次。

数字@a

:回放寄存器

a

中的宏指定次数(例如

5@a

回放5次)。

查找与替换(加强版):Vim的查找替换支持强大的正则表达式。

:/pattern

:查找

pattern

:%s/old/new/g

:全局替换所有行中所有

old

new

:%s/old/new/gc

:全局替换,每次替换前询问确认。

:
s/old/new/g

:只替换当前行中所有

old

new

这些高级功能和配置技巧,一旦掌握,能极大地提升你在命令行下的文本编辑效率。Vim的学习曲线确实陡峭,但一旦你越过了那个初始的障碍,你会发现它带来的回报是巨大的。它不仅仅是一个编辑器,更像是一个可编程的文本处理平台,值得投入时间去探索和定制。

以上就是怎么在CentOS下装vi_CentOS安装vi编辑器及基本使用教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/349195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
deepseek官网登录入口 deepseek官网入口网页免费版登录
上一篇 2025年11月5日 21:34:36
宇树科技发布开源世界模型-动作架构:UnifoLM-WMA-0
下一篇 2025年11月5日 21:34:47

相关推荐

  • composer require-dev和require有什么不同_Composer Require与Require-Dev区别解析

    require用于声明项目运行必需的依赖,如框架、数据库组件和第三方SDK,这些包会随项目部署到生产环境;2. require-dev用于声明仅在开发和测试阶段需要的工具,如PHPUnit、PHPStan、Faker等,不会默认部署到生产环境;3. 安装时composer install根据环境决定…

    2026年5月10日
    1000
  • Matplotlib 地图中多类型图例的创建与优化

    Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化

    本教程旨在解决matplotlib地图可视化中,如何在一个图例中同时展示颜色块(如区域分类)和自定义标记(如特定兴趣点)的问题。文章详细介绍了当传统`patch`对象无法正确显示标记时,如何利用`matplotlib.lines.line2d`创建标记图例句柄,并将其与颜色块图例句柄合并,从而生成一…

    2026年5月10日 用户投稿
    100
  • 利用海象运算符简化条件赋值:Python教程与最佳实践

    本文旨在探讨Python中海象运算符(:=)在条件赋值场景下的应用。通过对比传统if/else语句与海象运算符,以及条件表达式,分析海象运算符在简化代码、提高可读性方面的优势与局限性。并通过具体示例,展示如何在列表推导式等场景下合理使用海象运算符,同时强调其潜在的复杂性及替代方案,帮助开发者更好地掌…

    2026年5月10日
    100
  • c++中的SFINAE技术是什么_c++模板编程中的SFINAE原理与应用

    SFINAE 是“替换失败不是错误”的原则,指模板实例化时若参数替换导致错误,只要存在其他合法候选,编译器不报错而是继续重载决议。它用于条件启用模板、类型检测等场景,如通过 decltype 或 enable_if 控制函数重载,实现类型特征判断。尽管 C++20 引入 Concepts 简化了部分…

    2026年5月10日
    000
  • RichHandler与Rich Progress集成:解决显示冲突的教程

    在使用rich库的`richhandler`进行日志输出并同时使用`progress`组件时,可能会遇到显示错乱或溢出问题。这通常是由于为`richhandler`和`progress`分别创建了独立的`console`实例导致的。解决方案是确保日志处理器和进度条组件共享同一个`console`实例…

    2026年5月10日
    000
  • 使用 Jupyter Notebook 进行探索性数据分析

    Jupyter Notebook通过单元格实现代码与Markdown结合,支持数据导入(pandas)、清洗(fillna)、探索(matplotlib/seaborn可视化)、统计分析(describe/corr)和特征工程,便于记录与分享分析过程。 Jupyter Notebook 是进行探索性…

    2026年5月10日
    000
  • php常量怎么用_PHP常量(define/const)定义与使用方法

    PHP中可通过define函数和const关键字定义常量,用于存储不可变值。define适用于全局作用域,支持动态名称和条件定义,如define(‘SITE_NAME’, ‘MyWebsite’);const在编译时生效,语法简洁但限制多,只能在类或全…

    2026年5月10日
    000
  • c#文件怎么打开

    打开 C# 文件有三种方法:Visual Studio:启动 Visual Studio,通过“文件”菜单打开 C# 文件。文本编辑器:使用文本编辑器打开 C# 文件,将其视为普通文本。.NET Core 命令行工具:使用 csc.exe 命令行工具编译 C# 文件,生成可执行文件。 如何打开 C#…

    2026年5月10日
    000
  • Python命令怎样使用profile分析脚本性能 Python命令性能分析的基础教程

    使用Python的cProfile模块分析脚本性能最直接的方式是通过命令行执行python -m cProfile your_script.py,它会输出每个函数的调用次数、总耗时、累积耗时等关键指标,帮助定位性能瓶颈;为进一步分析,可将结果保存为文件python -m cProfile -o ou…

    2026年5月10日
    000
  • Python递归函数追踪与性能考量:以序列打印为例

    本文深入探讨了Python中一种递归打印序列元素的方法,并着重演示了如何通过引入缩进参数来有效追踪递归函数的执行流程和参数变化。通过实际代码示例,文章揭示了递归调用可能带来的潜在性能开销,特别是对调用栈空间的需求,以及Python默认递归深度限制可能导致的错误,为读者提供了理解和优化递归算法的实用见…

    2026年5月10日
    000
  • python中zip函数详解 python多序列压缩zip函数应用场景

    zip函数的应用场景包括:1) 同时遍历多个序列,2) 合并多个列表的数据,3) 数据分析和科学计算中的元素运算,4) 处理csv文件,5) 性能优化。zip函数是一个强大的工具,能够简化代码并提高处理多个序列时的效率。 在Python中,zip函数是一个非常有用的工具,它能够将多个可迭代对象打包成…

    2026年5月10日
    000
  • c++如何实现UDP通信_c++基于UDP的网络通信示例

    UDP通信基于套接字实现,适用于实时性要求高的场景。1. 流程包括创建套接字、绑定地址(接收方)、发送(sendto)与接收(recvfrom)数据、关闭套接字;2. 服务端监听指定端口,接收客户端消息并回传;3. 客户端发送消息至服务端并接收响应;4. 跨平台需处理Winsock初始化与库链接,编…

    2026年5月10日
    000
  • 谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    使用谷歌浏览器的开发者工具截图步骤:1. 按ctrl+shift+i(windows/linux)或cmd+option+i(mac)打开开发者工具。2. 点击右上角三个点,选择”更多工具”,再选择”截图”。3. 选择截取整个页面。推荐的谷歌浏览器扩展…

    2026年5月10日 用户投稿
    100
  • Python中怎样使用pymongo?

    在python中使用pymongo可以轻松地与mongodb数据库进行交互。1)安装pymongo:pip install pymongo。2)连接到mongodb:from pymongo import mongoclient; client = mongoclient(‘mongod…

    2026年5月10日
    000
  • Golang使用Protobuf定义接口与消息格式

    Protobuf通过字段编号实现兼容性,新增字段可忽略、删除字段可保留编号,确保新旧版本互操作,支持服务独立演进。 在Golang项目中,利用Protobuf定义接口和消息格式,本质上是为服务间通信构建了一套高效、类型安全且跨语言的契约。它让数据结构清晰可见,RPC调用标准化,极大地简化了分布式系统…

    2026年5月10日
    000
  • Go语言接口与切片:如何识别和操作[]interface{}

    本文将深入探讨Go语言中如何识别和操作`[]interface{}`类型的切片。我们将介绍类型断言(Type Assertion)的关键作用,并通过`switch`语句演示如何安全地检测`[]interface{}`类型,并进而遍历其内部元素。文章旨在提供清晰的示例代码和专业指导,帮助开发者有效地处…

    2026年5月10日
    000
  • Python 函数参数类型:如何使用可变参数和动态参数?

    python 中的参数类型:关键词参数、可变参数和动态参数 在 python 中,函数的参数可以分为以下几种类型: 关键词参数(kw)**:这些参数具有名称,并且在调用函数时明确指定。可变参数(*args):这些参数没有名称,允许函数接受任意数量的位置参数。它们将被收集到一个元组中。动态参数(kwa…

    2026年5月10日
    000
  • pycharm解析器怎么添加 解析器添加详细流程

    在pycharm中添加解析器的步骤包括:1) 打开pycharm并进入设置,2) 选择project interpreter,3) 点击齿轮图标并选择add,4) 选择解析器类型并配置路径,5) 点击ok完成添加。添加解析器后,选择合适的类型和版本,配置环境变量,并利用解析器的功能提高开发效率。 在…

    2026年5月10日
    000
  • python中numpy的用法

    NumPy是Python中用于科学计算的强大库,它提供了以下功能:多维数组处理矩阵运算快速傅里叶变换(FFT)线性代数随机数生成 NumPy在Python中的强大功能 NumPy是Python中用于科学计算的一个强大且灵活的库。它提供了用于处理多维数组和矩阵的一组高效工具,是数据分析和机器学习项目的…

    2026年5月10日
    100
  • python如何捕获所有类型的异常_python try except捕获所有异常的方法

    答案:捕获所有异常推荐使用except Exception as e,可捕获常规错误并记录日志,避免影响程序正常退出;需拦截系统信号时才用except BaseException as e。 在Python中,要捕获所有类型的异常,最常见且推荐的方法是使用 except Exception as e…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信