一、引言

Vim 是一款功能强大且在 Linux 系统中广泛使用的文本编辑器。它有着高效的编辑模式、丰富的快捷键以及众多强大的功能,对于想要深入学习 Linux 系统操作以及进行文本处理相关工作的新手来说,掌握 Vim 是很有必要的。不过一开始接触 Vim 可能会觉得有些复杂,不用担心,在这篇教程中,将从最基础的部分开始,逐步带大家从入门走向精通。

二、Vim 的安装

(一)在常见 Linux 发行版中安装

  1. Ubuntu 系统
    在终端中输入以下命令:
sudo apt-get update
sudo apt-get install vim

先更新软件源,然后通过 apt-get 命令来安装 Vim。安装完成后,可以通过输入 vim --version 来查看 Vim 的版本信息,验证是否安装成功。

  1. CentOS 系统
    使用如下命令安装:
sudo yum install vim

同样可以后续用 vim --version 查看版本情况。

(二)验证安装成功

打开终端,输入 vim 命令,如果能进入 Vim 的界面(初始界面是一个空白的编辑区域,底部有一些提示信息),那就说明安装成功了,可以开始使用啦。

三、Vim 的基本模式

Vim 有多种工作模式,理解这些模式是熟练使用 Vim 的关键。

(一)普通模式(Normal Mode)

这是 Vim 启动后的默认模式。在这个模式下,你不能直接输入文本内容,但可以使用各种快捷键来移动光标、删除文字、复制粘贴内容等操作。例如:

  • 移动光标

    • h:光标向左移动一个字符。
    • j:光标向下移动一行。
    • k:光标向上移动一行。
    • l:光标向右移动一个字符。
    • 你还可以使用 Ctrl + f 向下翻页,Ctrl + b 向上翻页等操作来快速浏览文本内容。
  • 删除操作
    • x:删除光标所在位置的字符。
    • dd:删除光标所在的整行内容。
    • dw:删除从光标位置开始到单词末尾的字符。

(二)插入模式(Insert Mode)

在普通模式下,按下 i(在光标当前位置插入)、a(在光标后一个位置插入)、o(在光标所在行的下一行插入新行并进入插入模式)等键,就可以进入插入模式,此时就可以像在普通文本编辑器中一样输入文字内容了。输入完成后,按下 Esc 键就能回到普通模式。

(三)命令行模式(Command-Line Mode)

在普通模式下,按下 : 键就进入了命令行模式。这个模式下可以执行一些命令,比如保存文件、退出 Vim 等。

  • 保存文件:输入 :w 然后回车,就能保存当前编辑的文件。如果是新文件,需要指定文件名来保存,例如 :w myfile.txt 就是把内容保存到名为 myfile.txt 的文件中。
  • 退出 Vim
    • :q:如果文件没有修改,直接退出 Vim。
    • :q!:强制退出 Vim,即使文件有修改且没有保存也会退出(这种情况修改的内容会丢失哦,要慎用)。
    • :wq:先保存文件,然后退出 Vim,相当于 :w:q 的组合操作。

四、文本编辑基础操作

(一)复制、粘贴与剪切

  1. 复制
    在普通模式下,使用 yy 可以复制光标所在的整行内容。如果要复制多行,可以在 yy 前面加上数字,比如 3yy 就是复制从光标所在行开始的 3 行内容。
  2. 粘贴
    按下 p 键,会将复制的内容粘贴到光标所在位置的下一行;如果按下 P(大写的 P),则会粘贴到光标所在位置的上一行。
  3. 剪切
    其实就是先复制然后删除,例如 dd 操作删除了行,同时也相当于剪切了这行内容,后续可以用 p 等键粘贴到其他地方。

(二)查找与替换

  1. 查找
    在普通模式下,按下 / 键,然后输入要查找的字符串,再按回车键,Vim 就会从光标位置开始向下查找该字符串。如果想继续查找下一个匹配项,可以按下 n 键;如果想查找上一个匹配项,按 N 键。
  2. 替换
    使用命令 :s/旧字符串/新字符串/g 可以在当前行替换所有的旧字符串为新字符串。如果要在整个文件范围内替换,可以使用 :%s/旧字符串/新字符串/g。例如 :%s/hello/world/g 就是把文件中所有的 hello 都替换成 world。不过进行这种全局替换操作时要小心确认哦,以免替换错了重要内容。

