前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >运维锅总详解vim

运维锅总详解vim

作者头像
锅总
发布2024-07-20 10:28:13
710
发布2024-07-20 10:28:13
举报
文章被收录于专栏:锅总

本文对vim常见用法进行举例,并分析vi与vim的区别,最后讲解vim的发展历史。希望对您学习和了解vim有所帮助!

一、vim详细教程

下面是一个详细的 Vim 教程,包含具体的文件编辑例子和操作步骤。

启动 Vim

在终端中输入 vim 进入 Vim:

代码语言:javascript
复制
vim

打开文件

打开一个文件:

代码语言:javascript
复制
vim filename.txt

基本操作模式

普通模式 (Normal mode)

这是 Vim 的默认模式,用于浏览和操作文本。

插入模式 (Insert mode)

用于插入和编辑文本。

  • i 进入插入模式,在光标前插入文本。
  • a 进入插入模式,在光标后插入文本。
  • o 在当前行下方新建一行并进入插入模式。

Esc 退出插入模式,返回到普通模式。

命令模式 (Command mode)

用于执行保存、退出等命令。在普通模式下按 : 进入命令模式。

基本命令

退出 Vim

保存并退出:

代码语言:javascript
复制
:wq

仅退出(未保存的更改将会丢失):

代码语言:javascript
复制
:q!
光标移动
  • h 向左移动一个字符
  • j 向下移动一行
  • k 向上移动一行
  • l 向右移动一个字符
文本操作
  • x 删除光标所在的字符
  • dd 删除当前行
  • yy 复制当前行
  • p 在光标后粘贴
  • u 撤销上一步操作
  • Ctrl + r 重做上一步撤销的操作
查找与替换

查找:

代码语言:javascript
复制
/pattern

n 跳到下一个匹配项,按 N 跳到上一个匹配项。

替换:

代码语言:javascript
复制
:%s/old/new/g

替换整个文件中的所有 oldnew

可视模式

字符可视模式
  • v 进入字符可视模式。
  • 使用光标键移动光标选择文本。
  • y 复制选中的文本。
  • d 删除选中的文本。
  • Esc 退出可视模式。
行可视模式
  • V 进入行可视模式。
  • 使用光标键选择整行文本。
  • y 复制选中的行。
  • d 删除选中的行。
  • Esc 退出可视模式。
块可视模式
  • Ctrl + v 进入块可视模式。
  • 使用光标键选择矩形区域。
  • y 复制选中的块。
  • d 删除选中的块。
  • I 在选中的每行前插入文本,输入文本后按 Esc
  • A 在选中的每行后追加文本,输入文本后按 Esc

示例操作

示例 1:编辑文件内容

打开一个文件:

代码语言:javascript
复制
vim example.txt

进入插入模式,在文件开始处添加一行文字:

代码语言:javascript
复制
iThis is the first line.

Esc 退出插入模式。

移动光标到第二行,按 o 新建一行并进入插入模式,输入文字:

代码语言:javascript
复制
This is the second line.

Esc 退出插入模式。

保存并退出:

代码语言:javascript
复制
:wq
示例 2:批量操作文本

打开一个文件:

代码语言:javascript
复制
vim example.txt

进入字符可视模式,选择第一行的前五个字符:

代码语言:javascript
复制
v

移动光标选择文本,然后按 y 复制。

移动光标到文件末尾,按 p 粘贴复制的文本。

进入行可视模式,选择第二行:

代码语言:javascript
复制
V

d 删除选中的行。

保存并退出:

代码语言:javascript
复制
:wq
示例 3:使用块可视模式

打开一个文件:

代码语言:javascript
复制
vim example.txt

进入块可视模式,选择一个矩形区域:

代码语言:javascript
复制
Ctrl + v

移动光标选择文本块,然后按 I 进入插入模式,在每行前插入 #,按 Esc 退出。

保存并退出:

代码语言:javascript
复制
:wq

配置 Vim

创建或编辑 Vim 的配置文件 ~/.vimrc,添加以下内容:

代码语言:javascript
复制
" 显示行号
set number

" 启用语法高亮
syntax on

" 自动缩进
set autoindent

插件管理

使用 Vim-Plug 管理插件:

安装 Vim-Plug:

代码语言:javascript
复制
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
     https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

配置插件,在 ~/.vimrc 中添加:

代码语言:javascript
复制
call plug#begin('~/.vim/plugged')

" Examples of plugins
Plug 'tpope/vim-sensible'
Plug 'preservim/nerdtree'

call plug#end()

安装插件:启动 Vim 并运行:

代码语言:javascript
复制
:PlugInstall

总结

这个详细的 Vim 教程涵盖了 Vim 的基本操作模式、常用命令、可视模式以及具体的文件编辑示例。通过练习这些操作,你将逐渐掌握 Vim 的强大功能,提高文本编辑效率。

二、vi与vim区别

Vi 和 Vim 是两种常用的文本编辑器,它们之间有一些显著的区别。下面详细介绍 Vi 和 Vim 的区别。

Vi 和 Vim 的概述

  • Vi:Vi 是一个经典的文本编辑器,最初在 1976 年由 Bill Joy 开发。它是 Unix 系统上的标准编辑器,功能相对简单,但非常高效。
  • Vim:Vim(Vi IMproved)是 Vi 的增强版本,由 Bram Moolenaar 在 1991 年发布。Vim 保留了 Vi 的所有功能,并在其基础上增加了许多新特性,使其成为一个更强大的文本编辑器。

主要区别

