vi 和vim的区别

vi和vim区别:
vi :visual interface
vim:vi improved, vim
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。
[[email protected] ~]#  which vi
/bin/vi
[[email protected] ~]# which vim
/usr/bin/vim

模式化编辑器:
   编辑模式(命令模式):x , dd
   输入模式:x , dd
   末行模式:q!

进入文件让光标处于指定的行:
Vim +# smb.conf
例子:
[[email protected] ~]# vim +10 smb.conf   (光标在第10行)
[[email protected] ~]#
进入文件让光标处于末行:
Vim + smb.conf
例子:
[[email protected] ~]# vim + smb.conf       (光标在末尾)
[[email protected] ~]#

模式转换:
编辑模式-----à输入模式:
i : 在当前光标所在前面插入。
a :在光标所在后面插入。
o :在光标所在新插入一行。

I :在当前光标所在行行首插入。
A :在当前光标所在行行尾插入。
O:在当前光标所在行的上方新增一行插入。

输入模式------编辑模式:
ESC键

编辑模式-------末行模式:
:     (冒号)

退出vi:
:q      (没改过的退出)
:q!       (强行不保存退出)
:wq       (保存退出)
:w         (保存不退出)
:w!        (强行保存不退出,只有root可以)
ZZ         (大写ZZ,保存退出)

光标的跳转:
h :光标向左。          (5h:向左5个字符移动)
l :光标向右。           (8l:向右8个字符移动,小写L,不是I)
j :光标向下一行跳转。   (6j:移到下6行)
k :光标向上一行跳转。   (7k:向上移动7行)

在单词间跳转:
w :下一个单词的词首。
#w :一下跳几个单词。    (#代表数字, 3w :跳3个单词。)
e :跳到下一个单词的词尾。
b :跳到前一个单词的词首。

在行内跳到行尾,行首:
^ 行首(跳到这一行第一个字符行首。)
0 行首 (跳到绝对行首,空白也算行首。)
$ 行尾

在行间跳转:
gg :跳到文档的第一行。
#G  (1 G,跳到文档第一行,5G:跳到第5行。)
G :跳到文档最后一行。

在末行模式下:
:#  (如:10跳到文档第10行。)

翻屏操作:
Ctrl+f :  向后一屏。
Ctrl+b :  向前一屏。
Ctrl+d :  向后半屏。
Ctrl+u :  向前半屏。
删除字符:
x :删除光标所在字符。
#x : 3x删除光标所在处向后的3个字符。
X :删除光标所在前一个字符。
dd : 删除整行。
dw :删除当前光标所在的字符。         (3dw:删除光标所在处向后的3个字符。)
d$ : 删除当前光标到行尾的所有字符。   (包括光标所在字符。)
d0 : 删除当前光标到行首的所有字符。  (不包括光标所在字符。)
#dd : 3dd (删除3行)。
删除10行到第20行:(需要在末行模式下完成。  : )
:10,20d      (冒号10逗号20d)  
. :表示当前行。
$ :表示最后一行。
+# :表示向下的#行。
例如:
删除当前光标所在行到最后一行:
:.,$d     (冒号 点 逗号 美元号 d)
:.,11d      (删除当前光标所在行到第11行。)
:20+3d    (删除20行之后加上3行,一共删除4行。)

粘贴:
p :粘贴,如果是删除或复制的是整行,在当前光标所在行下方粘贴。
        如果是删除单词或行的部分,在当前光标所在处后方粘贴。
        
P : (大写P)如果是删除或复制的是整行,在当前光标所在行上方粘贴。
            如果是删除单词或行的部分,在当前光标所在处前方粘贴。

复制:(用法和d删除命令一样)
yy : 复制整行。
yw : 复制当前光标所在的字符。         (3yw:复制光标所在处向后的3个字符。)
y$ : 复制当前光标到行尾的所有字符。   (包括光标所在字符。)
y0 : 复制当前光标到行首的所有字符。  (不包括光标所在字符。)
#yy : 3yy (复制3行)。