(三)文本块操作

  1. 选择文本块
    在普通模式下,按下 v 键进入可视模式,然后通过移动光标可以选择一块文本区域,选好后可以进行复制(y 键)、删除(d 键)等操作,和普通的复制、删除操作类似,只是针对选好的文本块来执行。
  2. 列编辑模式(块选择模式)
    按下 Ctrl + v 进入列编辑模式,此时可以通过移动光标来选择多列文本,比如对于一些表格样式的文本,想同时在每一行的相同列位置进行修改、删除等操作,就可以用这个模式很方便地实现。例如想在每一行开头添加相同的字符,选好列后输入 I(大写的 I,在所选列的开头插入),输入要添加的字符,然后按 Esc 键,就会在每一行所选列位置添加好相应字符了。

五、Vim 的配置文件

(一)配置文件的位置

Vim 的配置文件通常是 ~/.vimrc(在用户的主目录下)。可以通过编辑这个文件来定制自己的 Vim 环境,比如设置语法高亮、显示行号等功能。

(二)常用配置示例

  1. 显示行号
    打开 ~/.vimrc 文件(如果没有可以新建一个),在文件中添加如下一行内容:
set number

保存文件后,下次打开 Vim 编辑文件时,就会看到每一行前面都显示行号了,这对于定位代码等文本内容很有帮助。

  1. 语法高亮
    添加以下配置语句:
syntax on

开启语法高亮后,Vim 在编辑代码等具有特定语法结构的文本时,会根据不同的语法元素用不同的颜色显示,让文本内容更清晰易读。

  1. 设置缩进
    比如设置每次按 Tab 键缩进的空格数,可以这样配置:
set tabstop=4
set shiftwidth=4

这里表示 Tab 键缩进相当于 4 个空格,并且在自动缩进等操作时也是按照 4 个空格的标准来进行的。

六、高级功能

(一)多文件编辑

  1. 同时打开多个文件
    在终端输入 vim file1.txt file2.txt 等命令,就能同时打开多个文件,此时 Vim 界面会显示多个文件的标签页(如果没有显示标签页,可以通过配置 set tabline 来显示)。
  2. 在文件之间切换
    使用 :n 命令可以切换到下一个文件,:N 命令可以切换到上一个文件。也可以通过 :e filename 命令打开指定的其他文件进行编辑。

(二)使用插件扩展功能

  1. 插件管理器的安装
    常见的插件管理器有 Vundle 和 Pathogen 等。以 Vundle 为例,先安装它,在终端中执行以下步骤:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

然后在 ~/.vimrc 文件中添加相关的配置来启用 Vundle,比如:

set nocompatible              " be iocompatible with vi
filetype off " required " set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call Vundle#begin() " let Vundle manage Vim-scripts (aka plugins)
Plugin 'VundleVim/Vundle.vim' " All of your Plugins must be added before the following line
call Vundle#end() " required
filetype plugin indent on " required
  1. 安装具体插件
    比如想要安装一个能自动补全代码的插件,在 ~/.vimrc 文件的 call Vundle#begin()call Vundle#end() 之间添加插件对应的配置行,像 Plugin 'Valloric/YouCompleteMe'(这里只是举例,YouCompleteMe 插件安装还有其他依赖和配置步骤,需要进一步按照其官方文档操作),然后在 Vim 中执行 :PluginInstall 命令就可以安装插件了。

(三)宏的使用

宏可以记录一系列操作,然后重复执行这些操作,很适合对重复的文本编辑任务进行批量处理。

  1. 录制宏
    在普通模式下,按下 q 键,然后再按一个字母(比如 a)来指定宏的名字,此时就开始录制操作了。比如你进行了复制、粘贴、修改一些文字等操作,完成后再次按下 q 键结束录制。
  2. 执行宏
    在需要重复执行刚才录制操作的地方,按下 @a(如果宏名字是 a 的话),就可以重复执行录制的那一系列操作了。你还可以指定重复执行的次数,比如 10@a 就是重复执行 10 次。

七、总结

通过以上从基础安装、模式讲解、文本编辑操作到配置文件以及高级功能等方面的介绍,相信大家对 Vim 这款强大的文本编辑器已经有了比较全面的认识。虽然一开始接触 Vim 可能感觉有些复杂,但是只要多多练习,熟练掌握各个模式和操作快捷键,你就能感受到它在文本编辑效率上带来的巨大优势,无论是日常的代码编写、文本处理还是系统配置文件的编辑等工作,Vim 都能成为你的得力助手,希望大家都能通过不断实践,从入门逐步走向精通

