5.1 vim介绍

·vim 是 vi 的升级版本

·vim 是带有颜色显示的

·默认没有安装 vim 的话,手动安装 vim-enhanced 包

[root@arslinux-01 ~]# yum install -y vim-enhanced


·一般模式、编辑模式、命令模式

一般模式:dd 等

编辑模式:按 i 开始编辑后

命令模式:/ 搜索、查找替换、:wq保存退出


5.2 vim颜色显示和移动光标

·相同的文件在不同的目录下,有可能导致颜色没有了

/etc 下有颜色,其他目录无颜色

[root@arslinux-01 ~]# vim /tmp/passwd


·在没有颜色的配置文件中,添加 # 开头的行,保存重新打开,会发现,有颜色显示了


·将名称改成 .sh 也会有颜色

[root@arslinux-01 ~]# mv /tmp/passwd /tmp/passwd.sh
[root@arslinux-01 ~]# vim !$
vim /tmp/passwd.sh


·其实没必要纠结会不会显示颜色,颜色往往根据文件的具体内容有关,如果是脚本的话,可能根据脚本的不同来显示具体的颜色


vim 的配置文件:/etc/vimrc

在配置文件开头加上 #! /bin/bash ,配置文件会将 if 、for 等 shell 语法高亮


5.3 vim一般模式下移动光标

h                             向左移动一个字符

l                             向右移动一个字符

j                             向下移动一个字符

k                             向上移动一个字符

空格                         向右移动一个字符

nh                            向左移动 n 个字符

nl                             向右移动 n 个字符

nj                             向下移动 n 个字符

nk                             向上移动 n 个字符

n空格                         向右移动 n 个字符

ctrl+f                         向前翻页

ctrl+b                         向后翻页

0                                  光标快速移动到行首

shift+6(^)              光标快速移动到行首

shift+4($)              光标快速移动到行末

gg                              光标回到首行行首

G或shift+g                  光标移动到最后一行行首

nG(或者n shift+g)    光标移动到第 n 行行首


5.4 vim一般模式下复制、剪切和粘贴

dd                             剪切、删除一行

ndd                             剪切、删除包含光标所在行内往下的 n 行

p                                 粘贴在光标所在的下一行

P                                 粘贴在光标所在的上一行

yy                                 复制光标所在一行

nyy                             复制含光标所在行内往下的 n 行

x                                 向后剪切、删除一个字符

X                                 向前剪切、删除一个字符

nx                                 向后删除/剪切n个字符

v                                 按v后移动光标会选中指定字符,可以实现复制、粘贴等操作

u                                 恢复一次操作(最多恢复50次)

Ctrl+r                         还原时多还原了一次的话,按此快捷键取消一次还原操作

dG                             从删除光标所在行以下所有行

d^                             删除光标之前到行首的内容

D或d$                         删除光标到行尾的内容


5.5 进入编辑模式

i                          光标所在位置开始编辑

I                          光标跳到行首,从行首开始编辑

a                          光标所在后一个字符开始编辑

A                          光标所行的行末开始编辑

o                          光标行的下方插入一行开始编辑

O                          光标行的上方插入一行开始编辑


5.6 vim命令模式

/word                                          向光标之后查找一个字符串word,按 n 向下继续搜索,N 或 shift+n 向上

?word                                           向光标之前查找一个字符串word,按 n 向上继续搜索,N 或 shift+n 向下

:n1,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!                                                  强制退出,所有改动不生效

:e!                                                  恢复到打开时的状态

:set nu                                              显示行号

:set nonu                                          不显示行号

:↑                                                      上次使用的命令

:nohl                                                  高亮显示的词,不高亮提示

:x                                                          保存退出,更改文件后,更改mtime;未更改,wq会改mtime,x不会

:1,100s/dnsmasq/arslinux/g             从第1行到100行,s表示开始替换,把dnsmasq替换为arslinux,g表示全部替换

