vim编辑器详解

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

vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim。

下面是vi的使用教程:包含vi的基本介绍、使用模式、文件的打开关闭保存、插入文本或新建行、移动光标、删除、恢复字符或行、搜索等等,

算是一篇比较适合新手学习vi的教程。

vi有3个模式:插入模式、命令模式、低行模式(底座模式)。

插入模式:在此模式下可以输入字符,按ESC将回到命令模式。

命令模式:可以移动光标、删除字符等。

低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。

打开文件、保存、关闭文件(vi命令模式下使用)

vi  filename     //打开filename文件

:w               //保存文件

:w  cszhi.com   //保存至cszhi.com文件

:q               //退出编辑器,如果文件已修改请使用下面的命令

:q!       //退出编辑器,且不保存

:wq             //退出编辑器,且保存文件

插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)

a        //在当前光标位置的右边添加文本

i        //在当前光标位置的左边添加文本

A       //在当前行的末尾位置添加文本

I        //在当前行的开始处添加文本(非空字符的行首)

O      //在当前行的上面新建一行

o      //在当前行的下面新建一行

R      //替换(覆盖)当前光标位置及后面的若干文本

J       //合并光标所在行及下一行为一行(依然在命令模式)

移动光标(vi命令模式下使用)

1、使用上下左右方向键

2、命令模式下:

h   向左、j   向下、k   向上、l  向右。

空格键向右、Backspace向左、Enter移动到下一行首、-移动到上一行首。

删除、恢复字符或行(vi命令模式下使用)

x         //删除当前字符

nx        //删除从光标开始的n个字符

dd        //删除当前行

ndd       //向下删除当前行在内的n行

u         //撤销上一步操作

U         //撤销对当前行的所有操作

搜索(vi命令模式下使用)

/cszhi    //向光标下搜索cszhi字符串

?cszhi    //向光标上搜索cszhi字符串

n           //向下搜索前一个搜素动作

N          //向上搜索前一个搜索动作

跳至指定行(vi命令模式下使用)

n+//向下跳n行 (数字+shift +)

n-//向上跳n行 (数字+shift -)

nG        //跳到行号为n的行

G         //跳至文件的底部

设置行号(vi命令模式下使用)

:set  nu     //显示行号

:set nonu    //取消显示行号

复制、粘贴(vi命令模式下使用)

yy    //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z 的任意字母,可以完成多个复制任务

nyy   //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务

yw    //复制从光标开始到词尾的字符

nyw   //复制从光标开始的n个单词

y^    //复制从光标到行首的内容

y$    //复制从光标到行尾的内容

p     //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap 进行粘贴

P     //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用"aP 进行粘贴

替换(vi命令模式下使用)

:s/old/new //用new词替换行中首次出现的old词

:s/old/new/g         //用new词替换行中所有的old词

:n,m s/old/new/g    //用new词替换从n到m行里所有的old词

:%s/old/new/g     //用new词替换当前文件里所有的old词

编辑其他文件

:e  o_filenam  //编辑文件名为 o_filenam 的文件

修改文件格式

:set fileformat=unix   //将文件修改为unix格式,如win下面的文本文件在linux下会出现^M

这里可以直接去^M:

有两种情况,会出现打开的文件都显示^M符号:
1. vim被配置为fileformat=unix,而你打开的文件都是dos格式的。unix格式的换行符为0A(ascii码)也就是<LF>,dos格式的换行符为 0D 0A(也就是<CR><LF>),<CR>其实就显示为^M。下面是详细讲解:
DOS, Mac 和Unix格式的文件
回想计算机的史前史,那时的打字机使用两个字符来开始一个新行。
首先是一个字符命令使打印头移回开始位置(回车,<CR>),然后另一个字
符命令控制向前进纸一行(进纸,<LF>).
在计算机诞生之初,存储设备十分昂贵。于是有人就提出没有必要
用两个字符来表示一行的结束。UNIX一族决定只用进纸一个字符<Line
Feed>来表示行尾。来自苹果阵营的人则把回车<CR>作为换行的标
准。MS-DOS(和微软的Windows)仍然决定沿用古老的回车换行<CR><LF>传
统。
这也意味着如果把文件从一个系统移到另一个不同的系统,你就会遇
到与换行相关的问题。Vim编辑器则可以识别这些不同格式的文件。
你可以在'fileformats'选项里指定你希望Vim能自动识别的格式的集
合。下面的这个命令就可以让Vim能自动识别UNIX格式和MS-DOS格式:
:set fileformats=unix,dos
把这句话放在_vimrc中,一般情况就都能OK。
2. 你的文本中既有unix的换行符,又有dos的换行符,那么vim会认为你打开的是unix的,所以,那些dos的换行符就会出现恼人的^M。不过这种情况不常见。办法是:
1)若你的vim版本大于7.1,并想用dos显示和保存,如下语句:
:e ++ff=dos
2)若你的vim版本小于等于7.1,又想把文章按照dos格式显示和保存,如下语句:
:set ff=dos
:%s/ +$//e  /*清除行末的不可打印字符包括但不限于^M*/
3)若你的vim版本小于等于7.1,又想把文章按照unix格式显示和保存,如下语句:
:set ff=unix
:%s/ +$//e
 
或者打开文件:
替换命令就可以了,输入^M的时候按住ctrl键不放,依次按下v和m
如全文替换为空(没有):
1,$s/^M//g

原文地址:https://www.cnblogs.com/client-server/p/5534097.html