vim编辑器详解

vi(vim)是上Linux很是经常使用的编辑器,不少Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多可是若是使用灵活以后将会大大提升效率。linux

vi是“visual interface”的缩写,vim是vi IMproved(加强版的vi)。在通常的系统管理维护中vi就够用,若是想使用代码加亮的话能够使用vim。vim

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

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

 

 

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

 

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

命令模式:能够移动光标、删除字符等。unix

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

 

 

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

vi  filename     //打开filename文件教程

:w               //保存文件

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

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

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

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

 

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

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

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

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

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

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

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

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

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

 

 

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

一、使用上下左右方向键

二、命令模式下:

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/\r\+$//e  /*清除行末的不可打印字符包括但不限于^M*/
3)若你的vim版本小于等于7.1,又想把文章按照unix格式显示和保存,以下语句:
:set ff=unix
:%s/\r\+$//e
 
或者打开文件:
替换命令就能够了,输入^M的时候按住ctrl键不放,依次按下v和m
如全文替换为空(没有):
1,$s/^M//g

相关文章
相关标签/搜索