Linux之vim文本编辑器

简介:

vim 可视化的文本编辑工具、文本编辑命令

    何谓文本:

        纯ASCII码:数字、字母、特殊字符,128种,用7位二进制表达,美国国家标准协会所规定,8位

        Unicode码:国际通用的,UTF-8,将全球的通用字符用16位2进制表示,40多亿种变化

vi improved,可视化,语法着色,语法检测,语法匹配

vi 应用于嵌入式环境中


CentOS系统之上,vi和vim实现或许相同 

1
2
3
4
# ls -l `which vi`
-rwxr-xr-x 1 root root 910136 Dec 22 01:00  /usr/bin/vi
# ls -l `which vim`
-rwxr-xr-x 1 root root 2289640 Dec 22 01:00  /usr/bin/vim


vim有不同的模式:命令模式编辑模式未行模式


在不同的模式中,键入每个字符的含义都不相同

1
2
# useradd myuser  添加myuser用户
# install -m 640 -o myuser -g myuser /etc/fstab /tmp/fstab.tmp 复制文件

    

命令模式中:dd表示删除整行


进入命令模式

1
# vim /tmp/fstab.tmp

  

命令模式中:光标移动至UUID行,

 wKioL1mChGLxROrqAAAuy0ITy0Y927.png


直接输入 dd,UUID行被删除。

wKiom1mChLKg1JHYAAAgipFrRLw778.png


编辑模式中:dd表示输入dd字符


进入命令模式

1
# vim /tmp/fstab.tmp

按I键

wKioL1mChcqjJYy3AAARcWB70js095.png

进入编辑模式,可以看到“左下脚的 --INSERT-- 字符,代表进入编辑模式”

wKiom1mChgbDr91YAABURromrzg687.png-wh_50

此时输入dd, 在光标所在处前 出现dd字符

wKiom1mChlWTaU6OAABQkOns10w341.png-wh_50


    

vim的模式介绍 (观察左下脚的字符)



    

命令模式

输入模式

末行模式:  vim内置的命令行接口,类似bash一样的命令行接口(跟内核交互),同样可以输入命令


命令模式: vim 命令执行后自动进入命令模式,左下脚一般为vim命令作用的对象

    wKiom1mCiY6hkRq6AABuj3MDShI223.png-wh_50

        

编辑模式: 输入特定的机键后,即能进入编辑模式(A,I,O,a,i,o)

wKiom1mCh3rzH6ZGAABdBJXxyLY260.png-wh_50

        

未行模式: 输入 “:”即可进入

wKioL1mCh4WjyGg0AABaMWhfWTM405.png-wh_50

    

######################vim入门曲线陡峭,却是让你抛弃nano,喜新厌旧的最好的理由。因为它的确很好用....##############################


如何使用VIM

    打开文件

    模式转换

    关闭文件


命令模式

    跳转、编辑、复制、粘贴、删除、替换、翻屏、


内置练习程序的使用

    调整语言


未行模式

    地址定界、查找、查找并替换


文本模式

    单个文件的命令及操作

    多个文件的命令及操作

    文本分割符使用


工作特性

获取帮助 



j_0028.gif如何使用VIM



利用vim命令打开文件

1
2
3
4
5
6
7
8
9
[root@izpo45bh60h6bsz ~] # type vim        #外部命令
vim is  /usr/bin/vim
[root@izpo45bh60h6bsz ~] # vim --help        #获取帮助
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 21 2016 17:00:20)
     vim [OPTIONS...] FILE....
         
     OPTIONS:
         + 打开文件后,光标跳转至行尾
         + /PATTERN  打开文件后,光标跳转至由模式匹配到的字符的行的第一行。PATTERN基本的正则表达式字符和纯文本字符组合

      

模式间的切换

1
2
[root@izpo45bh60h6bsz ~] # install -m 640 /etc/pam.d/system-auth-ac /tmp/
[root@izpo45bh60h6bsz ~] #   cp /etc/pam.d/system-auth-ac /tmp/

    

    




