Linux中Vim编辑器的使用

Linux中Vim编辑器的使用

Vim功能介绍

vim是一款功能丰富而强大的文本编辑器,支持语法高亮,支持多窗口编辑,是vi文本编辑器的增强版。如果在CentOS
7.2中如果是选择最小化安装,其默认是没有安装vim rpm包的,需要自行安装,可以使用yum工具进行在线安装。  
vim至今已经走过了25个春秋,现在8.0版的已经发布了。  本文介绍的vim,版本是7.4.160。
 vim是一款模式化的编辑器。
它的工作模式分为三种

  • 编辑模式
     编辑模式又称为正常模式(Normal mode),其进入方式为:执行指令:vim /PATH/FROM/FILENAME,如果这一文件不存在,则会创建新文件,但如果编辑完成后不予保存则此文件不会保留。这一模式可以对文本内容完成诸如复制、粘贴、删除这一类的编辑操作。

  • 输入模式  
     其进入方式有多种,大多是在编辑模式通过按下特定的字符键进入。在这一模式中可以对文本内容完成修改添加删除的操作。

  • 末行模式
     进入这一模式的方法是在编辑模式中输入冒号。然后可以输入很多指令完成对文本的编辑操作,功能十分强大。

vim编辑模式使用练习

vim自带了一个练习程序,在bash shell中直接执行vimtutor即可以打开,如下所示:

Linux中Vim编辑器的使用  

使用h,j,k,l键移动光标

根据屏幕提示,使用h,j,k,l键分别实现将光标往前移动一格,往下移动一格,往上移动一条,往后移动一格,即h,j,k,l分别对应前,下,上,后。如下所示:

Linux中Vim编辑器的使用    

放弃对文本文件所有的修改操作

当使用vim对文本文件做了一些修改以后,但又不想保存这些修改,想将文件恢复至原样,可以使用如下步骤进行操作。
1. 按下ESC键,确保已位于正常模式中
2. 输入:q!,按下回车键,退出vim模式
3. 当看到shell提示符时,即表明已退出对之前文本文件的编辑
为便于练习继续,在bash shell中再次执行vimtutor指令,进入vim的练习之中。

删除文本的字符

在vim编辑模式中可以按下x键,将光标选中的字符删除。操作步骤如下:
1. 进入vim编辑模式
2. 通过上面介绍过的h,j,k,l键将光标移动至想要删除的字符处
3. 按下x键,将光标已选中的字符删除
vimtutor中的操作示例及说明如下:

Linux中Vim编辑器的使用  

在光标所在处或者光标所在行的行首插入字符

在vim编辑模式中,将光标移动至想要插入新字符的位置,然后按下I键即输入i(小写),即可进入vim的输入模式,此时vim编辑器左下角会出现“– INSERT –”提示符,即说明此时已处于vim输入模式中,可以通过键盘输入想要插入的字符。如果输入"I"(大写),可以实现光标所在行的行首直接进入输入模式。
vimtutor中的操作示例及说明如下:

Linux中Vim编辑器的使用  

继续结合上面的一些操作方法,将句子中的错误进行修正,结果应该是这样的吧,英语不是很好.^_^

Linux中Vim编辑器的使用  

在光标所在行的行尾插入字符

在编辑文本文件时,如果想在某一行的行尾直接进入编辑,可以在vim编辑模式中将光标移动至目标行,不用在意光标在这一行的什么位置,此时按下A键方法为输入大写A的操作方法。然后进行编辑即可。
vimtutor中的操作示例及说明如下:

Linux中Vim编辑器的使用  

保存文本文件并退出vim编辑模式

当编辑完文本文件以后,在vim编辑模式中输入:wq,然后回车,对文本文件进行保存,并退出vim的编辑模式,结束对文本文件的修改工作。
vimtutor中的说明及操作示例如下:

Linux中Vim编辑器的使用  

一次性删除一个单词

在Linux中一个单词,并非各人类语言语法中的单词,而是指一个连续且不包含空格的字符串。在vim编辑模式中,将光标移动至想要删除的单词的超始处,然后输入dw即可直接将这一单词及其后面的空白字符删除,无需要通过先进入输入模式,然后按回退键一个字符一个字符进行删除。
vimtutor中的说明及示例如下:

Linux中Vim编辑器的使用  