撤销编辑操作:
u : 撤销上一次编辑操作。
Ctrl+r : 撤销最后的撤销操作。(u撤销撤销撤多了,按ctrl+r还原最后一次撤销。)

可视化模式:
相当于word中用鼠标按住左键拖一大片删除或复制的方式:
v : 按字符选取,左右键选择到哪里,按d删除或按y复制。
V: 按行选取。

搜索:
 /keyword    :从上到下查找。
?keyword     :从下到上查找。
n键:查到下一个。
N :往回查找。
查找并替换:同sed应用
在末行模式下使用s命令
:定界s/查找的内容/替换成的内容/gi
查找的内容:支持正则表达式。
替换成的内容:不支持正则表达式,但可使用前向引用。

例子:
:1,20s/uname/UNAME/gi   (1到20行,查找uname并替换UNAME,gi全局)
:.,$-1s/5/999999/g         (从当前行到最后一行减去1行中的5替换成999999全局替换)
:%s/zhang1/zhangdawei/g   (替换每一行中zhang1成为zhangdawei ,:百分号s)

修饰符:
g :全局替换。
i :查找时忽略字符大小写

如何使用vi打开多个文件:
[[email protected] ~]# vi rc.sysinit inittab
此时默认打开第一个文件rc.sysinit,可以按yy复制一行。

如何把在rc.sysinit里面复制的内容粘贴到inittab中:在末行模式下输入 :next

可以打开多个文件:
[[email protected] ~]#  vi rc.sysinit inittab abc
文件的切换说明:
在末行模式下输入 :next   (表示切换下一个文件)
                 :prev   (表示切换前一个文件)
                 :last    (表示切换至最后一个文件)
                 :first    (表示切换至第一个文件)
退出:
:qa   (全部退出)

分屏显示一个文件:
按ctrl+w,松开后按s键 :水平拆分窗口,当前光标在上一屏。把光标移动到下屏按ctrl+w松开后按方向键下。ctrl+w松开方向键上回到上屏。
或:
水平切割:
:split
:split xxx(要打开的文件名)
:new(在新窗口创建文件)

按ctrl+w,松开后按v键 :垂直拆分窗口。

拆分后出去:
:qa   (全部退出)
分窗口编辑多个文件:
-o :(小o,水平分割显示)
-O :(大o,垂直分割显示)
[[email protected] testold]# vim -o inittab grub.conf CentOS-Base.repo   (会分三屏显示,上中下,ctrl+w 上下键操作)

如何将另外一个文件的内容填充在当前文件中:
:r 文件路径/文件名
[[email protected] ~]# vim aa    (打开aa文件,把b1文件内容添加到aa文件中)
:r /root/testold/b1          (注意:添加aa文件中位置是光标所在行的下面行开始)

在vi模式下进行shell命令操作:
假如需要输入一个路径,但是忘了详细路径,不用退出vi,查看路径的方法:
:!执行命令         (末行模式冒号叹号输入命令)
[[email protected] ~]# vim aa
:!pwd
/root/testold

Press ENTER or type command to continue     (按回车继续)

显示行号和关闭行号:(只在当前vi编辑有效)
显示行号:(只是显示行号,和文件内容无关)
:set nu  
关闭显示行号:
:set nonu

设定自动缩进:
:set ai
:set noai   (取消自动缩进)
[[email protected] ~]# vi aa
zhe shi shou hang.     (末行模式:set ai,下面输入光标会自动缩进)
  zhangdawei
  dwzhang
  zhang1
  zhang2             (末行模式:set noai退出缩进)
zhe shi suo jin!

当用vim编辑文件时,用到搜索时,搜索到的字符串会有一片颜色高亮显示,如何取消颜色高亮显示:
[[email protected] ~]# vim aa
:set hlsearch      (搜索到的颜色显示)
:set nohlsearch    (取消搜索到的颜色显示)
用vim编辑脚本时,会有语法高亮,有的文件会有很多种颜色,如何关闭语法高亮?
末行模式下:
:syntax off     (关闭语法高亮)
:syntax on      (打开语法高亮)