命令模式 ---> 编辑模式

        i , Insert      在光标所在处之前输入内容

        a ,append   在光标所在处之后,进入编辑模式,即可输入内容

        o,open 在   光标所在行的下方新打开一行

        I,  光标跳转至行首,进入编辑模式

        A, 光标跳转至行尾,进入编辑模式

        O, 在光标所在行的上方,新打开一行

        c,chage 

        C     删除光标所在行,进入编辑模式

        


使用示例

输入以上命令,完成切换模式

wKioL1mCiguCbuSNAABt5mdtDqk243.png-wh_50


此时即可键入字符

wKiom1mCi0_ScNcbAABxNp94So0207.png-wh_50





编辑模式 ---> 命令模式 

    ESC键即可退出编辑模式


使用示例:

处于编辑模式

wKioL1mCjTfA5y_3AAAXmBmxTRA901.png-wh_50

按ESC键后

wKiom1mCjY_hYVbkAAAXmK-BBFo464.png-wh_50






命令模式 ---> 未行模式

在命令模式中,输入 ":" 即可进入未行模式


使用示例 

处于命令模式中

wKioL1mCjeKgeADuAAARw_ns50M246.png-wh_50

按 SHIFT + 

wKioL1mCjiixcQ2AAAAOSwutLwY846.png-wh_50






未行模式  ---> 命令模式

    1、未行的命令接口中有字符时

      1次esc ,不会立即进入命令模式,需要等待2s

      2次esc ,立即进入命令模式

    2、未行的命令接口中无字符时

          1次esc,立即进入命令模式




退出文本文件

    在命令模式中 ZZ 大写Z

    在未行模式中

        对未编辑过的文件,q 退出

        对编辑过的文件

            : q! 强制退出,丢弃做出的修改,直接退出

            : wq 保存退出

            : x 保存退出

            : w /PATH/TO/SOMEFILE 注意:保存的为当前文件中的所有的内容。

            



j_0015.gif命令模式


光标跳转

        1)字符间跳转

            COMMAND:     

                h: 食指,光标向左移一位

                 j: 食指,光标向下移一行

                k: 中指,光标向上移一行

                l : 无名指,光标向右移一位

            

            数字和COMMAND组合时,一次可以移动多位/行

                例如: 

                    2h 向左移2位,不算当前字符,移动2位,光标处于第2位

                    3j  向下移动3行,不算当前行的下面2行,光标处于第2行

    

        2)单词间跳转

            COMMAND:

                w 光标跳转至下个单词词首

                e 光标跳转至当前或下个单词的词尾

              光标在非词尾处,跳到当前词尾

              光标在词尾处,跳到下个单词词尾

                b 光标跳转至当前或上个单词的词首

              光标在非词首处,跳到当前词首

              光标在词首处,跳到上个单词词首


             数字和COMMAND组合时,一次可以跳转多个词

                例如:

                    2w 光标跳转由2指定个数的单词数,


        3)行首或行尾跳转

            ^ 跳转至当前行的起始位置

            $  跳转至当前行的结束位置


            0 跳转至行首起始的最后一个空白字符

                如果没有空白字符时,跳转至绝对行首

         TAB键,也算空白


        4)行间移动

            首行 1G,gg

            未行 G

            由#指定的行 #G

    

        5)句间跳转

            [ 前一句   后一句 ]


        6)段间跳转

            {前一段    后一段}

            

文本编辑

        1)字符编辑

            删除, x #x

            替换, r #r

        

        2)删除命令

             删除不转换为编辑模式: d,dd 

             删除转换为编辑模式: c , cc


        3)复制命令

            y,yy


         4)粘贴命令,p,P

            缓冲区中为整行,粘贴为新行

            缓冲区中非整行,粘贴为当前行

  

其他编辑操作

        1)可视化

            v 字符级别

            V 行级别


        2)撤消操作,50

            u

        

        3)撤消撤消操作

           ^r


        4)重复执行上次执行的命令

              .

        

        5)命令历史