一次性删除一行中从光标处起始直至行尾的全部内容

如果文本中某一行中有一个连接的段需要删除,这时可以在vim编辑模式中,先将光标移动至要删除部分的起始处,然后输入d$即可一次性将光标所在位置至行尾的全部内容一次性删除。
vimtutor中的说明及操作示例如下:

Linux中Vim编辑器的使用  

一次性删除光标所在处至单词的最后一个字符

在vim编辑模式中将光标移动至想要删除的单词的词首,然后输入de即可将这个单词删除。相较于dw的区别是,de不会删除这一个单词其后的空白字符。vimtutor中的说明如下:

Linux中Vim编辑器的使用  

一次性将光标移动一个单词的方法

vim编辑模式中,一个字符一个字符地移动光标有时难免显得低效,它提供了直接让光标在单词间跳转的方法。
在编辑模式中:
按下E键(不区分大小写),可实现将光标直接跳转至行内本单词或者下一个单词的词尾,如果光标正处在某单词的中间位置按下E键,光标会跳至本单词的词尾。
按下W键(不区分大小写),光标会跳至下一个单词的词首。
按下B键(不区分大小写),光标会跳至本单词或者前一个单词的词首。

一次性将光标移动N个单词的方法

在vim编辑模式中,还可以使用#{E|W|B}这种方法,一次性将光标往前或往后移动#个单词,#为数字,一个标点符号算作一个单词,至于光标是位于单词词首还是词尾取决于#后面所跟的是E还是W或者B。
vimtutor中的示例及说明:

Linux中Vim编辑器的使用  

一次性删除指定个数的单词

在vim编辑模式中,使用d#w,#代表要删除的单词数,可以一次性将指定个数的单词及其后面的空白字符删除。
vimtutor中的示例及说明:

Linux中Vim编辑器的使用  

一次性删除一整行

在vim编辑模式中,将光标移动至想要删除的那行上,不管光标处在这行什么位置都可以,然后输入dd,即可将这一整行删除;如果输入#dd,将会删除当前光标所在的行及其下#行(空白行也算一行),#号表示数字。
vimtutor中的说明及示例结果:

Linux中Vim编辑器的使用  

撤销之前的操作

在vim编辑模式中,如果想撤销之前的操作,只需要输入u(小写)即可撤销上一步的操作,如果想撤销上#步的操作,输入#u即可。如果又后悔撤销了刚才的撤销操作,可以使用Ctrl+R组合键。如果后悔对这一整行所做的修改,可以输入U(大写)将对这一行所做的操作一次性撤销。
vimtutor中的说明及操作示例:

Linux中Vim编辑器的使用  

对行进行剪切与复制

在vim编辑模式中,如果想要将某一行的位置进行移动,可以先将光标移动至这一行,输入dd进行删除,然后将光标移动至这一行新位置的上一行处,然后输入p(小写),刚才删除的那一行即会被移动到新位置;而如果输入P(大写),则刚才删除的一行,会直接复制到光标所在的这一行处,也相当于将光标放在一这一行新位置的下一行处。
vimtutor中的说明及操作示例:

Linux中Vim编辑器的使用  

对字符进行替换

如果想将某字符进行替换,在vim编辑模式中,可以先用光标将这一字符选中,然后输入r(小写)并紧接着输入这一字符想要替换成的字符,这种方式一次只能替换一个字符。
vimtutor中的说明及操作结果:

Linux中Vim编辑器的使用  

修改行中的某一个单词

如果想修改某单词的部分字符或者整个单词,在vim编辑模式中可以将光标移动至想要修改的地方的起始处,然后输入ce(小写),它会删除光标所在处至这个单词结尾的部分,然后进入输入模式,这时在将正确的内容输入即可完成对某单词的修改。
vimtuor中的说明和操作结果示例:

Linux中Vim编辑器的使用  

修改一行中的多个单词

如果想修改一行中的多个单词,可能直至这一行的结尾。此时可以在vim编辑模式中使用c#w或者c$指令。如下示例中的需求即是需要删除从“some”开始直至行结尾的部分,因此使用c$指令,然后在输入模式中进行修改即可。

Linux中Vim编辑器的使用  

光标定位及迅速移动