1,$s/\/etc\/hosts\//arslinux/g             把/etc/hosts/替换为arslinux,用 \ 转义;或者 1,$s#/etc/hosts/#arslinux/g或者@符号分隔

\ 转义 或者 用 # 作为语法字符


5.7 vim实践

#cp /etc/dnsmasq.conf /tmp/1.txt

1,分别向下,向右,向左,向上移动6个字符                                        (6j,6l,6h,6k)

2,分别向下、向上翻两页                                                                (分别按两次ctrl+f和ctrl+b)

3,把光标移动到第49行                                                                    (49G)

4,把光标移动到行尾, 再移动到行首                                                (shift+4,shift+6)

5,移动到1.txt文件的最后一行                                                            (G)

6,移动到文件的首行                                                                        (gg)

7,搜索文件中出现的“dnsmasq”,并数一下该字符串出现的次数        (/dnsmasq然后按n)

8,把从第1行到第10行出现的dnsmasq替换成dns                                   (:1,10s/dnsmasq/dns/g)

9,还原上一步操作                                                                              (u)

10,把整个文件中所有的etc替换成cte                                                        (1,$s/etc/cte/g)

11,把光标移动到第25行,删除字符串“ly”                                           (25G然后按j向右移动光标找到“lyl”,按v选中,然后按x)

12,还原上一步操作                                                                      (u)

13,删除第50行                                                                          (50G dd)

14,还原上一步操作                                                                      (u)

15,删除第37-42行所有内容                                                          (37G 6dd)

16,还原上一步操作                                                                      (u)

17,复制第48行的内容并粘贴到第52行下面                                     (48G yy 52G p)

18,还原上一步操作                                                                      (u)

19,复制第37-42行的内容并粘贴到第44行上面                                   (37G 6yy 44G P )

20,还原上一步操作                                                                      (u)

21,把第37-42行的内容移动到第19行下面                                       (37G 6dd 19G p)

22,还原上一步操作                                                                      (u)

23,把光标移动到首行,把第1行内容改为“#!/bin/bash”            (先按gg,把光标定位到第1行,然后按字母A,进入编辑模式,同时>光标到行尾,进行修改操作,完成后按Esc;dd再O也可以)

24,在第1行下面插入新的一行,并输入“#Hello!”                        (按o进入编辑模式,同时光标向下另起一行,输入“#Hello!”)

25,保存文档并退出                                                                      (按Esc键,输入":wq")



vim的特殊用法 http://www.apelearn.com/bbs/thread-9334-1-1.html

vim常用快捷键总结 http://www.apelearn.com/bbs/thread-407-1-1.html

vim快速删除一段字符 http://www.apelearn.com/bbs/thread-842-1-1.html

vim乱码 http://www.apelearn.com/bbs/thread-6753-1-1.html

小键盘问题 http://www.apelearn.com/bbs/thread-7215-1-1.html

vim加密  http://www.apelearn.com/bbs/thread-7750-1-1.html




0326课堂笔记


两个问题

1,磁盘和文件系统(目录)

df -h

fdisk -l 查看分区、磁盘

du -sh 查看文件占用磁盘大小 同 ls 不一样,一般比 ls 出的要大

du -sh 目录/ >文件 可以重定向到空白文件中,不用等他结束

重定向>后不能由空格

/dev/sdb1 不是目录,无法cd,必须挂载到一个目录,cd到该目录里


2,vim的临时文件

swp交换文件

vim自动保存的功能,防止数据丢失

在当前目录下生成一个 .swp 文件,直到 保存退出自动消失


vim特殊用法 http://ask.apelearn.com/question/9334

★ vim 粘贴代码自动缩进导致全乱了 http://ask.apelearn.com/question/6753

vim的小键盘问题 http://ask.apelearn.com/question/7215

快速删除一段字符 http://ask.apelearn.com/question/842

vim加密 http://ask.apelearn.com/question/7750