【开发工具】Vi(Vim)编辑器


前言

在Linux 平台经常会遇到需要在平台里面编辑文件,甚至是写代码的需求,本文介绍VI编辑器的常用用法,应用工具更加快捷方便。


一、VI编辑器和VIM编辑器

vi(Visual Editor)
是 Unix/Linux 系统自带的 经典文本编辑器,诞生于 1976 年(Bill Joy 开发)。功能简单,是早期系统的标配。

Vim(Vi IMproved)
是 vi 的 增强版,由 Bram Moolenaar 在 1991 年开发,继承了 vi 的操作方式,但扩展了大量功能(如语法高亮、多窗口、插件系统等)。

注意:由于VI编辑器是系统自带的工具,本文主要针对VI编辑器功能说明,VI的操作和VIM是一样的,VI有的功能VIM也有。

二、使用说明

1. 三种工作模式

Vi 工具有三种工作模式,在这三种工作模式里面包含了Vi的所有用法。

  1. 插入模型(编辑模式):在此模式可以对文本编辑
  2. 命令行模式(默认模式):不可编辑,但是可以复制粘贴,进入编辑模式后按ESC键回到命令行模式
  3. 底行模式:光标在底行,通常通过:+ 命令,可以进行文本的搜索,保存,退出。‘

2. 常见使用场景

  1. 编辑模式
  • i : 推荐使用,在光标位置开始编辑
  • I : 在光标位置所有的一行,第一个位置开始编辑
  • a: 推荐使用,在光标位置后退一个位置开始编辑
  • A:在光标位置所有行最后一个位置开始编辑
  • O:在光标位置前面一行开始编辑
  • o :推荐使用,在光标位置下一行开始编辑

注意:通常 i 进入编辑模式就已经够了,然后 o 进入光标新起一行开始编辑也是比较实用的。

  1. 命令行模式
    通常默认就是命令行模式,推荐习惯性的使用命令行模式先按下ESC键,它的特点是输入即使生效,不用回车。然后开始执行如下命令
  • dd : 删除当前光标所在行
  • x: 删除光标后的字符
  • 5x: 删除光标后的5个字符(数字可以变)
  • D :删除光标后的所有字符
  • 5dd: 删除 5 行 (数字可以变,从光标以下开始删除)
  • u: 撤销(undo)
  • yy: 复制当前行
  • 5yy: 复制5行,同样数字可以变得。
  • p: 粘贴(从光标下一行开始粘贴)
  • O/o: 在上面或下方插入新空行(会进入编辑模式)
  • h/j/k/l :上下左右移动光标
  • w/b : 在一行里面按单词左右移动,提高移动光标的效率
  • 0/ $ : 数字0跳到行首,$ 跳到行尾
  • gg/G : 跳到整篇代码的行首和最后一行
  • 18gg : 跳到第18行(在debug错行比较实用)
  • Ctrl + u / Ctrl + d : 上翻页和下翻业
  • J : 合并当前行和下一行
  1. 底行模式
    底行模式在命令模式通过: 字符输入命令,通常命令更加复杂一些。

文件操作:

  • :!+ linux命令 :这个用来编辑的同时和系统交互,同时查看系统信息
  • :w 保存文件
  • :q 退出
  • :w!/q! 强制保存,强制退出(在只读权限时候使用)
  • :wq (或者:x)保存退出,这个较为常用,编辑完成后保存退出
  • :wq! 强制保存退出
  • :w <文件名> 另存为新的文件
  • :e <文件名> 打开新文件编辑
  • :e! 重新加载,重置,放弃更改

工具和复制:

  • :n 跳转到第n行。
  • :$ 跳转到最后一行
  • :set number (set nu) 显示行号
  • :set nonu 隐藏行号
  • :m,n co k 将m 到第n行 复制到第 k行后
  • :m,n d删除第m到第n行
  • :%d 删除全部内容
  • :%y 复制全部,通过p粘贴

搜索和替换:

  • :/words 向下搜索(n 跳转到下一个)
  • :?words 向上搜索
  • :%s/old/new/gc 全局替换,old为new, 替换时候询问
  • :%s/old/new/g 将old替换为new, 不询问

总结

以上用法已经基本满足平时对vi编辑器的使用了,如果用vi来写代码,可能需要修改缩进问题。
编辑 ~/.vimrc 文件(没有则新建):


" 通用缩进设置
set tabstop=4       " Tab 显示为 4 个空格
set shiftwidth=4    " 自动缩进宽度为 4
set expandtab       " Tab 转空格
set autoindent      " 自动继承缩进
set smartindent     " 智能缩进

" 文件类型特定缩进(可选)
autocmd FileType python setlocal tabstop=4 shiftwidth=4 expandtab
autocmd FileType javascript setlocal tabstop=2 shiftwidth=2 expandtab
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值