如果想将光标快速移动至文件的最后一行,在vim编辑模式中输入G(大写)即可;如果想将光标快速移动至文件的第一行,在vim编辑模式中输入gg(小写);在编辑模式中按下Ctrl+G组合键,可以在编辑模式的最下边显示出当前光标所在的行号,及文件总行数,文件名等信息。在编辑模式中输入#G可以将光标跳转至第#行行首,#为指定的行号。

Linux中Vim编辑器的使用  

vim编辑模式中的搜索方法

在vim编辑模式中如果要搜索某一字符或字符串,可以使用/字符(串)的方式进行,它会从光标所在处开始往下搜索,当要继续往下搜索时,继续输入n(小写),当要继续往上搜索时,继续输入N(大写)。
另一种搜索方式是在编辑模式中使用?字符(串)的方式进行,它会从光标所在处开始往上搜索,继续往上搜索,就继续输入n(小写),继续往下搜索,就继续输入N(大写)。
要将光标回退至上一次所在的位置,使用组合键Ctrl+O;要将光标往前移,使用组合键Ctrl+I。
vimtutor中的示例及说明:

Linux中Vim编辑器的使用  

vim编辑模式中检查括号是否匹配

在vim中可以将光标移动至要检查的括号处,然后输入%,光标会自动跳转至与之匹配的括号处,用此来检查程序语句中括号是否完整。

Linux中Vim编辑器的使用  

vim末行模式

vim末行模式进入的方式:在编辑模式中,按下键盘输入冒号:即可。需要注意的是:在末行模式中所有的指令要生效必须按回车键。

末行模式中查找并替换

vim末行模式中支持查找某字符串,然后在将文本中查找到的对象进行替换。在编辑模式中输入:s/old/new,然后回车。old表示要查找的字符串,new表示替换后的最终字符串。它只替换查找到的第一个匹配的字符串。
如果要一次性将一行中所有匹配的字符串进行替换,需要在编辑模式中输入:s/old/new/g然后回车。
如果要一次性将全文中所有匹配的字符串进行替换,需要在编辑模式中输入:%s/old/new/g然后回车。
如果要在文本中一定范围内查找指定的字符串并替换,需要在编辑模式中输入:#,#s/old/new/g,然后回车。#,#表示从哪一行到哪一行,为行编号。
vimtutor中的示例及说明:

Linux中Vim编辑器的使用  

末行模式中执行外部命令

在vim末行模式中通过输入!然后跟上任何可以shell中执行的指令,都可以在这里面执行,执行完以后按下回车键会回到之前的编辑模式状态。
使用示例如下:

Linux中Vim编辑器的使用  

将正在编辑的文本全部另存为其它文件

在vim末行模式中通过输入w /PATH/TO/FILENAME可以将文件另存为指定的新文件。

Linux中Vim编辑器的使用  

将正在编辑的文本中的部分另存为其它文件

在vim编辑模式中,首先将光标移动至需要另存为的内容的起始处,然后输入v(小写),vim末行出现"VISUAL"提示符,再然后结合光标操键h,j,k,l选定需要另存为的文本内容。选定以后,输入:进入末行模式,此时vim末行会出现":'<,'>"提示符,然后紧挨着在其后面输入w /PATH/TO/FILENAME 即可将选定的文本内容另存为指定的文件中,如果指定文件已经存在,需要使用在文件名后跟上!,进行强制覆盖。
以下为vimtutor中的示例及说明:

Linux中Vim编辑器的使用  

合并其它文本内容至当前编辑中的文本中

vim末行模式中,将光标移动至想加入其它文本文件内容的超始处,然后输入r /PATH/FROM/FILENAME即可将指定文本文件的内容添加至光标下方。
vimtutor中示例的效果:

Linux中Vim编辑器的使用  

**末行模式中还支持将其它shell指令的输出内容直接添加至当前正在编辑中的文本文件中。操作方法为":r !cat /home/lantian/TEST","cat /home/lantian/TEST"为需要执行的shell指令。

在编辑模式中直接在光标所在行的下一行或者上一行进入输入模式

在vim编辑模式中,如果想在光标所在行的下方直接进入输入模式,可以直接输入"o"(小写);如果想在光标所在行的上方直接进入输入模式,可以直接输入"O"(大写)。
vimtutor中的说明及示例如下所示:

Linux中Vim编辑器的使用  

