Linux Vim全面教程

引言

Vim,源自Vi IMproved,是一个高度可配置的文本编辑器,用于创建和修改任何类型的文本。它是自由软件,可在大多数Unix系统和Linux发行版中找到。

Vim的模式

Vim有多种模式,但主要分为以下几种:

  • 普通模式(Normal Mode):默认模式,用于移动光标和执行命令。
  • 插入模式(Insert Mode):用于插入文本。
  • 可视模式(Visual Mode):用于选择文本块。
  • 命令行模式(Command-line Mode):用于输入命令,如查找、替换等。

Vim基础

启动Vim

在终端中输入 vim 加上文件名,例如 vim example.txt

退出Vim

  • :q - 退出Vim。
  • :wq - 保存并退出。
  • :q! - 强制退出不保存。

插入文本

  • i - 进入插入模式在光标前插入。
  • I - 进入插入模式并在行首插入。
  • a - 进入插入模式并在光标后插入。
  • A - 进入插入模式并在行尾插入。

移动光标

  • hjkl - 分别代表左、下、上、右移动。
  • G - 移动到文件末尾。
  • gg - 移动到文件开头。

删除和修改

  • dd - 删除(cut)当前行。
  • u - 撤销。
  • Ctrl + r - 重做。

复制和粘贴

  • yy - 复制当前行。
  • p - 粘贴到光标后。

查找和替换

  • /word - 查找"word"。
  • :%s/old/new/g - 替换文件中所有的"old"为"new"。

分屏

  • :split:sp - 水平分割窗口。
  • :vsplit:vsp - 垂直分割窗口。

高级技巧

模式间快速切换

  • Q - 从普通模式切换到可视模式。
  • Ctrl + [ - 从插入模式或命令行模式返回到普通模式。

多光标编辑

  • 在可视模式下,使用 O 选择行首,o 选择行尾。

宏录制

  • q<letter> - 开始录制宏。
  • q - 结束录制。
  • @<letter> - 执行宏。

正则表达式

Vim支持正则表达式,用于复杂的查找和替换。

自定义快捷键

通过 Vim 脚本自定义快捷键和命令。

插件管理

使用插件如 Vim-plug 来扩展 Vim 的功能。

Vim配置

配置文件

Vim的配置文件是 ~/.vimrc,在其中可以设置快捷键、插件和其他配置。

语法高亮

启用语法高亮以改善代码可读性。

缩进

根据编程语言设置自动缩进。

状态栏

自定义状态栏显示的信息。

结语

Vim是一个功能强大的文本编辑器,通过熟练掌握其使用,可以极大提高编辑效率。本教程覆盖了Vim的基础知识和一些高级特性,但Vim的世界远不止于此。推荐阅读官方文档 :help 来进一步深入学习。

参考文献

  • Vim官方文档:vim -h
  • Vimcasts.org:提供大量Vim教程和技巧。

请注意,Vim的学习曲线可能比较陡峭,但随着实践的增加,你将发现其强大的功能和灵活性。不要犹豫尝试不同的配置和插件,找到最适合你的工作流程。

相关推荐
迪康coolmu16 分钟前
企业文件外发防泄漏实践:从通道封堵到三层全链路管控
大数据·运维·网络·人工智能·安全·阿里云
comedate8 小时前
Windows / Linux GPU 虚拟内存布局差异与 CUDA 越界访问行为
linux·windows·mmu·cuda 越界访问
暴力求解10 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
JoyCong199810 小时前
ToDesk个人版、专业版、游戏版、设计版、性能版、团队版权益介绍
大数据·运维·游戏·远程工作·远程操作
ltl11 小时前
序列化格式深度对比:Protobuf、FlatBuffers、Cap’n Proto
linux
lengjingzju11 小时前
编译与调试完全指南—第17章 总结
linux
ltl11 小时前
容器网络性能真相:veth vs macvlan vs eBPF 数据面
linux
Elastic 中国社区官方博客12 小时前
ES95:面向 Elasticsearch 时间序列指标的自适应压缩
大数据·运维·elasticsearch·搜索引擎·架构·全文检索
我不会插花弄玉12 小时前
9.进程间通信(上)【由浅入深-Linux】
linux·共享内存·进程通信
mqiqe13 小时前
AgentScope Java 2.0 Agent 状态存储(AgentStateStore)深度解析:构建可恢复、可扩展的智能体运行时
java·运维·网络