vi的第一版是由Bill Joy在1978年写成的,当时他是UC Berkeley的学生。后来他共同创建了神奇的Sun公司。vi来源于visual一词,目标是在终端上可视化地模拟文本的编辑,是的更人性化。由于使用起来还是不太方便,后来Bram Moolenaar做了改进,成为vim(vi improved),因为得到了很大的提升,所以现在大多数Linux发行版都预装有vim。

为什么要用vim,因为被人们吐槽,诟病一堆,但那都是菜鸟的想法。试想当系统崩溃时,如何编写文件,恢复系统,最后还真只能通过vim来编辑脚本了。对于菜鸟来说,多少懂得点vim的命令,不会是多余的。vi的命令一大堆,要记住还真要反复的联系,实际用到的命令很少,这里罗列出一些常用的vim命令。

vim的文本编辑基本步骤是,启动vim,编辑文本,保存文本,退出vim。下面分别简单的介绍相关的命令。

1、启动vim

想要启动vim,只要简单的输入vi或者vim命令即可,命令如下:

$ vi

$ vim



$ vim testvim.txt
会输出以下的结果
VIM - Vi Improved
....

2、编辑文本

vim有两种模式,编辑模式和命令模式,vim启动时默认为命令模式,当处于编辑模式时,可以通过Esc按键切换到命令模式,在命令模式下,用户可输入相关的命令完成相应的操作,例如完成光标移动,文件保存和程序退出等操作。

2.1、插入模式

按下”i”按键进入插入模式。之后,我们应该 在屏幕底部看到下面一行,如果 vim运行在高级模式下(这不会出现在 vim 兼容模式下):

-- INSERT --

现在我们能输入一些文本了。试着输入这些文本:

Hello world, I am testing VIM text editor

按下 Esc 按键,退出插入模式并返回命令模式。

2.2、光标移动

vi提供了大量的移动命令,其中一些是与less阅读器共享的,部分命令如下表所示:

按键 移动光标
l or 右箭头 向右移动一个字符
h or 左箭头 向左移动一个字符
j or 下箭头 向下移动一行
k or 上箭头 向上移动一行
0 (零按键) 移动到当前行的行首。
^ 移动到当前行的第一个非空字符。
$ 移动到当前行的末尾。
w 移动到下一个单词或标点符号的开头。
W 移动到下一个单词的开头,忽略标点符号。
b 移动到上一个单词或标点符号的开头。
B 移动到上一个单词的开头,忽略标点符号。
Ctrl-f or Page Down 向下翻一页
Ctrl-b or Page Up 向上翻一页
numberG 移动到第 number 行。例如,1G 移动到文件的第一行。
G 移动到文件末尾的行首。

2.3、删除文本

删除文本中的内容,不认命令如下:

命令 删除的文本
x 当前字符
3x 当前字符及其后的两个字符。
dd 当前行。
5dd 当前行及随后的四行文本。
dW 从光标位置开始到下一个单词的开头。
d$ 从光标位置开始到当前行的行尾。
d0 从光标位置开始到当前行的行首。
d^ 从光标位置开始到文本行的第一个非空字符。
dG 从当前行到文件的末尾。
d20G 从当前行到文件的第20行。

2.4、复制,剪切和粘贴

对文本中的内容进行复制,剪切和粘贴等操作,部分命令如下:

命令 复制的内容
yy 当前行。
5yy 当前行及随后的四行文本。
yW 从当前光标位置到下一个单词的开头。
y$ 从当前光标位置到当前行的末尾。
y0 从当前光标位置到行首。
y^ 从当前光标位置到文本行的第一个非空字符。
yG 从当前行到文件末尾。
y20G 从当前行到文件的第20行。

3、保存文本

切换到命令模式下,通过输入:键,按下冒号键之后,一个冒号:字符应该出现在屏幕的左下角,我们再冒号后面输入w字符(write),如果保存在已知的文件下,就不需要输入文件名了。然后按下回车Enter:

:w

或指定文件名保存

:w testvim.txt

文件将会写入到硬盘,并且我们应该在屏幕底部得到一个确认信息,就像这样:

"testvim.txt" [New] 1L, 42C written

4、退出vim

要退出vim,输入下面的命令(注意冒号:是命令的一部分):

:q

shell 提示符应该返回。如果由于某种原因,vi 不能退出(通常因为我们对文件做了修改,却没有保存文件)。 通过给命令加上叹号,我们可以告诉 vi 我们要强制退出 vi。命令如下:

:q!

参考资料

1、vi简介

