VIM编辑器的使用方法详解

vim编辑器

文本编辑器,字处理器

nano、sed

vi:Visual Interface(可视化接口)

vim:VI Improved

模式编辑器、全屏编辑器

一:打开文件

# vim /path/to/somefile

  • vim +# /path/to/somefile 打开/path/to/somefile,并定位于文件第#行

    • 例如1:打开文件/etc/inittab,光标在 18 行

      # vim +18 /etc/inittab

  • vim + /path/to/somefile  打开/path/to/somefile,并定位于该文件的底部
    • 例如1:打开文件/etc/inittab,光标在 最后一行

      # vim + /etc/inittab

  • vim +/PATTERN:打开文件,定位至第一次被PATTERN匹配到的行的行首
    • 如:vim +/:initdefault  /etc/inittab

编辑模式/命令模式:复制、粘帖、删除行...

输入模式:输入内容到文件

末行模式:文件管理命令

打开vim编辑器,默认处于编辑模式。

模式之间是可以相互转换的。

编辑 --> 输入

  • i:在当前光标所在字符的前面,转换为输入模式;
  • a:在当前光标所在字符的后面,转换为输入模式;
  • o:在当前光标所在行的下面,新建一行,转换为输入模式;

大写字母

  • I:在当前光标所在行的行首,转换为输入模式;
  • A:在当前光标所在行的行尾,转换为输入模式;
  • O:在当前光标所在行的上面,新建一行,转换为输入模式;

输入 --> 编辑

  • ESC

编辑 --> 末行模式(只能从编辑模式进入)

  • : 输入冒号即可

末行模式可以执行的命令:

  • 10d:删除文件中的第十行
  • 10,20d:删除文件中的第十行到第二十行;
  • set nu:显示行号
  • ! ls /etc/:执行shell命令,不影响当前文件编辑

末行模式 --> 编辑

  • ESC,ESC

输入模式到末行模式不能直接转换;


二:关闭文件

  • 末行模式关闭文件

    • :q:退出,不保存,如果已经编辑了文件内容,这样无法退出,会提示你文件已经发生了改变,让你确认是否保存
    • :wq:保存并退出
    • :q!:不保存退出
    • :w:保存,不退出
    • :w!:强行保存只读文件(只读文件对管理员root是不生效的,管理员可以使用w!强行保存文件)
    • :wq -- :x
  • 编辑/命令模式下退出文件
    • ZZ:保存退出(不用切换模式,就可以保存退出)

三:移动光标(编辑/命令模式)

  • 逐字符移动:可以用上下左右键,也可以:

    • h:左
    • l:右
    • j:下
    • k:上
    • 数字加上上面的移动键,可以向对应方向移动 n 个字符或行
  • 逐单词移动
    • w:向后移动到下个单词的词首
    • e:向后跳到当前或下一个单词的词尾
    • b:向前跳至当前或前一个单词的词首
    • 上述命令都支持加上数字,如:3w,4b,可以实现移动 n 个单词
  • 行内跳转/移动
    • 0:行首,绝对行首
    • ^:行首,行首的第一个非空白字符,相对行首
    • $:行尾,绝对行尾
  • 行间跳转
    • G:跳至最后一行
    • #G:向下跳至第#行行首

末行模式下跳转:直接给出行号,回车即可


四、翻屏操作

  • Ctrl+f:向下翻一屏,向文件尾部翻一屏
  • Ctrl+b:向上翻一屏,向文件首部翻一屏
  • Ctrl+d:向下翻半屏
  • Ctrl+u:向上翻半屏

五、删除单个字符

  • x:删除光标所在处的单个字符
  • #x:删除光标所在处及向后的共#个字符