翻屏操作

        ^f front 向下翻 一屏

        ^b back 向上翻 一屏

        ^d down 向下翻 半屏

        ^u up      向上翻 半屏


        ^表示 Ctrl 键



j_0028.gif内置练习程序的使用

    调整语言

        locale命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1、忘记命令:命令补全
# local + 2次TAB,补全列表
local       locale     localectl  localedef 
 
2、查看命令的类型
# type localectl                            ##查看命令的类型,已被hash化
localectl is hashed ( /usr/bin/localectl )
# hash                                      ##查看hash表
hits     command
    /usr/bin/localectl
    /usr/bin/install
    /usr/bin/cat
    /usr/bin/vim
# hash -d localectl                         ##清除指定命令的hash条目
# hash                                      ##确认hash表不存在此条目 
hits     command
    /usr/bin/install
    /usr/bin/cat
    /usr/bin/vim
# type localectl                            ##显示命令的类型:外部命令
localectl is  /usr/bin/localectl
 
3、获取帮助 
外部命令(  man  cmd 、cmd --help )
# localectl --help
localectl [OPTIONS...] COMMAND ...         
 
查询或更改系统区域和键盘设置。     ------引用有道 http: //dict .youdao.com/
 
Commands:
   status                   显示当前设置的语言环境
   set -locale LOCALE...     设置系统语言环境
   list-locales             显示已知的语言环境


    选项:

status

1
2
3
4
# localectl status
    System Locale: LANG=en_US.UTF-8      ##显示当前语言环境国标,英文
        VC Keymap: us
       X11 Layout: us


list-locales

1
2
3
4
5
6
7
8
9
10
11
12
# localectl list-locales
 
中文编码格式:
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8       16位 7000个汉字,
 
英文编码:ASCII     8位  127=2^7
en_US.iso88591
en_US.iso885915
en_US.utf8


set-locale LOCALE...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、设置为中文
# localectl set-locale LANG="zh_CN.UTF-8"
# localectl status
    System Locale: LANG=zh_CN.UTF-8
        VC Keymap: us
       X11 Layout: us
 
2、设置为英文
# localectl set-locale LANG="en_US.UTF-8"
# localectl status
    System Locale: LANG=en_US.UTF-8
        VC Keymap: us
       X11 Layout: us
       
3、设置后重启终端或别起shell进程



j_0021.gif未行模式

地址定界:文本操作时,可以指定哪些范围内的文本信息

    格式start_pos,end_pos 

    # 具体第#行

    #,#   从左侧#表示起始,从右侧#表示行结尾 

    #,+# 从左侧#表示行起始,加上右侧#表示的行数 

    #,-#   从左侧#表示行起始,减去右侧#表示的行数 

    . 当前行

    $ 最后一行

    .,$-1 当前行至倒数第二行

    % 全文,相当于 1,$

    /PATTERN1/,/PATTERN2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束,中间的所有行

    #,/pat/   具体第#行,到第一次被pat1模式匹配到的行

    /pat/,#   第一次被pat1模式匹配到的行到,具体第#行


使用组合:

    start_pos[,end_pos] 命令编辑操作符

        d,y,p,w,r


查找

/PATTERN  从当前光标所在处向文件尾部查找

正则表达式

.   任意单个字符

^ $

\(\)

\1,\2,...


?PATTERN  从当前光标所在处向文件首部查找


同less命令

n 与命令同方向

N 与命令反方向


查找并替换:先查找,后替换

s: 在未行模式下完成查找替换操作

s/要查找的内容/要替换为的内容/修饰符

要查找的内容:PATTERN 基本正则表达式字符

替换的内容,可以用\1,\2,   &引用前面查找到的所有的内容

修饰符:

i:忽略大小写

g: 全局替换,没有g,每一行只替换第一次出现


同分割符,需要转义, /

分割符可以替换为任意特殊字符

@#^&...

s@@@

s###


j_0025.gif文本模式

单个文件的命令及操作