功能性
  1. 多级撤销/重做
    • Vi:只支持一级撤销。
    • Vim:支持多级撤销和重做,可以使用 u 进行多次撤销,使用 Ctrl + r 进行重做。
  2. 语法高亮
    • Vi:不支持语法高亮。
    • Vim:支持语法高亮,可以自动识别多种编程语言并对其进行高亮显示。
  3. 插件系统
    • Vi:不支持插件。
    • Vim:支持插件,用户可以通过 Vim 插件来扩展其功能。
  4. 内置帮助
    • Vi:帮助文档有限。
    • Vim:提供了详细的内置帮助文档,可以通过 :help 命令访问。
  5. 可视模式
    • Vi:不支持可视模式。
    • Vim:支持可视模式,允许用户选择文本块进行操作。
  6. 图形界面
    • Vi:只有命令行界面。
    • Vim:有图形用户界面版本(GVim),提供更友好的用户体验。
  7. 自动补全
    • Vi:基本上不支持自动补全。
    • Vim:提供了丰富的自动补全功能,包括关键字补全、文件路径补全等。
  8. 多窗口和多缓冲区
    • Vi:不支持多窗口和多缓冲区。
    • Vim:支持在同一窗口中分割成多个子窗口,并支持多个缓冲区进行编辑。
配置和自定义
  • Vi:配置选项少,用户只能对其进行有限的定制。
  • Vim:提供了丰富的配置选项,用户可以通过 ~/.vimrc 文件进行个性化配置。
社区和支持
  • Vi:由于功能简单,社区相对较小。
  • Vim:有一个庞大的用户社区,提供大量的资源、教程和插件支持。

总结

  • Vi:简单高效,适合于需要快速编辑文本的场景,但功能较为有限。
  • Vim:功能强大,适合开发人员和需要进行复杂文本操作的用户,提供了丰富的特性和高度的可扩展性。

如果你只是需要一个基本的文本编辑器,Vi 已经足够。如果你需要更多高级功能,或者需要进行复杂的文本编辑和编程工作,Vim 是一个更好的选择。

三、vim历史

Vim(Vi IMproved)是一个从 Vi 发展而来的文本编辑器,它的历史可以追溯到 20 世纪 70 年代。以下是 Vim 发展的重要里程碑:

Vi 的起源

  1. 1976 年:Vi 由 Bill Joy 在加州大学伯克利分校开发。Vi 是 Unix 操作系统的一部分,最初是作为 ed 和 ex 编辑器的一个扩展而开发的。

Vim 的起源和早期发展

  1. 1988 年:Bram Moolenaar 开始开发 Vim。最初的版本基于一个名为 Stevie 的公共域程序,Stevie 是一款在 Amiga 计算机上运行的 Vi 克隆。
  2. 1991 年:Vim 1.14 发布,最初的名字是 "Vi IMitation",后来改为 "Vi IMproved",并缩写为 Vim。

早期版本和功能增加

  1. 1992 年:Vim 1.22 发布,这是第一个公开发布的版本,运行在 Unix 系统上。
  2. 1994 年:Vim 3.0 发布,引入了多窗口支持(split windows)。
  3. 1996 年:Vim 4.0 发布,增加了对多缓冲区(buffers)的支持,并引入了一个 GUI(图形用户界面)版本 GVim。

成长和扩展

  1. 1998 年:Vim 5.0 发布,增加了多项重要功能,包括语法高亮、插件系统和改进的多窗口支持。
  2. 2001 年:Vim 6.0 发布,引入了垂直分割窗口(vertical split)、折叠(folding)和增强的插件系统。

现代 Vim

  1. 2006 年:Vim 7.0 发布,引入了拼写检查、文件树浏览器和改进的自动补全功能。
  2. 2010 年:Vim 7.3 发布,增加了对 Lua、Python 3 和 Perl 的支持,并引入了持久撤销(persistent undo)和文本对象(text objects)。
  3. 2013 年:Vim 7.4 发布,修复了数百个 bug,并改进了性能和稳定性。
  4. 2016 年:Vim 8.0 发布,这是自 2010 年以来的第一次重大更新,引入了异步任务、作业控制、通道和定时器等现代编程特性。

近期发展

  1. 2018 年:Vim 8.1 发布,增加了对终端窗口(terminal windows)的支持,允许在 Vim 中直接运行终端会话。
  2. 2019 年:Vim 8.2 发布,进一步改进了异步功能和终端支持。

未来展望

Vim 继续发展,社区对其进行不断的改进和扩展。Vim 的开源特性和灵活性使得它成为全球开发人员和文本编辑爱好者的首选工具之一。

小结

Vim 从 Vi 发展而来,经过多年的发展,已经成为一个功能强大、灵活多样的文本编辑器。其历史反映了其不断扩展和改进的过程,每个版本都带来了新的特性和改进,满足了用户不断变化的需求。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 锅总 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、vim详细教程
    • 启动 Vim
      • 打开文件
        • 基本操作模式
          • 普通模式 (Normal mode)
          • 插入模式 (Insert mode)
          • 命令模式 (Command mode)
        • 基本命令
          • 退出 Vim
          • 光标移动
          • 文本操作
          • 查找与替换
        • 可视模式
          • 字符可视模式
          • 行可视模式
          • 块可视模式
        • 示例操作
          • 示例 1:编辑文件内容
          • 示例 2:批量操作文本
          • 示例 3:使用块可视模式
        • 配置 Vim
          • 插件管理
            • 总结
            • 二、vi与vim区别
              • Vi 和 Vim 的概述
                • 主要区别
                  • 功能性
                  • 配置和自定义
                  • 社区和支持
                • 总结
                • 三、vim历史
                  • Vi 的起源
                    • Vim 的起源和早期发展
                      • 早期版本和功能增加
                        • 成长和扩展
                          • 现代 Vim
                            • 近期发展
                              • 未来展望
                                • 小结
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档