VIM工具

vim介绍

vim命令图解

vim键位图

前面学过vi的一些操作和命令,而vim和vi其实可以说是一个东西,为什么这么说呢?

因为vim是vi的升级版本。

想使用vim这个命令需要先行安装,用命令:yum install -y vim-enhanced

[root@zyshanlinux-01 ~]# yum install -y vim-enhanced
已加载插件:fastestmirror
base                                                                               | 3.6 kB  00:00:00     
extras                                                                             | 3.4 kB  00:00:00     
updates                                                                            | 3.4 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.njupt.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.163.com
正在解决依赖关系
--> 正在检查事务
.
.
.
已安装:
  vim-enhanced.x86_64 2:7.4.160-4.el7                                                                     

作为依赖被安装:
  gpm-libs.x86_64 0:1.20.7-5.el7                    perl.x86_64 4:5.16.3-292.el7                         
  perl-Carp.noarch 0:1.26-244.el7                   perl-Encode.x86_64 0:2.51-7.el7                      
  perl-Exporter.noarch 0:5.68-3.el7                 perl-File-Path.noarch 0:2.09-2.el7                   
  perl-File-Temp.noarch 0:0.23.01-3.el7             perl-Filter.x86_64 0:1.49-3.el7                      
  perl-Getopt-Long.noarch 0:2.40-3.el7              perl-HTTP-Tiny.noarch 0:0.033-3.el7                  
  perl-PathTools.x86_64 0:3.40-5.el7                perl-Pod-Escapes.noarch 1:1.04-292.el7               
  perl-Pod-Perldoc.noarch 0:3.20-4.el7              perl-Pod-Simple.noarch 1:3.28-4.el7                  
  perl-Pod-Usage.noarch 0:1.63-3.el7                perl-Scalar-List-Utils.x86_64 0:1.27-248.el7         
  perl-Socket.x86_64 0:2.010-4.el7                  perl-Storable.x86_64 0:2.45-3.el7                    
  perl-Text-ParseWords.noarch 0:3.29-4.el7          perl-Time-HiRes.x86_64 4:1.9725-3.el7                
  perl-Time-Local.noarch 0:1.2300-2.el7             perl-constant.noarch 0:1.27-2.el7                    
  perl-libs.x86_64 4:5.16.3-292.el7                 perl-macros.x86_64 4:5.16.3-292.el7                  
  perl-parent.noarch 1:0.225-244.el7                perl-podlators.noarch 0:2.5.1-3.el7                  
  perl-threads.x86_64 0:1.87-4.el7                  perl-threads-shared.x86_64 0:1.43-6.el7              
  vim-common.x86_64 2:7.4.160-4.el7                 vim-filesystem.x86_64 2:7.4.160-4.el7                

完毕!

vim是带有颜色显示的,而vi则是黑白显示的。

vi /etc/passwd

[root@zyshanlinux-01 ~]# vi /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1000:1001::/home/user1:/bin/bash
user2:x:1005:1002::/home/user2:/bin/bash
user3:x:1007:1002::/home/test:/sbin/nologin
user6:x:1009:1009::/home/user6:/bin/bash
user5:x:1010:1011::/home/user5:/bin/bash
user9:x:1013:1013::/home/user9:/bin/bash
"/etc/passwd" 27L, 1179C

vim /etc/passwd

用vim打开了/etc/passwd千万不要进行改动,改错了会造成系统启动受影响。

vim分3种模式:

一般模式:dd命令,把一行删除,复制某行粘贴等。

编辑模式:进入编辑模式需要按【i】这个按键过程,用键盘对文档字、符进行修改,还有回车、换行等。

命令模式:像less命令,/+关键字,可以查找等。把文档里的123改为456,可以批量操作的。包括:wq也是命令模式。

vim颜色显示和移动光标

相同的文件在不同的目录下,就有可能会导致颜色不存在;在centos里面/etc/下面的文件往往是配置文件,在/etc/下面就会显示颜色,把它放到其他地方它就不会显示颜色,这是它的一个特性。

但是/etc/fstab移到/tmp/passwd仍然有颜色,这是为什么呢?这是因为vim的颜色还与文件的具体内容有关系,不只如此,它的颜色还与名字有关;

vim有自己的配置文件:

/etc/vimrc

vim的高级用法就需要进入该配置文件进行配置。

vim一般模式下的移动光标

空格也是向右移动一个字符的,但是在空格键和h、l、k、j键前面加上数字,光标就会移动到你指定数字的行列去。

按键作用
h或者向左的方向键光标向左移动一个字符
l或者向右的方向键光标向右移动一个字符
k或者向上的方向键光标向上移动一个字符
j或者向下的方向键光标向下移动一个字符
Ctrl+f或PageUp键屏幕向前移动一页
Ctrl+b或PageDown键屏幕向后移动一页
数字0或者Shift+6移动到本行行首
Shift+4移动到本行行尾
gg移动到首行
G移动到尾行
n+G(n是任意数字)移动到第n行

