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

相关推荐

  • ​ 马哥教育网络班22期+第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限;     cp -a /etc/skel /home/tuser1     chmod -R 7…

    Linux干货 2016-10-17
  • sed 高级编辑命令、模式空间、保持空间、vi 可视化模式、vimrc、地址定界

    sed 高级编辑命令、模式空间、保持空间、vi 可视化模式、vimrc、地址定界 sed(stream deitor):行编辑器 【概述】sed是一种流式编辑器,它一次处理一行内容。处理时,把当前处理的行的所有内容存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,逐行处理,不修改文件。sed主要…

    Linux干货 2016-08-11
  • 2.Linux文件管理类命令

    Linux文件管理类命令 cp命令:copy 源文件;目标文件; 单源复制:cp [OPTION]… [-T] SOURCE DEST 多源复制:cp [OPTION]… SOURCE… DIRECTORY | cp [OPTION]… -t DIRECTORY SOURCE… 单源复制:cp [OPTION]… [-T]&…

    Linux干货 2017-07-09
  • Linux系统分区管理

    管理分区     查看系统中的分区4种方式 [root@localhost ~]# ls /dev/sd* [来自内存] [root@localhost ~]# cat /proc/partitions [root@localhost ~]# lsblk /dev/sda  /dev/sda1  /dev/sda2  /dev/sda3 …

    Linux干货 2017-12-02
  • shell脚本编程的执行语句

    顺序执行     从上到下逐条执行命令,执行完所有命令及退出。 选择执行     (1)&&,||     &&:代表and,&&左侧为真右侧则执行     ||:代表or…

    Linux干货 2016-08-24
  • N26第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。    who | cut -d' ' -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。    last | head -1   3、取出当前系统上被用户当作其默认s…

    Linux干货 2017-02-03

评论列表(1条)

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

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