用:set更改只是在本文件编辑时有效,关闭后再打开就无效,如何长期有效?需要在vim配置文件中更改:

vim配置文件有2个:(注意:是vim不是vi,需要用vim打开)
1.  /etc/vimrc    (全局配置文件,对所有用户有效)
[[email protected] ~]# ll /etc/vimrc
-rw-r--r--. 1 root root 1962 Feb 17  2012 /etc/vimrc

如何让文件打开就有行号:
[[email protected] ~]# vi /etc/vimrc    (全局有效)
set nu       (随便找个位置加入)

2.  /root/.vimrc    (用户家目录下vim配置文件,如没有可自己添加)
[[email protected] ~]# vim .vimrc     (注意:一定在家目录下建立并且需要是隐藏文件)
set nu
[[email protected] ~]#     (用vi打开无效)

vim学习文件,导师,如何学习vim说明文件:
[[email protected] ~]#  vimtutor

vi错误问题:
当正编辑文件时,非法退出(断电或者没有:q末行模式正确退出),此时vi进程还在运行,下次打开该文件时会显示:
E325: ATTENTION
Found a swap file by the name ".CentOS-Base.repo.swp"
          owned by: root   dated: Fri Nov 14 09:51:03 2014
         file name: ~root/testold/CentOS-Base.repo
          modified: YES
         user name: root   host name: en.com
        process ID: 3541
While opening file "CentOS-Base.repo"
             dated: Fri Nov 14 08:54:56 2014
……………………………………………………….
…………………………………………………………
如果出现上述问题,就会在这个文件目录下有相对应的隐形文件.CentOS-Base.repo.swp存在:
[[email protected] ~]# ls –a
CentOS-Base.repo  .CentOS-Base.repo.swp  inittab .inittab.swp
只要有.swp这样的文件,就代表上次非法退出的,每次打开该文件就会有警告的。
除去打开文件警告信息:
删除.swp文件:(前提要确定文件内容)
[[email protected] testold]# rm -rf .inittab.swp
再去编辑就不会出现警告信息了!

注意:
此时打开的文件为编辑过没有保存的时期,如何恢复到编辑后非法退出的时期文件:用-r
[[email protected] ~]# vim -r aa
[[email protected] ~]#
如果误删除了文件aa,但是有.aa.swp隐藏文件在,如何恢复误删除的文件:
[[email protected] ~]# vim -r aa
:wq      (需要保存)

时间: 2024-10-29 07:37:24

vi 和vim的区别的相关文章

vi 和vim 的区别

它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面:1.多级撤消我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消. 2.易用性 vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台. 3.语法加亮vim可以用不同的颜色来加亮你的代码. 4.可视化操作就是说vim不仅可以在终端运行,也可以运行于x window. mac os. win

vi与vim的区别

Vim是从 vi 发展出来的一个文本编辑器 .代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.和Emacs 并列成为类Unix系统 用户最喜欢的编辑器. Vim的第一个版本由Bram Moolenaar 在1991年发布.最初的简称是Vi IMitation ,随着功能的不断增加,正式名称改成了Vi IMproved.现在是在开放源代码 方式下发行的自由 首先我们看一下文本 第一个vi编辑的内容 . 第二个我们看下vim的效果 Vim 具有6种基本模式和5种派生模式. 1

vi和vim区别及命令详解

vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本.vi使用于文本编辑,但是vim更适用于coding.     现将vim的命令行收集于下: vi有3个模式:插入模式.命令模式.低行模式. 插入模式:在此模式下可以输入字符,按ESC将回到命令模式.     命令模式:可以移动光标.删除字符等.     低行模式:可以保存文件.退出vi.设置vi.查找等功能(低行模式也可以看作是命令模式里的). 一.打开文件.保存.关闭文件(vi命令模式下使用) vi file