一般模式下复制剪切粘贴

按键作用
x,Xx表示向后删除一个字符,X表示向前删除一个字符
n+x向后删除n个字符
dd删除/剪切光标所在的那一行
ndd(n为number缩写)删除/剪切光标所在行之后的n行
yy复制光标所在行
p从光标所在行开始,向下粘贴已经复制或者粘贴的内容
P(大写)从光标所在行开始,向上粘贴已经复制或者粘贴的内容
nyy从光标所在行开始,向下复制n行
u还原上一步操作(最多恢复50次);Ctrl+r反向恢复。
v按v后移动光标会选中指定字符,然后可以实现复制、粘贴等操作

进入编辑模式

进入编辑模式:

可以进入到了可以编辑文本文档的一种模式。

不同的按键方式可以产生不同的作用。

【i】在当前字符前插入

【I】在光标所在的行行首插入

【o】在当前行的下一行插入新的一行

【O】在当前行的上一行插入新的一行

【a】在当前字符后插入

【A】在光标所在行的行尾插入

在编辑模式中,判断一行是否是同一行,可以看右下角的行列提示,或者用上下键操控光标移动观看。

命令模式

命令作用
/word向光标之后查找一个字符串word,按n向后继续搜索
?word向光标之前查找一个字符串word,按n向前继续搜索
:n ,n2s/word1/word2/g在n1-n2行之间查找word1并替换为word2,不加g则只替换每行的第一个 word1
:1,$s/word1/word2/g将文档中所有(不指定)的word1替换为word2,不加g则只替换每行的第一个word1
:w保存文本
:q退出vim
:w!强制保存,在root用户下,即使文本只读也可以完成保存
:q!强制退出,所有改动不生效
:wq保存并退出
:set nu显示行号
:set nonu不显示行号

特殊情况:需要替换的内容本身带有/号

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1000:1001::/home/user1:/bin/bash
user2:x:1005:1002::/home/user2:/bin/bash
user3:x:1007:1002::/home/test:/sbin/nologin
user6:x:1009:1009::/home/user6:/bin/bash
user5:x:1010:1011::/home/user5:/bin/bash
user9:x:1013:1013::/home/user9:/bin/bash
user19:x:1014:1015::/home/user19:/bin/bash
user4:x:1015:1016::/home/user4:/bin/bash
~                                                                                                         
~                                                                                                         
~                                                                                                         
~                                                                                                         
~                                                                                                         
~                                                                                                         
:1,$s//sbin/nologin/zyshan/g  #当需要替换的内容是带有“/”就会和它原有的/发生冲突,无法识别出第3个/后的内容,报E488错误。

E488: 多余的尾部字符                                                             13,1         全部

出现这种情况怎么办?这时我们就可以考虑用不同的符号去替换分割的/号。

  • 用\对命令进行脱义

    systemd-network:x:192:192:systemd Network Management:/:zyshan
    dbus:x:81:81:System message bus:/:zyshan
    polkitd:x:999:997:User for polkitd:/:zyshan
    postfix:x:89:89::/var/spool/postfix:zyshan
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:zyshan
    chrony:x:998:996::/var/lib/chrony:zyshan
    user1:x:1000:1001::/home/user1:/bin/bash
    user2:x:1005:1002::/home/user2:/bin/bash
    user3:x:1007:1002::/home/test:zyshan
    user6:x:1009:1009::/home/user6:/bin/bash
    user5:x:1010:1011::/home/user5:/bin/bash
    user9:x:1013:1013::/home/user9:/bin/bash
    user19:x:1014:1015::/home/user19:/bin/bash
    user4:x:1015:1016::/home/user4:/bin/bash
    ~                                                                                                         
    ~                                                                                                         
    ~                                                                                                         
    ~                                                                                                         
    ~                                                                                                         
    ~                                                                                                         
    :1,$s/\/sbin\/nologin/zyshan/g  #成功替换带/号的内容
    

    也可以用“#”或者“@”来代替“\”

当某些内容是高亮的时候,你不想看高亮的,可以输入命令:nohl

user19:x:1014:1015::/home/user19:/bin/bash
user4:x:1015:1016::/home/user4:/bin/bash
~                                                                                                         
~                                                                                                         
~                                                                                                         
~                                                                                                         
~                                                                                                         
~                                                                                                         
:nohl     #no high light不要高亮

:x命令在更改文件之后去操作的效果和:wq是一摸一样的。

如果打开文件但没有操作过,使用:wq它会更改mtime更改你查看文件那一刻的时间,使用:x则不会更改mtime

延伸阅读


Logo

更多推荐