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

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

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

模式转换:
编辑模式-----à输入模式: 
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打开多个文件:
[root@localhost ~]# vi rc.sysinit inittab
此时默认打开第一个文件rc.sysinit,可以按yy复制一行。

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

可以打开多个文件:
[root@localhost ~]#  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,垂直分割显示)
[root@en testold]# vim -o inittab grub.conf CentOS-Base.repo   (会分三屏显示,上中下,ctrl+w 上下键操作)

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

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

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

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

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

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

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

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

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

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

vim学习文件,导师,如何学习vim说明文件:
[root@localhost ~]#  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存在:
[root@localhost ~]# ls –a
CentOS-Base.repo  .CentOS-Base.repo.swp  inittab .inittab.swp
只要有.swp这样的文件,就代表上次非法退出的,每次打开该文件就会有警告的。
除去打开文件警告信息:
删除.swp文件:(前提要确定文件内容)
[root@en testold]# rm -rf .inittab.swp
再去编辑就不会出现警告信息了!

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

本文转自信自己belive51CTO博客,原文链接: http://blog.51cto.com/11638205/1863269,如需转载请自行联系原作者

vi 和vim的区别相关推荐

  1. Vi和Vim的区别和联系

    我们知道,Vi 编辑器是 Unix 系统最初的编辑器.它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行.在文件中移动.插入.编辑和替换文本. 尽管 Vi 可能是世界上复杂的编辑器(讨厌它的人 ...

  2. Vi编辑器的基本使用方法及vi和Vim的区别【ZT】

    vi和Vim的区别,他们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.vim的这些优势主要体现在以下几个方面: 1.多级撤消 我们知道在vi ...

  3. vi 和 vim 的区别?

    作为软件测试工程师,不可避免需要操作到 Linux 系统,vi/vim 是 Linux 系统内置的不可或缺的文本编辑命令,VIM 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具 ...

  4. vi与vim编辑器区别

    vi 和vim 的区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面: 1.多级撤消 我们知道 ...

  5. vi和vim的区别或者叫VIM比VI的有优点

    vi和vim的区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面: 1.多级撤消:我们知道在v ...

  6. Linux系统下vi和vim的区别

    Linux系统下vi和vim的区别 简单来说,vi是老式的字处理器,vim是在vi的基础上发展出来的一个文本编辑器,目前,我们使用较多的是vim编辑器.vim编辑器具有程序编辑的能力,可以主动的以字体 ...

  7. 重庆思庄Linux技术分享- linux vi与vim的区别

    VI与VIM区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面: 1.多级撤消 我们知道在vi ...

  8. linux中vi和vim的区别

    它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面: 1.多级撤销 我们知道在vi里,按 u只能撤消 ...

  9. vi 和vim 的区别

    它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面: 1.多级撤消 我们知道在vi里,按 u只能撤消 ...

最新文章

  1. “新一代城市大脑建设与发展“专家研讨会
  2. 法国呼叫服务公司Aircall获得800万美元融资
  3. 李飞飞团队给机器人造了一个“模拟厨房”:洗切炒菜一条龙训练!人类还能VR监管 | 开源...
  4. SELinux 入门
  5. 手机端系统提交数据的创建时间验证的问题
  6. 为什么选择Netty作为基础通信组件?
  7. python中循环的技巧
  8. 霸榜各大CV任务榜单,Swin Transformer横空出世!
  9. springboot整合视图层Thymeleaf、freemarker
  10. Spring 事务core 模块-元数据metaData 模块
  11. win10系统更新在哪_一键关闭win10系统更新,一款不错的小工具
  12. mybatis 带分号批量sql_请查收,32 道 MyBatis 的高频面试题已答完
  13. 唐山职业技术学院计算机专业分数线,唐山职业技术学院历年分数线 2021唐山职业技术学院录取分数线...
  14. websocket传输数据大小限制_websocket 发送字符串数据上限是多少
  15. 几何画板是哪方面的计算机应用,几何画板最新版
  16. lvgl 笔记(3)-中文字库的制作和使用(windows模拟和esp32)
  17. jmeter接口压力测试详解
  18. 文档处理 - 复杂Excel文档
  19. CC2430基础——串口测试实验
  20. 网站中木马病毒了怎么办

热门文章

  1. 第一次总结:整体框架
  2. redisson的锁的类型_再有人问你分布式锁是什么,就把这个丢给他!
  3. svn访问方式 linux,ssh+svn 方式访问svn
  4. linux httpd 支持php配置,Linux9.5 配置httpd支持php
  5. 怎么用python爬豆瓣_python爬虫16 | 你,快去试试用多进程的方式重新去爬取豆瓣上的电影...
  6. ctk介绍、安装、使用详细说明pdf文档(中文).rar_Minio 安装和使用详解,还有对.net api进行了二次封装...
  7. akka mysql_初试超轻量级actor框架——akka
  8. 切换计算机用户指,切换用户提示计算机锁定
  9. 求集合的所有子集问题
  10. 使用 Commander 写自己的 Nodejs 命令