一、vim简介

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

下面归纳vi的相关基本用法,基本与vim通用。

二、如何使用

2.1 三种模式

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(插入模式/编辑模式)(Insert mode)和底线命令模式(底行模式/末行模式)(Last line mode)。 这三种模式的作用分别是:

命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式
在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
按ESC键可随时退出底线命令模式。

需要注意的是:编辑模式与命令行模式之间是不能互相切换的。

2.2 常用操作

一般模式可用的按钮说明


移动光标
【h、j、k、l】,分别控制光标左、下、上、右移一格
按【ctrl+b】屏幕往"后"移动一页
按【ctrl+f】屏幕往"前"移动一页

【n(space)】光标向右移动n个字符
【Home】移动到这一行的最前面字符处:0数字,但不能用数字小键盘上的数字
【End】 移动到这一行的最后面字符处
【w】光标跳到下个字的开头
【e】光标跳到下个字的字尾

【H】 光标移动到这个屏幕的最上方那一行的第一个字符
【M】 光标移动到这个屏幕的中间那一行的第一个字符
【L】光标移动到这个屏幕的最下方那一行的第一个字符

【G】 移动到这个文件的最后一行
【nG】移动到这个文件的第n行(可配合:set nu)
【gg】 移动到这个文件的第一行,相当于1G
【n(Enter)】光标向下移动n行

查找与替换
【/word】 向光标向下寻找一个名称为word的字符串
【?word】 向光标向上寻找一个名称为word的字符串
【n】 代表重复前一个查找的动作
【N】 与n刚好相反,为【反向】进行行前一个查找动作

【:n1,n2s/word1/word2/g】 n1与n2为数字,在第n1与n2行之间查找word1 这个字符串,并将该字符串替换为word2

【:1,$s/word1/word2/g】 从第一行到最后一行查找word1字符串,并将该字符串替换为word2
【:1,$s/word1/word2/gc】 从第一行到最后一行查找word1字符串,并将该字符串替换为word2 ,且在替换前提示用户确认是否进行替换

删除、复制与粘贴

【x】 为向后删除一个字符 (相当于【del】键)
【X】 为向前删除一个字符(相当于【backspace】键)
【nx】 连续向后删除n个字符

【dd】 删除光标所在行
【ndd】 删除光标所在的向下n行
【d1G】 删除光标所在行到第一行的所有数据
【dG】 删除光标所在到最后一行的所有数据

【d$】 删除光标所在处,到该行的最后一个字符
【d0】 删除光标所在处,到该行的最前一个字符

【yy】 复制光标所在的那一行
【nyy】 复制光标所在的向下n列

【y1G】 复制光标所在行到第一行的所有数据
【yG】 复制光标所在行到最后一行的所有数据

【y0】 复制光标所在的那个字符到该行行首的所有数据
【y$】 复制光标所在的那个字符到该行行尾的所有数据

【p】将已复制的数据在光标下一行粘贴上
【P】 则为贴在光标的上一行

【u】 恢复前一个操作
【Ctrl+r】重做上一个操作

【.】 是重复前一个操作

一般模式切换到编辑模式的可用的按钮说明


【i, I】 进入编辑模式:
i 为【从目前光标所在处插入】
I 为【在目前所在行的第一个非空格符处开始插入】

【a, A】 进入编辑模式(Insert mode):
a 为【从目前光标所在的下一个字符处开始插入】
A 为【从光标所在行的最后一个字符处开始插入】

【o, O】 进入编辑模式:
o 为【在目前光标所在的下一行处插入新的一行】
O 为在目前光标所在处的上一行插入新的一行

【r, R】 进入取代模式:
r 只会取代光标所在的那一个字符一次
R会一直取代光标所在的文字,直到按下 ESC 为止;

【Esc】 退出编辑模式,回到一般模式

一般模式切换到命令行模式可用的按钮说明


【:w】 保存编辑的内容
【:w!】强制写入该文件,但跟你对该文件的权限有关
【:q】 离开vi
【:q!】 不想保存修改强制离开
【:wq】 保存后离开
【:x】 保存后离开
【ZZ】 若文件没有更动,则不保存离开,若文件已经被更改过,则保存后离开

【:w filename】 将编辑的数据保存成另一个文件(类似另存)
【:r filename】 在编辑的数据中,读入另一个文件的数据。即将【filename】 这个文件的内容加到光标所在行后面。

【:n1,n2 w filename】 将n1到n2的内容保存成filename这个文件。
【:! command】暂时离开vi 到命令行模式下执行command的显示结果!例如 【:! ls /home】即可在 vi 当中察看/home底下以ls输出的文件信息!

【:set nu】 显示行号
【:set nonu】 与 set nu 相反,为取消行

常见问题