在编辑模式中直接在光标所在处的后面或者行尾进入输入模式

在vim编辑模式中,如果想在光标所在处的后面添加字符即直接进入输入模式,可以直接输入"a"(小写);如果想在光标所在行的行尾直接进入输入模式,可以直接输入"A"(大写)。
vimtutor中示例完成后的效果:

Linux中Vim编辑器的使用  

复制和粘贴文本

在vim编辑模式中,如果想复制粘贴某段内容,可以先将光标移动至想要复制的内容的起始处,然后输入"v"(小写)进入"VISTUAL"视图,然后结合h,j,k,l键移动光标来选取想要复制的内容,被选中的文本会高亮显示,再按下y(小写)就完成了复制工作。然后将光标移动至复制的目标位置,按下p(小写)就将之前复制的内容粘贴过来了。
vimtutor中的说明及示例如下:

Linux中Vim编辑器的使用  

配置vim工作环境

在vim末行模式中,可以使用丰富的set指令及选项来配置vim的工作环境。常用的有:

  • 行号
    显示:set number,简写为set nu
    取消显示:set number,简写为set nonu

  • 括号匹配高亮
    匹配:set showmatch,set sm
    取消:set noshowmatch,set nosm

  • 自动缩进功能
    启用:set ai
    禁用:set noai

  • 高亮搜索
    启用:set hisearch
    禁用:set nohlsearch

  • 语法高亮
    启用:syntax on
    禁用:syntax off

  • 忽略字符大小写
    启用:set ic
    禁用:set noic

vim编辑长文本时的翻屏操作

在vim编辑模式中使用如下组合键,可以实现对应的效果。
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏  
Ctrl+d:向文件尾部翻一屏
Ctrl+u:向文件首部翻一屏
Enter:按行向后翻

vim编辑文本时实现句间或者段间跳转操作

在vim编辑模式中使用如下标点符号,可以实现光标在句间或者段间快速跳转。
句间跳转
)
(
段间跳转
{
}

原创文章,作者:N24_lantian,如若转载,请注明出处:http://www.178linux.com/62097

(0)
N24_lantianN24_lantian
上一篇 2016-12-02
下一篇 2016-12-02

相关推荐

  • Function函数实例

    函数:function     把一段独立功能的代码当做一个整体,而后为之取一个名字,命令的代码段,即为函数。 注意:     定义函数的代码段不会自动执行,在调用时执行;所谓调用函数,在代码中给定函数名即可     函数名出现的任何位置,…

    Linux干货 2016-08-21
  • ◆战前宣言

    从 今 天 开 始, 到 以 后 的 很 久,我 要 努 力,努 力,努 力 的 用 尽 全 力 地 学 好 Linux。 我 知 道,这 起 码 需 要 很 长 时 间 和 汗 水,但 我 坚 信,付 出 总 是 会 有 回 报 的~ 要记住:比你优秀的人都在努力,你还在彷徨什么? 最后借用一下火影忍者中李…

    Linux干货 2016-10-24
  • 0803作业

    课上练习 1.当用户xiaoming 对/testdir  目录无执行权限时,意味着无法做哪些操作?  drwxr-xr–. 14 root root 4096 Aug  3 13:35 /testdir [xiaoming@localhost ~]$ touch /testdir/f1…

    Linux干货 2016-08-04
  • linux基础第二周

    1. 用chattr命令防止系统中某个关键文件被修改:# chattr +i /etc/resolv.conf 然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果。vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。要想修改此文件…

    2017-09-09
  • 数据结构-栈和队列

    1.栈 1.1 栈的定义 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示: 结论:后进先出(Last In First Out),简称为LIFO线性表。 栈的基本运算有六种: 构造空栈:InitStack(S)、 判栈空: StackEmpty(S)、 判栈满: StackFull(S)、 …

    Linux干货 2015-04-07
  • 文件管理

    echo“- – -”>/sys/class/scsi_host/host2/scan扫描新装的硬盘,不需要重启 磁盘管理三大步骤:分区,管理,挂载 设备文件创建mknob cdrom /mnt/cdrom 并行接口针多,但是传的速度过快,会对数据造成干扰 vLinux的数据一般都存储在分区空间里 学习linux的磁盘管理就必须:…

    Linux干货 2016-11-27

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-07 23:26

    学以致用,好棒,有图有真相