六、删除命令d

  • d命令可以结合光标跳转命令一起使用,实现不同的删除效果。如:

    • d$:删除当前光标处到行尾的内容
    • d0:删除当前光标处到行首的内容
    • dw:逐个单词删除
    • 3dw:一次删除三个单词
    • #de:
    • #db:
    • dd:删除当前光标所在行
    • #dd:删除从光标所在行向下删除#行
    • 删除第10行到第20行(末模式下:1,8d)
  • 末行模式下删除指定行
    • :.,+5d:末行模式下删除从当前行开始到向下的5行,一共删了6行
    • (.表示当前行,$表示最后一行,+#表示想下的#行);
    • 当前行到倒数第三行:.,$-3
    • .:表示当前行
    • $:表示最后一行
    • +#:表示向下的#行

七、粘贴命令:p

  • 删除的内容并没有立即清除,而是保存在内存缓冲区中的。
  • 最后一次删除的内容,可以被粘贴到任意指定的地方,可以粘贴多次;
  • P:
    • 如果删除的或复制的为整行内容,则粘贴至光标所在处的下放;
    • 如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
  • p:
    • 如果删除的或复制的为整行内容,则粘贴至光标所在处的上放;
    • 如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;

八、复制命令:y

  • 用法同d命令
  • yy:复制一行
  • 3yy、y0、y$...

九、先删除内容,再转换为输入模式(即:替换或修改)

  • c:用法同d命令

十、替换命令

  • r:替换单个字符
  • R:进入替换模式,类似insert键。ESC退出替换模式

十一、撤销编辑

  • u:undo,撤销前一次的编辑操作,可以连续使用u,撤销前n次的编辑操作
  • 注意:vi或vim只在内存缓冲区中保存最近50次的编辑操作,也就是说我们最多只能撤销最近50次的编辑操作
  • #u:直接撤销最近#次的编辑操作。

撤销撤销:撤销/还原上一次的撤销操作:Ctrl+r

十二、重复前一次的编辑操作

  • .:点,功能强大的点

十三、可视化模式

  • v:按字符选取,选取后可以执行上面所有的编辑操作(d删除,y复制等)
  • V:按矩形块选取,按行选取

十四、查找

  • /PATTERN:从文件首部到尾部查找
  • ?PATTERN:从当前光标所在行,到文件首部,倒着查找
    • n:下一个,往下跳转下一个
    • N:上一个,往上跳转下一个

十五、查找并替换

在末行模式下使用s命令,用法与sed一模一样。

  • 语法:ADDR1,ADDR2s@PATTERN@STRING@gi

    • @:分隔符
    • s:查找
    • g:替换
    • i:忽略字符大小写

例如:将文档中从当前行(.)开始到文档底部的所有小写的he替换为大写的HE

:.,$-1s/he/HE/g

全文替换:

:1,$ 或者 :%

1,$,表示从第一行到最后一行,百分号也是指全文。

练习题:

将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum

key

%s/ftp:\/\/instructor\.example\.com\/pub/http:\/\/172.16.0.1\/yum/gi

%s@ftp://instructor\.example\.com\/pub@http://172.16.0.1/yum@gi

十六、如何打开多个文件

vim FILE1 FILE2 FILE3

:next:切换至下一个文件

:prev:切换至前一个文件

:last:切换至最后一个文件

:first:切换至第一个文件

vim rc.local init

默认显示第一个文件;

切换到下个文件:next

切换到上个文件:prev(注意:切换到上个文件之前,必须保存编辑过的这个文件,否则切换不过去的)

退出:全部退出

:qa

:qall

十七、分屏显示一个文件

看着前面的内容来编辑后面的内容

Ctrl+w,s :水平拆分窗口

Ctrl+w,v :垂直拆分窗口

切换窗口:Ctrl+w,ARROW(上下左右方向箭头)

退出:

:q 退出一个窗口

:qa 全部退出,关闭所有窗口

--------------------------------------------------------

水平拆分窗口:

Ctrl+w,松开后,再按 s

Ctrl+w+向下/上的箭头,切换光标到上/下面的窗口编辑。

垂直拆分窗口:

Ctrl+w,松开后,再按 v

十八、分窗口显示多个文件

窗口1显示文件1,窗口2显示文件2

水平分割显示,如:vim -o FILE1 FILE2

垂直分割显示,如:vim -O FILE1 FILE2

十九、将当期文件的部分内容另存为另外一个文件

末行模式下使用w命令

:w

:w  /path/to/somewhere

:ADDR1,ADDR2w  /path/to/somewhere

二十、将另外一个文件内容填充在当前文件中(合并两个文件)

:r /path/to/somefile

二十一、跟shell交互

末行模式下输入:

:! COMMAND

#COMMAND不支持alias别名命令

二十二、高级话题

1、显示或取消显示行号

:set number -- set nu

:set nonu

2、忽略或区分字符大小写

:set ic

:set ignorecase

:set noic

:set noignorecase

3、设定自动缩进(写脚本的时候很有用)

:set autoindent

:set ai

:set noai

4、设定高亮显示(查找到的文本高亮显示)

:set hlsearch

:set nohlsearch

5、语法高亮

:syntax on

:syntax off

二十三、vim配置文件

全局:vim /etc/vimrc

局部(用户级):vim ~/.vimrc

关于vim的练习题:

系统自带的vimtutor,每天做一遍,每次控制在半小时内搞定,就成了。

时间: 2024-07-31 07:52:28

VIM编辑器的使用方法详解的相关文章

php调用C代码的方法详解和zend_parse_parameters函数详解

http://blog.csdn.net/super_ufo/article/details/3863731 php调用C代码的方法详解 在php程序中需要用到C代码,应该是下面两种情况: 1 已有C代码,在php程序中想直接用 2 由于php的性能问题,需要用C来实现部分功能 针对第一种情况,最合适的方法是用system调用,把现有C代码写成一个独立的程序.参数通过命令行或者标准输入传入,结果从标准输出读出.其次,稍麻烦一点的方法是C代码写成一个daemon,php程序用socket来和它进行

Spring4.0MVC学习资料,ApplicationContext中的方法详解(三)

做为java开源的一部分,spring框架一直排在老大的位置.Spring4.0 是 Spring 推出的一个重大版本升级,进一步加强了 Spring 作为 Java 领域第一开源平台的地位.Spring4.0 引入了众多 Java 开发者期盼的新特性,如泛型依赖注入.SpEL.校验及格式化框架.Rest风格的 WEB 编程模型等.这些新功能实用性强.易用性高,可大幅降低 JavaEE 开发的难度,同时有效提升应用开发的优雅性.为了方便开发,Spring的ApplicationContext类,

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons

Python数据类型及其方法详解

Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知识回顾. 一.整型和长整型 整型:数据是不包含小数部分的数值型数据,比如我们所说的1.2.3.4.122,其type为"int" 长整型:也是一种数字型数据,但是一般数字很大,其type为"long" 在python2中区分整型和长整型,在32位的机器上,取值范围是-2

【转】深入学习JavaScript: apply call方法 详解(转)

Js apply方法详解 原文:http://blog.csdn.net/myhahaxiao/article/details/6952321 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享..  如有什么不对的或者说法不明确的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        apply和cal

hbase-0.94安装方法详解

先决条件: 1)java环境,需要安装java1.6以上版本 2)hadoop环境,由于HBase架构是基于其他文件存储系统的,因此在分布式模式下安装Hadoop是必须的,但是,如果运行在单价模式下,此条件可以省略.Hadoop-1.2.1的安装方法参考 hadoop-1.2.1安装方法详解 注意:安装时要注意Hadoop和HBase之间的版本关系,如果不匹配,很可能会影响HBase系统的稳定性. 本帖教程采用的hadoop是hadoop-1.2.1,hbase采用的是hbase-0.94 hb

oc中字典的实现方法详解

一:字典的基本概念 Foundation中的字典(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样. 通过key(键),查找的对应的value(值),key通常是字符串对象,也可以是其他任意类型对象.在一个字典对象中,key的值必须是唯一的. 此外,字典对象的键和值不可以为空(nil),如果需要在字典中加入一个空值,可以加入NSNull对象 二:不可变字典-NSDictionary 1:初始化(以一个元素和多个元素

57. 数对之差的最大值:4种方法详解与总结[maximum difference of array]

[本文链接] http://www.cnblogs.com/hellogiser/p/maximum-difference-of-array.html [题目] 在数组中,数字减去它右边的数字得到一个数对之差.求所有数对之差的最大值.例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果. [分析] 看到这个题目,很多人的第一反应是找到这个数组的最大值和最小值,然后觉得最大值减去最小值就是最终的结果.这种思路忽略了题目中很重要的一点:数对之差

Java中的main()方法详解

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: 1 /** 2 * Java中的main()方法