命令格式 vim [OPTIONS...] FILE

  打开文件后,直接让光标处于行尾

+/PATTERN     打开文件后,直接让光标处于第一次匹配到模式的行


FILE 路径必须存在,基名可以不存在

# vim #必须要指明保存位置


窗口切割

Ctrl + w 松开 按 

s split 水平分割

v vertical 垂直分割


多个文件的命令及操作

    窗口不分割模式

     vim FILE ...

     :next 下一个文件

     :prev 前一个文件

     :last 最后一个文件

     :first

     :wall  保存所有

     :wqall 保存退出所有

     :wq 退出当前

    

     例如:

     vim /tmp/{functions,fstab,issue}

    

     相当于:

     vim /tmp/functions /tmp/fstab /tmp/issue

    

    窗口分割模式

     vim [OPTIONS...] FILE...

     -o 水平分割

     -O 垂直分割

    

     窗口间切换

     ^w 松开后 按Arrow 

    

     Arrow: 箭头

    

     例如:

     vim functions grub2.cfg


j_0015.gif工作特性

    未行中定义:当前vim进程有效 ,重新打开vim进程无效

     1)行号

     显示:  set number  简写为 set nu

     取消显示  set nonumber  简写为 set nonu


     2)括号匹配

     显示        set showmatch     简写为 set sm

     不显示      set noshowmatch   set nosm

    

     3)自动缩进

     启动       set ai

     不启用     set noai

    

     4)高亮搜索:搜索到的字串高亮显示

     启用:      set hlsearch

     禁用:     set nohlsearch

    

     5)语法高亮(字符的颜色)

     启用 syntax on

     禁用 syntax off

    

     6)忽略字符的大小写

     启用: set ic

     不忽略: set noic   默认,linux区分字符大小写

    

     7)如何TAB键自动缩进为4个字母

     set tabstop=4

    

    永久有效

     全局: /etc/vimrc

     个人: ~/.vimrc

    

     ** 注意不用重读配置文件

j_0023.gif帮助文本

更多VIM功能

    1)vim中文手册

    2)未行命令接口:help [KEYWORD]

     快捷键

    

     :help help










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1953252,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
存储 Linux 编译器
vim编辑器和gcc/g++编辑器的使用讲解
vim编辑器和gcc/g++编辑器的使用讲解
53 2
|
1月前
|
Shell Linux C语言
【Shell 命令集合 文本编辑器 】Linux pico 编辑器使用指南
【Shell 命令集合 文本编辑器 】Linux pico 编辑器使用指南
35 1
|
1月前
|
存储 搜索推荐 Shell
【Shell 命令集合 文本编辑器】Linux joe 编辑器的使用教程
【Shell 命令集合 文本编辑器】Linux joe 编辑器的使用教程
32 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 文本编辑器】Linux jed 编辑器使用指南
【Shell 命令集合 文本编辑器】Linux jed 编辑器使用指南
28 0
|
18天前
|
搜索推荐 NoSQL Linux
Linux开发工具——vim篇
Linux开发工具——vim篇
|
18天前
|
Ubuntu Linux 编译器
【Linux】4. 开发工具的使用(yum/vim)
【Linux】4. 开发工具的使用(yum/vim)
43 2
|
1天前
|
人工智能 数据可视化 Linux
【linux基础(五)】Linux中的开发工具(上)---yum和vim
【linux基础(五)】Linux中的开发工具(上)---yum和vim
|
9天前
|
Linux 程序员 开发工具
最强文本编辑器 VIM 获取与安装
最强文本编辑器 VIM 获取与安装
|
1月前
|
Unix Shell Linux
【Shell 命令集合 文档编辑】Linux 文本编辑器 ex命令使用指南
【Shell 命令集合 文档编辑】Linux 文本编辑器 ex命令使用指南
34 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文档编辑】Linux 行编辑器 ed命令使用指南
【Shell 命令集合 文档编辑】Linux 行编辑器 ed命令使用指南
29 0