Linux知识(6)----VIM的更多相关文章

  1. J2EE程序员应该要掌握的linux知识

    J2EE程序员应该要掌握的linux知识 大型J2EE应用都在建构在linux环境下的.开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试.但是最后的发布还 ...

  2. 夯实基础系列四:Linux 知识总结

    前言 前三节内容传送门: 夯实基础系列一:Java 基础总结 夯实基础系列二:网络知识总结 夯实基础系列三:数据库知识总结 现在很多公司项目部署都使用的是 Linux 服务器,互联网公司更是如此.对于 ...

  3. Linux知识:/root/.bashrc与/etc/profile的异同

    Linux知识:/root/.bashrc与/etc/profile的异同 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shel ...

  4. Linux下面对于VIM编辑器的代码折叠使用与screen

    VIM设置代码折叠 1. 折叠方式 可用选项 'foldmethod' 来设定折叠方式:set fdm=*****.有 6 种方法来选定折叠:          manual           手工 ...

  5. My way on Linux - 知识梳理计划

    知识梳理计划图 近期计划把自己学习的工作中用到的Linux知识梳理下,敬请期待.

  6. 欢迎关注我的微信公众账号:Linux技巧(微信号:irefactoring),一起学习Linux知识~~~

    最近很少写博客了,一方面是近期工作比较繁忙,第二是把精力都放在GitHub和读源码去了. 申请了一个微信公众账号:Linux技巧 微信ID:irefactoring(意思是爱重构) ========= ...

  7. Linux系列教程(十)——Linux文本编辑器vim

    通过前面几篇博客我们终于结束了Linux常用命令的介绍,Linux常用命令主要包括以下: ①.Linux文件和目录处理命令 ②.Linux链接命令和权限管理命令 ③.Linux文件搜索命令 ④.Lin ...

  8. 【转】Linux上vi(vim)编辑器使用教程

    Linux上vi(vim)编辑器使用教程 ------------------------------------------------------------ ikong ------------ ...

  9. linux文本编辑器vim大全

    linux基础之vim编辑器 1.vim编辑器 基本介绍 vim编辑器的前身叫做vi.vi的英文名:Visual  Interface.中文解释文本编辑器,你不应该用他去打开二进制可执行文件 文本编辑 ...

  10. Linux文本编辑器vim

    目录 1.vim 的工作模式 2.插入命令 3.定位命令 4.删除命令 5.复制和剪切命令 6.替换和取消命令 7.搜索和搜索替换命令 8.保存和退出命令 9.vim 高级操作 10.总结 通过前面几 ...

随机推荐

  1. GO-指针与函数

    一.指针类型 1.普通类型,变量存的就是值,也叫值类型.指针类型存的是地址 2.获取变量的地址,用&,比如:var a int, 获取a的地址 &a 3.指针类型,变量存的是一个地址, ...

  2. PDO和mysqli对比

    PHP中,如何选择PDO和mysqli呢?本文做个简单的比较 1)总的比较   PDO MYSQLI 数据库支持 12种不同的数据库支持 支持MYSQL API OOP OOP和过程 命名参数 支持 ...

  3. C# 下载文件的四种方法

    C# 文件下载四方法 - CSDN论坛 - CSDN.NET using System; using System.Data; using System.Configuration; using Sy ...

  4. LINUX gcc安装rpm包顺序

    rpm -ivh cpp-4.1.2-42.el5.i386.rpm rpm -ihv kernel-headers-2.6.18-92.el5.i386.rpm rpm -ivh glibc-hea ...

  5. 使用Python快速查询所有指定匹配KEY的办法

    import redis redis_ip = '10.10.14.224' redis_port = 18890 # 配置redis的连接办法 # http://blog.csdn.net/u010 ...

  6. linux tar gzip 命令用法

    语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项: -c: 建立压缩档案-x:解压-t:查看内容-r: ...

  7. C# asp.net 实现导出Excel

    原文地址:传送门 这段时间用到了导出Excel的功能,这个功能还是比较常用的,我常用的有两个方法,现在整理一下,方便以后查看. 1.实现DataTable数据导出到本地,需要自己传进去导出的路径. / ...

  8. 安装deb包解决依赖问题

    在使用 dpkg -i 安装deb包后,会出现依赖关系而不能正常安装软件,这个时候先更新下源然后解决依赖关系后重装即可. sudo apt-get update # 更新 sudo apt-get - ...

  9. jquery.autocomplete修改 实现键盘上下键 自动填充

    根据需求要实现通过键盘上下移动,获得联想菜单中的值,如同google baidu的查询功能. 在网上找了很久没有找到可以实现该功能的插件,无奈只能自己动手改代码.找到js中的KEY.DOWN 和 KE ...

  10. python 类继承

    #!/usr/bin/python # Filename: inherit.py class SchoolMember: '''Represents any school member.''' def ...