• Linux命令之vim(二)


      这一章主要介绍vim编辑器的内部使用方法和注意事项

      vim编辑器有四种工作模式:正常模式、插入模式、命令模式、可视模式。简单的判断方法就是看底部,什么都没有就是正常模式,光标在编辑器最底下时则是命令模式,有insert(replace)就是插入模式,有visual(visual line、visual block)就是可视模式。如果不确定自己处在什么模式下,按Esc(有时需要按两下)回到正常模式。

      vimtutor可以进入vim编辑器的简单教程,所以请看一下吧。

    (1).进入vim编辑器

      这个可以去看前一章,需要注意的是~代表该行没有任何内容,如果没有任何内容则代表这行有空白字符(如空格,Tab,Enter等)或不可见字符。

    (2).退出vim编辑器

      一般在命令模式下退出vim编辑器

    :q

    如果文件未被修改,直接退回到Shell;否则提示保存文件

    :q!

    强制退出,不保存修改内容

    :wq

    w命令保存文件,q命令退出vi,合起来就是保存并退出

    :w filename

    另存为新的文件

    ZZ

    保存并退出,相当于wq,但更方便

    (3).移动光标

      正常模式下最简单的移动光标hjkl,最左边的h往左移,最右边的l往右移,j看起来像向下的箭头向下移,k就是向上移了。

      注意:vim区分大小写,输入命令时不要锁定大写。可以在命令前加个数字作为前缀,例如2j就是光标向下移动两行。

    以下还有一些移动光标的命令,不过请从正常模式下开始操作:

    0或|(不是大写的i也不是小写的L)或<HOME>键

    将光标定位到一行的开头

    $或<END>键

    将光标定位到一行的末尾

    w

    定位到下一个单词词首

    e

    定位到下一个单词词尾。如果当前光标不在当前单词词尾,那会先定位到当前单词词尾

    b

    定位到上一个单词词首。如果当前光标不在当前单词词首,那会先定位到当前单词词首

    (

    定位到一句话的开头,以 !.?三种符号来界定。

    )

    定位到一句话的结尾。

    {

    移动到段落开头,段落是以空行作为界定标准

    }

    移动到段落结尾

    [[

    移动到第一行开头,在不是空行的情况下移动到第一个非空白字符

    ]]

    移动到最后一行开头

    n|

    移动到第n个字符

    gg

    移动到第一行开头

    1G

    移动到第一行开头

    G

    移动到最后一行开头

    nG

    移动到第n行开头

    H

    移动到屏幕顶端开头

    nH

    移动到距屏幕顶端n行的开头

    M

    移动到屏幕中间开头

    L

    移动到屏幕底部开头

    nL

    移动到距屏幕底部n行的开头

    :n

    移动到第n行开头

    (4).控制命令

      正常模式下使用

    <Ctrl>+u

    向前滚动半屏

    <Ctrl>+b

    向前滚动全屏(下一页)

    <Ctrl>+d

    向后滚动半屏

    <Ctrl>+f

    向后滚动全屏(上一页)

    <Ctrl>+y

    向前滚动一行

    <Ctrl>+e

    向后滚动一行

    <Ctrl>+i

    刷新屏幕

    (5).进入插入模式

      只有切换到插入模式下才能编辑文件。以下展示了一些从正常模式切换到插入模式的命令

    Insert(按键)

    这个按键有两种模式:在光标位置前插入文本和替换光标当前位置文本

    i

    在光标位置前插入文本

    I

    在当前行开头插入文本(光标会移动到开头)

    a

    在光标位置后插入文本(光标会后移一位)

    A

    在当前行末尾插入文本(光标会移动到末尾)

    o

    在当前位置下创建一行(光标会移动到空行)

    O

    在当前位置上创建一行(光标会移动到空行)

    (6).删除字符或行

    x

    删除当前光标下的字符

    X

    删除当前光标前的字符

    de

    删除当前光标到单词结尾的字符

    dw

    删除当前光标到下一个单词前一位字符

    d^

    删除当前光标到行首的字符

    d$

    删除当前光标到行尾的字符

    D

    删除当前光标到行尾的字符

    dd

    删除当前光标所在的行

    cc

    删除当前行的所有字符,并进入插入模式

    cw

    删除当前光标到单词结尾的字符,并进入插入模式

    C$

    删除当前光标到行尾的字符,并进入插入模式

      除了cc以外,都可以在前面添加数字进行重复操作,部分删除到结尾可能会合并行

    (7).修改文本

    r

    替换当前光标下的字符

    R

    从当前光标开始替换字符,进入插入模式下的替换模式

    s

    删除当前光标下的字符,并进入插入模式

    S

    删除当前行的字符,并进入插入模式

    (8).复制粘贴

    yy

    复制当前行

    nyy

    从当前行开始复制n行

    yw

    复制一个单词

    nyw

    从当前单词复制N个单词

    p

    如果复制的是单词,则粘贴到当前光标的后面;如果是行,则粘贴到当前行的下一行

    P

    如果复制的是单词,则粘贴到当前光标的前面;如果是行,则粘贴到当前行的上一行。

      注意:除了以上的复制,第(6)项提到的所有删除,都可以使用pP进行粘贴(我怀疑都是剪切)。

    (9).文本查找

      在正常模式下,输入/ 是向下查找,?是向上查找,后面跟随想要查找的内容。查找结果会高亮显示,使用N、n来进行上一个、下一个查找,想取消高亮(取消本次查询)请在正常模式下使用:noh。

      下面还有一些特殊字符,它们都有着自己的用处,如果希望使用这些特殊字符本身,需要在前面使用反斜杠。

    ^

    匹配一行开头,^在字符串前面

    .

    代替任何一个字符

    *

    (有点奇怪好像是匹配-1个,0个,2个和2个以上的字符。由于-1这个问题,所以*不能放在字符串首位)

    $

    匹配一行的结尾,$在字符串末尾

    []

    匹配一组字符,每一个字符单独匹配

     

      查找还可以在正常模式下使用FfTt,后面跟随单个字符,但只能在一个段落(因为是自适应转行,所以说是一行也是对的)内查询。F向上搜索,f向下搜索,光标定位到匹配的字符。T向上搜索,光标定位匹配字符前面,t向下搜索,光标定位匹配字符后面。

      在文本查找中有一个特殊的括号配对查找。将光标移动到(、[、{、}、]、)处,然后按%,光标会跳到配对的括号处。

    (10).set命令,自定义vim使用环境

      set命令比较多,所以介绍几个可能会用到的。注意:set命令都是临时设置。永久设置环境请前往/etc/vimrc(影响所有用户)或~/.vimrc(只影响自己,没有就自己创建)编辑。

    :set ic

    搜索时忽略大小写

    :set ai

    设置自动缩进(自动对齐)

    :set nu

    显示行号

    :set sw

    设置缩进宫格数,例如空格数为4,:set sw=4

    :set ws

    设置循环搜索

    :set wm

    设置自动换行

    :set ro

    将文件类型改为只读

    :set term

    输出终端类型

    :set bf

    忽略输入的控制字符,如BEL(响铃)、BS(退格)、CR(回车)等

    :set hlsearch

    打开高亮显示查找文本

      大部分可以通过加no取消设置,例如:set nonu,set nohlsearch。还有:nohlsearch(缩写noh)可以取消单次查找高亮。

      如果只想只是想搜索一次忽略大小写,可以/searchc,search代表检索的字符串

    (11).运行外部命令

    切换到命令模式,输入!和空格,再加上Linux命令即可

    例如:

    :! ls –a

    即可显示当前目录下的文件。

    按任意键可以返回vim编辑器

    (12).文本替换

    :s/search/replace

    替换光标所在行内的第一个匹配的字符串。search为检索的字符串,replace为替换的字符串。

    :s/search/replace/g

    替换光标所在行内的所有匹配的字符串。/g表示替换所有找到字符串。

    :#s/search/replace

    替换第#行第一个匹配的字符串。#表示替换的行号。#后面可以有空格,也可以没有。

    :#,#s/search/replace/g

    替换#,#两行之间匹配的所有字符串,其中#,#代表替换操作的若干行中首尾两行的行号。#,#后面可以有空格,也可以没有。

    :%s/search/replace/gc

    替换整个文件中所有匹配的字符串,在替换前需要用户确认是否替换。%表示所有行,/c表示对每个匹配字符串提示是否进行替换。%后面可以有空格,也可以没有。

    :%s/search/replace/gi

    替换整个文件中所有匹配的字符串,字符串忽略大小写。/i表示忽略大小写。

    注意:其中/可以换成@等特殊符号,不过很少有人用,了解就好。

    (13).高级命令

    J

    将当前行与下一行连接为一行

    << 

    将当前行左移一个单位(一个缩进宽度)

    >> 

    将当前行右移一个单位(一个缩进宽度)

    ~

    改写当前字符的大小写

    <Ctrl>+g

    显示当前文件名和状态,以及光标所在位置(后面n,m;n代表行号,m代表列号)

    U

    撤消对当前行所做的修改

    u

    撤消上次操作,vi只可以撤消一次,vim可以一直撤消

    <Ctrl>+r

    可以重做被撤销的命令,也可以成为撤消掉撤消命令

    :f

    以百分号(%)的形式显示当前光标在文件中的位置、文件名和文件的总行数

    :f filename

    将文件重命名为filename

    :w filename

    保存修改到filename

    :e filename

    代开另一个文件名为filename的文件

    :cd dirname

    改变当前工作目录到dirname

    :e #

    在两个打开的文件之间进行切换

    :n

    如果用vim打开了多个文件(vim file1 file2…)时使用,切换到下一个文件

    :N

    如果用vim打开了多个文件(vim file1 file2…)时使用,切换到上一个文件

    :r file

    读取file并在当前行的下一行插入

    :nr file

    读取file并在第n行的下一行插入

    :r !ls –a这是将外部命令读取并插入到当前行的下一行。可以类推其他外部指令的读取插入。

    (14).选择性保存

      将光标移动到想要保存部分的开头或结尾,按v进入可视模式,然后移动光标,将想要保存的部分全部选中(呈高亮状)。接着按:字符,底部出现:’<,’>后输入w newfile,newfile是一个未被使用的文件名。这时被选中的部分将会被保存到newfile中。

             同样再被选中状态下,按d将会删除选中部分,按y复制选中部分。

    (15).帮助信息

      按下键盘上(如果有)<HELP>,<F1>键,或者输入:help。可以用Ctrl+W在窗口间跳转,:q关闭帮助窗口。

      当然可以提供一个正确的参数给:help命令,帮助找到该主题,例如:help user-manual。

      由于打开的一样是vim编辑器,所以以上命令一样可以使用。

    (16).启用vim特性

      在vim编辑器下启用vim特性。Unix系统使用的命令:edit ~/.vimrc,MS-Windows系统使用的命令:edit $VIM/_vimrc。接着读取vimrc示例文件:r $VIMRUNTIME/vimrc_exaple.vim。保存文件命令:write。下次启动vim时,编辑器就会有语法高亮功能,更多了解输入:help vimrc-intro。

      在vim编辑器外部启用vim特性。使用vim /etc/vimrc(影响所有用户)或vim ~/.vimrc(只影响自己)。

    (17).补全功能

             确保vim不是在以兼容模式运行:set nocp。

             总共有两种补全方法:Ctrl+D和<Tab>键。举例说明,如果输入:e,按Ctrl+D将会显示所有以e开头的命令,<Tab>键会补全命令为匹配中第一个命令。

     (18).可视化模式的简单用法

      可视化模式又叫V模式或列模式,一般会在编写shell脚本时使用,用于多行注释。<Ctrl>+v可以进入到可视化模式下

    多行注释的使用方法如下:

    1)<Ctrl>+v进入可视化模式

    2)向上或向下移动光标,把需要注释的行开头选中

    3)按下大写的I

    4)然后再插入注释符号,如#

    5)按<Eac>退出编辑,等待几秒即可注释完成

    如果想删除多行注释,只需进入可视化模式,选中行开头,按下d等待几秒即可。

     

    Linux命令之vim(一):https://www.cnblogs.com/diantong/p/9253749.html

  • 相关阅读:
    【MySQL】(三)文件
    【MySQL】(二)InnoDB存储引擎
    Linux Shell脚本编程-信号捕获
    Linux Shell脚本编程-数组和字符串处理
    Linux Shell脚本编程-函数
    Linux Shell脚本编程-语句控制
    Linux Shell脚本编程-基础2
    Linux Shell脚本编程-基础1
    Awk
    Sed
  • 原文地址:https://www.cnblogs.com/diantong/p/9268681.html
Copyright © 2020-2023  润新知