Linux Vim 最全面教程:从入门到精通
一、引言
Vim 是一款功能强大且在 Linux 系统中广泛使用的文本编辑器。它有着高效的编辑模式、丰富的快捷键以及众多强大的功能,对于想要深入学习 Linux 系统操作以及进行文本处理相关工作的新手来说,掌握 Vim 是很有必要的。不过一开始接触 Vim 可能会觉得有些复杂,不用担心,在这篇教程中,将从最基础的部分开始,逐步带大家从入门走向精通。
二、Vim 的安装
(一)在常见 Linux 发行版中安装
- Ubuntu 系统
在终端中输入以下命令:
sudo apt-get update
sudo apt-get install vim
先更新软件源,然后通过 apt-get 命令来安装 Vim。安装完成后,可以通过输入 vim --version 来查看 Vim 的版本信息,验证是否安装成功。
- 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的组合操作。
四、文本编辑基础操作
(一)复制、粘贴与剪切
- 复制:
在普通模式下,使用yy可以复制光标所在的整行内容。如果要复制多行,可以在yy前面加上数字,比如3yy就是复制从光标所在行开始的 3 行内容。 - 粘贴:
按下p键,会将复制的内容粘贴到光标所在位置的下一行;如果按下P(大写的 P),则会粘贴到光标所在位置的上一行。 - 剪切:
其实就是先复制然后删除,例如dd操作删除了行,同时也相当于剪切了这行内容,后续可以用p等键粘贴到其他地方。
(二)查找与替换
- 查找:
在普通模式下,按下/键,然后输入要查找的字符串,再按回车键,Vim 就会从光标位置开始向下查找该字符串。如果想继续查找下一个匹配项,可以按下n键;如果想查找上一个匹配项,按N键。 - 替换:
使用命令:s/旧字符串/新字符串/g可以在当前行替换所有的旧字符串为新字符串。如果要在整个文件范围内替换,可以使用:%s/旧字符串/新字符串/g。例如:%s/hello/world/g就是把文件中所有的hello都替换成world。不过进行这种全局替换操作时要小心确认哦,以免替换错了重要内容。
(三)文本块操作
- 选择文本块:
在普通模式下,按下v键进入可视模式,然后通过移动光标可以选择一块文本区域,选好后可以进行复制(y键)、删除(d键)等操作,和普通的复制、删除操作类似,只是针对选好的文本块来执行。 - 列编辑模式(块选择模式):
按下Ctrl + v进入列编辑模式,此时可以通过移动光标来选择多列文本,比如对于一些表格样式的文本,想同时在每一行的相同列位置进行修改、删除等操作,就可以用这个模式很方便地实现。例如想在每一行开头添加相同的字符,选好列后输入I(大写的 I,在所选列的开头插入),输入要添加的字符,然后按Esc键,就会在每一行所选列位置添加好相应字符了。
五、Vim 的配置文件
(一)配置文件的位置
Vim 的配置文件通常是 ~/.vimrc(在用户的主目录下)。可以通过编辑这个文件来定制自己的 Vim 环境,比如设置语法高亮、显示行号等功能。
(二)常用配置示例
- 显示行号:
打开~/.vimrc文件(如果没有可以新建一个),在文件中添加如下一行内容:
set number
保存文件后,下次打开 Vim 编辑文件时,就会看到每一行前面都显示行号了,这对于定位代码等文本内容很有帮助。
- 语法高亮:
添加以下配置语句:
syntax on
开启语法高亮后,Vim 在编辑代码等具有特定语法结构的文本时,会根据不同的语法元素用不同的颜色显示,让文本内容更清晰易读。
- 设置缩进:
比如设置每次按Tab键缩进的空格数,可以这样配置:
set tabstop=4
set shiftwidth=4
这里表示 Tab 键缩进相当于 4 个空格,并且在自动缩进等操作时也是按照 4 个空格的标准来进行的。
六、高级功能
(一)多文件编辑
- 同时打开多个文件:
在终端输入vim file1.txt file2.txt等命令,就能同时打开多个文件,此时 Vim 界面会显示多个文件的标签页(如果没有显示标签页,可以通过配置set tabline来显示)。 - 在文件之间切换:
使用:n命令可以切换到下一个文件,:N命令可以切换到上一个文件。也可以通过:e filename命令打开指定的其他文件进行编辑。
(二)使用插件扩展功能
- 插件管理器的安装:
常见的插件管理器有 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
- 安装具体插件:
比如想要安装一个能自动补全代码的插件,在~/.vimrc文件的call Vundle#begin()和call Vundle#end()之间添加插件对应的配置行,像Plugin 'Valloric/YouCompleteMe'(这里只是举例,YouCompleteMe 插件安装还有其他依赖和配置步骤,需要进一步按照其官方文档操作),然后在 Vim 中执行:PluginInstall命令就可以安装插件了。
(三)宏的使用
宏可以记录一系列操作,然后重复执行这些操作,很适合对重复的文本编辑任务进行批量处理。
- 录制宏:
在普通模式下,按下q键,然后再按一个字母(比如a)来指定宏的名字,此时就开始录制操作了。比如你进行了复制、粘贴、修改一些文字等操作,完成后再次按下q键结束录制。 - 执行宏:
在需要重复执行刚才录制操作的地方,按下@a(如果宏名字是a的话),就可以重复执行录制的那一系列操作了。你还可以指定重复执行的次数,比如10@a就是重复执行 10 次。
七、总结
通过以上从基础安装、模式讲解、文本编辑操作到配置文件以及高级功能等方面的介绍,相信大家对 Vim 这款强大的文本编辑器已经有了比较全面的认识。虽然一开始接触 Vim 可能感觉有些复杂,但是只要多多练习,熟练掌握各个模式和操作快捷键,你就能感受到它在文本编辑效率上带来的巨大优势,无论是日常的代码编写、文本处理还是系统配置文件的编辑等工作,Vim 都能成为你的得力助手,希望大家都能通过不断实践,从入门逐步走向精通
Linux Vim 最全面教程:从入门到精通的更多相关文章
- Android Studio教程从入门到精通
最新2.0系列文章参考: Android Studio2.0 教程从入门到精通Windows版 - 安装篇Android Studio2.0 教程从入门到精通Windows版 - 入门篇Android ...
- Android Studio2.0 教程从入门到精通Windows版
系列教程 Android Studio2.0 教程从入门到精通Windows版 - 安装篇Android Studio2.0 教程从入门到精通Windows版 - 入门篇Android Studio2 ...
- Android Studio2.0 教程从入门到精通Windows版 - 入门篇
http://www.open-open.com/lib/view/open1468121363300.html 本文转自:深度开源(open-open.com)原文标题:Android Studio ...
- nginx教程从入门到精通
[转]nginx教程从入门到精通 nginx教程写了一段时间,无意中发现,nginx相关文章已经达到了近100篇了.觉得很有必要汇总到一起,它是我们运维生存时间的一片心血,他是学习nginx的同学必看 ...
- Android OpenGL ES 开发教程 从入门到精通
感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...
- 资源汇集:nginx教程从入门到精通
http://linux.cn/article-4279-1.html
- Elasticsearch教程-从入门到精通(转载)
转载,原文地址:http://mageedu.blog.51cto.com/4265610/1714522?utm_source=tuicool&utm_medium=referral 各位运 ...
- Elasticsearch教程-从入门到精通(转)
原文:http://mageedu.blog.51cto.com/4265610/1714522?utm_source=tuicool&utm_medium=referral 各位运维同行朋友 ...
- Android Studio2.0 教程从入门到精通Windows版 - 安装篇
详见:http://www.open-open.com/lib/view/open1468118887690.html
- Android Studio2.0 教程从入门到精通Windows版 - 提高篇
第二篇我们开发了一个Hello World应用,并介绍Android Sutdio的界面和如何调试应用,接下来将介绍一些常用的快捷键和必备插件. 常用快捷键 代码跳转 描述:跳转是为了方便代码位置的定 ...
随机推荐
- 微信开发者工具请求接口 Provisional headers are shown
前情 最近全权负责公司小程序项目的开发,使用的uniapp技术栈. 坑 在和服务端联调的时候发现,接口pending很久,而且时不时的报Provisional headers are shown,而且 ...
- DA14531芯片固件逆向系列(2)- 操作系统底层机制分析
首发于先知论坛 https://xz.aliyun.com/t/9186 概述 DA145x软件平台利用了由Riviera Waves许可的小型高效实时内核,内核提供以下功能: 任务创建和状态转换. ...
- idea左上角project一片绿的解决方法
idea突然project底色一片绿,真的心里慌得一批.. 解决方法: 打开File-Settings,按图示找到地方,关闭FileColor,即可.
- 数据万象AVIF图片压缩 - 小程序省流量利器
导语 微信小程序因其便捷的开发环境和天然的微信生态,使得越来越多企业平台通过小程序建立自己的业务.在小程序上使用图片非常广泛,但传统格式图片(如 JPG/PNG)占用空间大,加载速度慢,可能导致昂贵的 ...
- 【金TECH频道】企业架构转型组合拳来袭,助力金融机构一臂之力
当前,数字化转型已经成为时代共性课题在政策和技术的双重指引下金融机构逐渐走向差异化竞争的格局面对转型阵痛以契合.明晰的战略规划及企业架构调整来辅助业务变革成为助力企业数字化转型的有效路径金融机构也纷纷 ...
- HBaseIntrospector
package x;import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; ...
- Qt音视频开发09-ffmpeg内核音视频同步
一.前言 用ffmpeg来做音视频同步,个人认为这个是ffmpeg基础处理中最难的一个,无数人就卡在这里,怎么也不准,本人也是尝试过网上各种demo,基本上都是渣渣,要么仅仅支持极其少量的视频文件比如 ...
- LLM Defenses Are Not Robust😭to Multi-Turn Human Jailbreaks Yet😲
- [转]Winform实现多线程异步更新UI(进度及状态信息)
引言 在进行Winform程序开发需要进行大量的数据的读写操作的时候,往往会需要一定的时间,然在这个时间段里面,界面ui得不到更新,导致在用户看来界面处于假死的状态,造成了不好的用户体验.所以在大量数 ...
- 在Ubuntu WSL2里配置GDAL Docker环境
在Ubuntu WSL2里配置GDAL Docker环境 启用systemd # Ubuntu中执行 echo -e "[boot]\nsystemd=true" | sudo t ...