1)vim中右键点击粘贴无效,反倒是进入了Visual模式。
修改/etc/vim/vimrc文件,在最后加入一句:
set mouse=
注意等号后无任何字符。

vi与vim的区别

它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。

vim的这些优势主要体现在以下几个方面:
1、多级撤销

我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制地撤消。

2、易用性

vi只能运行于unix中,而vim不仅可以运行于unix,还可以运行于windows ,mac等多种操作平台。

3、语法加亮

vim可以用不同的颜色来加亮你的代码。

4、可视化操作

就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

5、对vi的完全兼容

某些情况下,你可以把vim当成vi来使用。

vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本。vi适用于文本编辑,但是vim更适用于coding。

附件:
vim键盘图

参考:
菜鸟教程
https://www.cnblogs.com/lijia0511/p/5644566.html
https://www.cnblogs.com/baichuanhuihai/p/7928404.html

vi/vim使用教程相关推荐

  1. linux下编辑文件实验,Linux上最常用的文本编辑器vi/vim使用教程

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interfa ...

  2. mac OS vi/vim 使用教程

    vi/vim 的使用 基本上 vi/vim 共分为三种模式 分别是 命令模式(Command mode) 输入模式(Insert mode) 底线命令模式(Last line mode) 命令模式: ...

  3. vi/vim简介及使用教程

    声明:本博文转载自该网站.该网站上还有很多其他Linux和shell的简介于教程,有兴趣有需要的可以收藏该网址. 我觉得上面提到的网站给出的内容非常受用,图文并茂,简洁易懂,比百科强太多,忍不住想要转 ...

  4. Linux入门教程——VI/VIM 编辑器

    前言 本文小新为大家带来 Linux入门教程--VI/VIM 编辑器 相关知识,具体内容包括VI/VIM是什么,VIM的三种工作模式介绍,包括:一般模式,编辑模式,指令模式,以及模式间转换等进行详尽介 ...

  5. 【Liunx】Linux vi/vim 教程

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...

  6. Linux vi/vim教程

    文章转自:http://www.runoob.com/linux/linux-vim.html 版权归原作者! 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存 ...

  7. vi/vim 总结 | emacs evil 使用教程

    使用 evil 之前,得了解 vi/vim 的一些基本常识. 命令模式下的游标是一个方块,它的当前位置是指块的最左边.下图中当前游标所在位置是两个 e 的中间. 文章目录 模式 命令模式(执行管理任务 ...

  8. vi(vim)快捷键小记

    1.前言 vi是"visual interface"的缩写,vim是vi IMproved(增强版的vi).总结一下自己平时常用的vim快捷键,当是忘记也好,后续会不定期更新. 2 ...

  9. LFCS 系列第二讲:如何安装和使用纯文本编辑器 vi/vim

    LFCS 系列第二讲:如何安装和使用纯文本编辑器 vi/vim 几个月前, Linux 基金会发起了 LFCS (Linux 基金会认证系统管理员Linux Foundation Certified ...

最新文章

  1. SM$TS_USED,SM$TS_FREE,SM$TS_AVAIL
  2. elasticsearch _field_stats 源码分析
  3. PowerPoint2010 中停止使用和修改的功能
  4. thymeleaf依赖_玩转SpringBoot集成 Thymeleaf 模版引擎
  5. boost::hana::equal用法的测试程序
  6. GDCM:二个DICOM文件的diff差异的测试程序
  7. google mock分享
  8. 人的手臂的自由度的数目以及六自由度机械臂的限制
  9. RealProxy AOP的实现
  10. java方法的重载 编程题,java面试编程题:重载方法
  11. 量子力学或证实人类生死并无意义
  12. [转载]借助LVS+Keepalived实现负载均衡
  13. 分享几个蛋白质互作网站——String (二)多基因蛋白互作
  14. LightOJ 1406 Assassin`s Creed
  15. PHP网页表单输入框输入字符简体繁体互转(非JS)
  16. mysql 模糊查找表名
  17. linux – signal 信号列表
  18. AngularJS学习笔记1
  19. 他山之石 | 知识图谱在美团推荐场景中的应用实践
  20. 子类内部调用父类成员函数,及子类对象在外部调用父类成员函数问题(C++)

热门文章

  1. 云游戏是大厂的“游戏”之腾讯云云游戏指南
  2. 端侧AI:高隐私、高可靠的智能个性化服务
  3. 特别策划:视频会议协作平台的机会与技术挑战
  4. 林绪虹:看好QoE、音视频内容理解与AV1
  5. Java多线程之单例模式在多线程环境下的安全问题
  6. 2019DTCC大会分享:分布式数据库全局读一致性
  7. PMP之项目相关方管理
  8. configure: error: Neither flex nor lex was found.
  9. MySQL MGR与Galera性能测试
  10. 什么?使用cmd登陆mysql的命令忘了?我辞职学习去了。。。