Linux Vim 最全面教程:从入门到精通的更多相关文章

  1. Android Studio教程从入门到精通

    最新2.0系列文章参考: Android Studio2.0 教程从入门到精通Windows版 - 安装篇Android Studio2.0 教程从入门到精通Windows版 - 入门篇Android ...

  2. Android Studio2.0 教程从入门到精通Windows版

    系列教程 Android Studio2.0 教程从入门到精通Windows版 - 安装篇Android Studio2.0 教程从入门到精通Windows版 - 入门篇Android Studio2 ...

  3. Android Studio2.0 教程从入门到精通Windows版 - 入门篇

    http://www.open-open.com/lib/view/open1468121363300.html 本文转自:深度开源(open-open.com)原文标题:Android Studio ...

  4. nginx教程从入门到精通

    [转]nginx教程从入门到精通 nginx教程写了一段时间,无意中发现,nginx相关文章已经达到了近100篇了.觉得很有必要汇总到一起,它是我们运维生存时间的一片心血,他是学习nginx的同学必看 ...

  5. Android OpenGL ES 开发教程 从入门到精通

    感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...

  6. 资源汇集:nginx教程从入门到精通

    http://linux.cn/article-4279-1.html

  7. Elasticsearch教程-从入门到精通(转载)

    转载,原文地址:http://mageedu.blog.51cto.com/4265610/1714522?utm_source=tuicool&utm_medium=referral 各位运 ...

  8. Elasticsearch教程-从入门到精通(转)

    原文:http://mageedu.blog.51cto.com/4265610/1714522?utm_source=tuicool&utm_medium=referral 各位运维同行朋友 ...

  9. Android Studio2.0 教程从入门到精通Windows版 - 安装篇

    详见:http://www.open-open.com/lib/view/open1468118887690.html

  10. Android Studio2.0 教程从入门到精通Windows版 - 提高篇

    第二篇我们开发了一个Hello World应用,并介绍Android Sutdio的界面和如何调试应用,接下来将介绍一些常用的快捷键和必备插件. 常用快捷键 代码跳转 描述:跳转是为了方便代码位置的定 ...

随机推荐

  1. 一图归纳三大种类矩阵范数:诱导范数,元素范数,Schatten范数,涵盖谱范数,2范数

    转载自:https://blog.csdn.net/qq_27261889/article/details/87902480

  2. R数据分析:临床预测模型实操,校准曲线和DCA曲线做法示例

    之前给大家写过好几篇很详细的临床预测模型的原理解析,本文接着之前的文章,继续写做法,首先依然是找到一篇参照论文,今天我们的示例文章是一篇来自美国心脏学会杂志的文章: Zhang X, Yuan K, ...

  3. [转载] 十问 TiDB :关于架构设计的一些思考 TiDB

    做 TiDB 的缘起是从思考一个问题开始的:为什么在数据库领域有这么多永远也躲不开的坑?从 2015 年我们写下第一行代码,3 年以来我们迎面遇到无数个问题,一边思考一边做,尽量用最小的代价来快速奔跑 ...

  4. swagger 文件上传以及requestbody参数传递

    swagger用来做普通的API测试很方便,在实际开发过程中,经常会有文件上传,或者通过reuestbody传递数据等方式. 这个时候swagger的配置就有一些特殊了 . swagger reque ...

  5. Qt编写的项目作品17-自定义曲线图柱状图

    一.功能特点 可设置X轴Y轴范围值. 可设置背景颜色.文本颜色.网格颜色. 可设置三条曲线颜色.颜色集合. 可设置是否显示十字定位线,支持分别开启横向或者纵向定位线. 可设置十字定位线的宽度.颜色. ...

  6. 综述😋Security and Privacy Challenges of ✌Large Language Models A Survey

  7. 揭秘百度IM消息中台的全量用户消息推送技术改造实践

    本文内容由百度技术团队分享,原题"基于公共信箱的全量消息实现",为了帮助理解,有较多修订.内容重组和重新排版. 1.引言 百度的IM消息中台为百度APP以及厂内百度系产品提供即时通 ...

  8. (数据科学学习手札164)在vscode中调用Deepseek进行AI辅助编程

    本文示例配置文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,最近国产大模型Deepse ...

  9. RestTemplate 详解

    RestTemplate 简介 RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求.POST 请求.PUT ...

  10. AVX512

    最近接触到SIMD编码,就不可避免的查到了AVX指令集,两者有什么关系呢,了解一下? 问:AVX是什么? 答:是一套指令集 下面具体看: AVX 以下内容主要转载自:AVX指令集是什么?它的应用又有哪 ...