学习vi和vim编辑器(16):vim的多窗口功能(1)

vim默认是在一个窗口中编辑所有文件,在文件间移动或者移动到文件的不同部分时只显示一个缓冲区.但vim也提供了多窗口编辑功能,可以简化复合的编辑任务.这篇文章将学习如何在一个运行的vim进程里使用多窗口,包括多窗口编辑工作的初始化与启动,在窗口间移动光标,在显示区中移动窗口等. 启动多窗口编辑: 可以在打开vim时启动多窗口编辑,也可以在编辑会话中分割窗口. 从命令行(shell)启动多窗口: 默认情况下,vim为一个会话只打开一个窗口,即使打开时已经指定多个文件.如果想从命令行中打开多个窗口,

vi与vim的抓狂

1. vi和vim的关系:    vim可以理解是vi的升级版,支持shell script编程:    vi存在原因:所有Unix Like系统均内建vi编辑器,同时个别工具会主动呼叫vi,如crontab.    2. 关于vi的三种模式:    一般模式    编辑模式    命令模式 3. vi的一般模式命令:    1)光标移动:        单个字符:h(左).l(右).k(上).j(下):        行头:^/0/Home,行尾:$/End:        多行:nk.nj.

每天liunx命令,vi和vim的使用

纵然今天是国庆,但是学习不能停,今天学习的是liunx中,比较重要的2个编辑器,vi和vim,也许会有人问为什么要学习这2个呢?不是有简单好用的nano么. 主要还是因为有一些别的liunx版本,是没有内置的nano的,这个如果你突然接触就不能很快入手,而vi是每个liunx版本都内置有的,所有这个学习是很必要的, vi的一些基本应用,如用vi新建一个文件,并打开: vi /tmp/testing    #新建一个testing文件,并打开 vi分成三种基本的模式: 1.一般模式(默认) 2.编

学习vi和vim编辑器(15):vim对vi的主要改进

vim对vi做了大量改进,本章将讨论在vim中添加的主要功能:包括内置帮助功能.启动与初始化选项.新的移动命令.扩展的正则表达式.扩展的撤销.自定义可执行文件等. 内置帮助功能: vim的说明文档超过10万行,几乎所有的说明都可以通过vim内置的帮助工具取得,使用它最简单的形式就是调用" :help "命令.使用内置的帮助功能需要了解vi的导航技巧,知道如何在标签间前进与后退.当光标处于某个标签上时,按下" CTRL+] "前往该标签,按下" CTRL+T

学习vi和vim编辑器(13):vi同类品的功能总览

本章将学习vi同类品提供的相关功能. 它们都是我兄弟: 有许多可以自由取得的vi编辑器同类品.<vi和vim编辑器>重点介绍了vim编辑器,也简要地介绍了另外三种常用的同类品:nvi,elvis,vile.这些同类品都提供了vi之外的许多扩展功能,尽管方式可能不同,但这些同类品通常会提供相同的扩展功能.本篇文章将总体介绍这些同类品提供的扩展功能. 多窗口编辑:可以将屏幕分割成多个"窗口",从而在每个窗口编辑不同的文件,或者观察同一文件的不同部分.这使得同时在多个文件中工作更

Linux学习笔记之VI(VIM)编辑器

百度关于vi的资料 http://baike.baidu.com/view/908054.htm 关于vi 和vim的介绍可以在上面的网址看到. 1   进入和退出vi 进入:在终端命令行输入 vi 文件名   就会进入vi,并且建立了一个空的名字为刚才输入的文件,假如进入vi的时候不加文件名,那么进入vi后系统会自动建立一个空文件,你可以在命令模式下给这个文件改名. 退出:按ESC切换到命令模式下,输入 :q   这是没有保存就退出,一般系统会提示你要不要保存 :q!  强制退出,不保存 :w