精华内容
下载资源
问答
  • VIM 编辑器使用指南

    2020-06-07 10:58:40
    Linux中所有内容都是以文件形式管理,在命令行下更改文件内容,常常会用到文本编辑器。 我们首选文本编辑器是Vim,它是一个机遇文本界面编辑工具,使用简单且功能强大,更重要是,Vim是所有Linux发行版本...

    第5章 Vim编辑器

    Linux中的所有内容都是以文件形式管理,在命令行下更改文件内容,常常会用到文本编辑器。

    我们首选的文本编辑器是Vim,它是一个机遇文本界面的编辑工具,使用简单且功能强大,更重要的是,Vim是所有Linux发行版本的默认文本编辑器。

    很多Unix和Linux的老用户习惯称呼它为Vi,Vi是Vim的早期版本,现在我们使用的Vim(Vi improved)是Vi的增强版,增加了一些正则表达式的查找、多窗口的编辑等功能,使得Vim对于程序开发来说更加方便。想了解Vi和Vim的区别,可以在Vim命令模式下输入“:help vi_diff”,就能够看到两者区别的摘要。

    5.1 Vim的工作模式

    在使用Vim编辑文件前,我们先来了解下它的三种工作模式:命令模式、输入模式和编辑模式,如下图所示:

    在这里插入图片描述

    1. 命令模式

    使用Vim编辑器时,默认处于命令模式。在此模式下,可以使用上、下、左、右键或者k、j、h、l命令进行光标移动,还可以对文件内容进行复制、粘贴、替换、删除等操作。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。

    1. 输入模式

    在输入模式下可以对文件执行写操作,类似于在windows的文档中输入内容。进入输入模式的方法是输入i、a、o等插入命令,编写完成后按ESC键即可返回命令模式。

    1. 编辑模式

    如果要保存、查找或者替换一些内容等,就需要进行编辑模式。编辑魔术的进入方法为:在命令模式下按“:”键,Vim窗口的左下方会出现一个“:”符号,这时就可以输入相关的指令进行操作了。指令执行后会自动返回命令模式。

    • :w 保存不退出
    • :w 新文件名 把文件另存为新文件
    • :q 不保存退出
    • :wq 保存退出或者使用ZZ(大写)
    • :! 强制
    • :q! 强制不保存退出,用于修改文件之后,不保存数据退出。
    • :wq! 强制保存退出,当文件的所有者或者 root 用户,对文件没有写权限的时候,强制写入数据使用。

    5.2 进入Vim

    了解了Vim的工作模式后,就可以愉快的使用Vim进行文件编辑了。先来看一下Vim打开的文件方法。

    5.2.1 使用Vim打开文件

    使用Vim打开文件很简单,例如想打开用户信息文件/etc/passwd,打开方法如下:

    [root@localhost ~]# vim /etc/passwd
    

    刚打开文件时进入的是命令模式,此时文件的下方会提示文件的一些信息,包括文件名、文件的总行数和字符数,以及当前光标所在的位置等,此时可以使用插入命令进入命令进入输入模式对文件进行编辑,如下图所示:

    在这里插入图片描述

    5.2.2 直接进入指定位置

    如果想直接进入Vim编辑文件的指定行数处或者特定字符串所在行,节省编辑时间,例如打开/etc/passwd文件时直接进入第10行,则可以这样操作:

    [root@localhost ~]# vim +10 /etc/passwd
    #可以看到光标已经处于第10行的行首位置了
    

    打开文件后,直接进入“nobody”字符串所在行,则可以这样操作:

    [root@localhost ~]# vim +/nobody/ /etc/passwd
    #可以看到光标已经处于nobody字符串所在位置了,如果文件中有多个“nobody”字符串,则会以查到的第一个为准。
    

    5.3 Vim的基本应用

    打开文件后,接下来开始对文件进行编辑。Vim虽然是一个基于文本模式的编辑器,但却提供了丰富的编辑功能。

    5.3.1 插入命令

    从命令模式进入输入模式进行编辑,可以按下I、i、O、o、A、a等键来完成,不同的键只是光标所处的位置不同而已。当进入输入模式后,你会发现,在ViM编辑窗口的左下角会出现“INSERT”标志,这就代表我们可以执行写入操作。

    常用插入命令:

    • a:在当前光标所在位置之后插入随后输入的文本;
    • A:在光标所在行的行位插入随后输入的文本,相当于光标移动到行位在执行a命令;
    • i:在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动;
    • I:在光标所在行的行首插入随后输入的文本,行首是改行的第一个非空白字符,相当于光标移动到行首在执行i命令;
    • o小:在光标所在行的下面插入新的一行,光标停在空行的行首,等待输入文本;
    • O大:在光标所在行的上面插入新的一行,光标停在空行的行首,等待输入文本;

    5.3.2 光标移动命令

    在进行编辑工作之前,需要将光标移动到适合位置。Vim提供了大量的光标移动命令,注意这些命令需要在命令行模式下执行。下面介绍一些常用的光标移动命令。

    1. 以字符为移动单位
    上、下、左、右方向键  ------移动光标
    

    在Vim中进行定位需要通过上、下、左、右方向键,并且无论是命令模式还是输入模式,都可以通过方向键来移动光标(在编辑模式中,方向键是用来查看命令历史记录的)。

    h、j、k、l   ------移动光标
    

    另外,还可以在命令模式中使用h、j、k、l 4个字符控制方向,分别表示向左、向下、向上、向左。

    1. 以单词为移动单位
    w	------移动光标到下一个单词的单词首
    b	------移动光标到上一个单词的单词首
    e	------移动光标到下一个单词的单词尾
    

    有时候需要迅速进入一行中的某个位置,如果能使光标一次移动一个单词就会非常方便。可以在命令模式中使用“w”命令来使光标向后跳到下一个单词的单词首,或者使用“b”命令使光标向前跳到上一个单词的单词首,还可以使用“e”命令使光标跳到下一个单词的。

    1. 移动到行首或者行尾
    $	------移动光标到行尾
    0或^	------移动光标行首
    

    可以使用“使0”命令将光标移至行尾,使用“0”或“^”命令将光标移至行首。其实,对于命令来说,可以使用诸如“n$”之类的命令来将光标移至当前光标所在行的之后n行的行尾(n为数字);对于“0”命令来说却不可以,但是可以用“n^”。

    1. 移动到一行的指定字符处
    f字符	------移动光标到第一个符合条件的字符处
    

    如果在一行中需要将光标移动到当前行的某个特定字符处,则可以使用f命令。例如,某行为“you can you up, no can no bb”,现在需要将光标移动到字符p处,则可以使用“fp”命令,这样光标就会迅速定位到字符p处。f命令有一个使用条件,即光标需在指定字符前。

    1. 移动到匹配的括号出
    %	------在匹配的括号间切换
    

    如果你是一名程序员,那么在使用Vim进行编辑时经常会为将光标移动到与一个“(”匹配的“)”(对于[]和{}也是一样的)处而感到头疼。其实在Vim里面提供了一个非常方便的查找匹配括号的命令,这就是“%”。比如,在/etc/init.d/sshd脚本文件中,想迅速地将光标定位到与第49行的“{”相对应的“}”处,则可以将光标先定位在“{”处,然后在使用“%”命令,使之定位在“}”处。

    1. 移动到指定行处
    nG或:n	------移动光标到指定的行
    

    可以直接在命令模式中输入“nG" (n为数字,G为大写)或“:n”(在编辑模式中输入数字)命令将光标快速的定位到指定行的行首。

    5.3.3 使用Vim进行编辑

    光标移动到指定位置后,如何进行编辑操作呢? Vim 提供了大量的编辑命令,下面介绍其中一些常用的命令。

    1. 查找指定字符串
    /要查找的字符串	------从光标所在行开始向下查找所需的字符串
    ?要查找的字符串	------从光标所在行开始向上查找所需的字符串
    :set ic	------查找时忽略大小写
    

    一个字符串可以是一个或者多个字母的集合。如果想在Vim中查找字符串,则需要在命令模式下进行。在Vim命令模式中输入“/要查找的字符串”,在按一下回车键,就可以从光标所在行开始向下查找指定的字符串。如果要向上查找,则只需输入“?要查找的字符串”即可。

    如果匹配的字符串有多个,则可以按“n”键向下继续匹配查找,按“N”键向上继续匹配查找。如果在文件中并没有找到索要查找的字符串,则在文件底部会出现“Pattern not found”提示。

    在查找的过程中需要注意的是,要查找的字符串是严格区分大小写的,如查找“shenchao”和“ShenChao”会得到不同的结果。如果想忽略大小写,则输入命令“:set ic”;调整回来输入“:set noic”。如果在字符串中出现特殊符号,则需要加上转移字符“\”。常见的特殊符号有\、*、?、^、10等。如果出现这些字符,例如,要查找字符串“10”,则需要在命令模式下输入“/10$”。

    还可以查找指定的行。例如,要查找一个以root为行首的行,则可以进行如下操作:

    /^root
    

    要查找一个以root为行尾的行,则可以进行如下操作:

    /root$
    
    1. 使用Vim进行替换
    r	------替换光标所在处的字符
    R	------从光标所在处开始替换字符,按ESC键结束
    

    小写r可以替换光标所在处的某个字符,将光标移动到想替换的单个字符处,按下r键,然后直接输入替换的字符即可;大写的R可以从光标所在处开始替换字符,输入会覆盖后面的文本内容,知道俺Esc键结束替换。
    批量替换:

    :替换起始处,替换结束处 s/源字符串/替换的字符串/g	------替换范围内的字符串
    :% s/源字符串/替换的字符串/g	------替换整篇文档的字符串
    

    如果不加g,则只替换每行第一个找到的字符串。

    假设要将/etc/passwd文件中所有的“root”替换为“liudehua”,则可以输入“:1,$ s/root/liudehua/g”或“:%s/root/liudehua/g”。

    上述命令是在编辑模式下操作的,表示的是从第一行到最后一行,即全文查找“root”,然后替换成“liudehua”。如果刚才的命令变成如下这样:

    :5,10 s/root/liudehua/g
    #则只替换从第5行到第10行的“root”
    
    1. 使用Vim进行删除、粘贴、复制
    x   ------删除光标所在字符
    nx  ------从光标所在位置向后删除n个字符,n为数字
    dd  ------删除整行,如果之后粘贴,则此命令的作用是剪切
    ndd ------删除多行
    dG  ------删除从光标所在行到文件末尾的内容
    D   ------删除从光标所在处到这行行尾的内容
    :起始行,终止行 d  ------删除指定范围的行
    yy或Y  ------复制单行
    nyy或nY    ------复制多行
    p   ------粘贴到当前光标所在行下
    P   ------粘贴到当前光标所在行上
    

    如果处于命令模式下,则可以按下“x”键来删除光标所在位置的单个字符;快速按两下“d”键来进行整行删除;如果想要删除连续多行,例如,想要删除10行,则可以按下“10dd”,可以快速删除当前光标所在行下10行。

    此时被删除的内容并没有真正删除,都临时放在了内存中。将光标移动到指定位置处,按下“p”键,就可以将刚才删除的内容又粘贴到此处。

    “dG”键可以删除从光标所在行一直到文件末尾的全部内容,而“D”键可以删除从光标所在处到这行行尾的内容。如果要删除指定范围的行,则可以用“:起始行,终止行 d”。如删除第1~3行,则输入“:1,3 d”,会提示“3 fewer lines”。

    还可以通过“yy”键来复制单行,或者通过在前面加上数字来复制当前光标所在行下的多行。

    有时候可能需要把两行进行连接。如在下面的文件中有两行,现在需要使其成为一行,实际上是将两行间的换行符去掉。可以直接在命令模式下将光标移动至第一行尾“,”处,然后按“J”键,按下前如下所示:

    you don't bird me,
    I don't bird you.
    

    按下J键后变成如下所示:

    you don't bird me, I don't bird you.
    
    1. 使用Vim撤销上一步操作
    u   ------撤销
    

    如果不小心误删除了文件内容,则可以通过“u”键来撤销刚才执行的命令。如果要撤销刚才的多次操作,则可以多按几次“u”键。

    5.3.4 保存退出命令

    Vim的保存和退出是在命令模式中进行的,为了方便记忆,只需要记住w、q、!三个符号的含义即可完成保存任务。

    w   ------保存不退出
    q   ------退出不保存
    !   ------强制性操作
    

    例如,在命令模式中只输入“w”字母就意味着保存但不退出;如果输入“wq”就意味着保存且退出;如果输入“w!”或“wq!”就意味着强制保存或强制保存退出,这种情况经常发生在对一个文件没有写权限的时候(显示readonly),但如果你是文件的所有者或者root用户,就可以强制执行。

    其他用法,如“q!”表示不保存退出;保留源文件,而另存为其他的文件,可以用“w 新文件名”,如“w /tmp/shadow.vi”。

    在命令模式下,还可以输入“ZZ”命令退出,按两次“shift+z”快捷键比较方便。此时如果对文件没有修改,就是不保存退出;如果对已经对文件进行了修改,就是保存后退出。

    5.4 Vim的进阶应用

    5.4.1 vim 配置文件

    在使用Vim进行编辑的过程中,经常会遇到需要同时对连续几行进行操作的情况,这时如果每行都有行号提示,就会非常方便。在命令模式下输入“:set nu”即可显示每一行的行号。如果想取消行号,则再次输入“:set nonu”即可。

    如果希望每次打开文件都默认显示行号,则可以编辑Vim的配置文件。每次使用Vim打开文件时,Vim都会到当前登录用户的宿主目录 (用户配置文件所在地)中读取.vimrc文件,此文件可以对Vim进行些默认配置设定。如果vimrc文件存在,就先读取其中对Vim的设置;否则就采取默认配置。

    在默认情况下,用户宿主目录中是没有此文件的,需要在当用户的宿主目录中手动创建,如“vim /.vimrc”,“”代表宿主目录,root的宿主目录为/root/,put用户的宿主目录存放在/home/目录下。可以直接使用Vim编辑生成此文件,并在此文件中添加一行“set nu”,保存退出,如下所示:

    [root@localhost ~]# vim .vimrc
    set nu
    

    之后此用户登录,每次使用vim打开文件时,都会默认显示行号。后面将要讲到的map、ab等vim命令也可以写入配置文件中,便于使用。常见的可以写入.vimrc文件中的设置参数如下表所示:

    参数 功能说明
    :set nu
    :set nonu 显示与取消行号
    :syntax on
    :syntax off 是否依据语法显示相关的颜色帮助,在 Vim 中修改相关的配置文件或Shell 脚本文件时(如前面示例的脚本/etc/init.d/sshd),默认会显示相应的颜色,用来帮助排错。如果觉得颜色产生了干扰,则可以取消此设置。
    :set hlsearch
    :set nohlsearch 设置是否将查找的字符串高亮显示。默认是 set hlsearch 高亮显示
    :set nobackup
    :set backup 是否自定保存备份文件,默认是nobackup不自动备份。如果设定了:set backup,则会产生“文件名~”作为备份文件。
    :set ruler
    :set noruler 设置是否显示右下角的状态栏(行号和进度等)。默认是 set ruler 显示
    :set showmode
    :set noshowmode 设置是否在左下角显示如“—INSERT–”之类的状态栏。默认是 set showmode 显示
    :set list
    :set nolist 设置是否显示隐藏字符(Tab 键用“^I”表示,回车符用“$”表示)。 默认是 nolist 显示。如果使用 set list 显示隐藏字符,类似“cat –A文件名”。
    :set all 查看vim设置参数

    设置参数实在太多了,这里只列举了常见的几个,可以使用“:set all”命令查看所有的设置参数。这些设置参数都可以写入.vimrc配置文件中,让它们永久生效;也可以直接在vim中执行,让它们临时生效。

    5.4.2 多窗口编辑

    在编辑文件时,有时需要参考另一个文件,如果在两个文件之间进行切换则比较麻烦。可以使用Vim同时打开两个文件,每个文件分别占用一个窗口。例如,在查看/etclpasswd时需要参考/etc/shadow,有两种办法可以实现:可以先使用Vim打开第一个文件,接着输入命令“:sp /etc/shadow” 水平切分窗口,然后按回车键,如果想垂直切分窗口则可以输入“vs /etc/shadow"。

    也可以直接执行命令,命令格式如下:

    [root@localhost ~]# vim -o 第一个文件名 第二个文件名
    [root@localhost ~]# vim -O 第一个文件名 第二个文件名
    #-o小      o 会上下分屏打开两个文件 
    #-O大      O 会左右分屏打开两个文件 
    

    这样可以同时打开两个文件,方便操作。如果是“-o小”上下打开两个文件,可以通过先按“ctrl+w”, 再按“上下箭头”的方式在两个文件之间切换。

    如果是“-O”左右打开两个文件,可以通过先按“ctrl+w”,再按“左右箭头”的方式在两个文件之间切换。

    如果想将一个文件的内容全部复制到另一个文件中,则可以输入命令“:r 被复制的文件名”,即可将导入文件的全部内容复制到挡圈光标所在行的下面。

    5.4.3 区域复制

    通过前面的操作,大家会发现,Vim 是以行为单位进行整体编辑的。但是有时候需要对一些特定格式的文件进行某个范围的编辑,就需要使用区域复制功能。

    举例来说,现在想将/etc/services文件(此文件记录了所有服务名与端口的对应关系)中的服务名都复制下来,就可以执行以下操作:先使用Vim打开/etc/services文件,再将光标移动到需要复制的第一行处,然后按下“Ctrl+V" 快捷键,这时底部状态栏出现“VISUAL BLOCK”,就可以使用上、下、左、右方向键进行区域的选取了;当全部选完后,按下“y”键,然后将光标移动到目标位置处,按下“p”键,即可完成区域复制。

    5.4.4 定义快捷键

    使用Vim编辑shell脚本,在进行调试时,需要进行多行的注释每次都要先切换到输入细说Linux基础知识模式,在行首输入注释符“#”,再退回命令模式,非常麻烦。连续行的注释其实可以用替换命令来完成。

    在指定范围行加“#”注释,可以使用“:起始行,终止行 s/^/#/g”,例如:

    :1,10 s/^/#/g
    

    表示在第1~10行行首加“#”注释。“^”意味行首。“g”表示执行替换时不询问确认。如果希望每行交互询问是否执行,则可将“g”改为“c”。

    取消连续行注释,则可以使用“:起始行,终止行 s/^#//g”,例如:

    :1,10 s/^#//g
    #意为将行首的“#”替换为空,即删除。
    

    当然,使用语言不同,注释符号或想替换的内容不同,都可以采用此方法,灵活运用即可。

    如果要在行首添加注释符为“//”,那就要稍微麻烦一些,“:起始行,终止行 s/^g”,因为“/”前面需要加转义字符“\”,所以写出来比较奇特,例如:

    :1,5s /^/\/\//g
    #表示在第1~5行行首加“”注释。
    

    以上方法可以解决连续行的注释问题,如果是非连续的多行就不灵了,这时我们可以定义快捷键简化操作。
    格式如下:

    :map 快捷键 快捷键执行的命令
    #自定义快捷键 
    

    如定义快捷键“Ctrl+P”为在行首添加“#”注释,可以执行“:map ^P I#”。其中“^P”为定义快捷键“Ctrl+P”。注意:必须同时按“Ctrl+V+P” 快捷键生成“^P”方可有效,或先按“Ctrl+V"再按“Ctrl+P” 也可以,直接输入“^P”是无效的。

    “I#”就是此快捷键要触发的动作,“I” 为在光标所在行行首插入,“#”为要输入的字符,“"表示退回命令模式。“”要逐个字符输入,不可直接按键盘上的Esc键。

    设置成功后,直接在任意需要注释的行上按“Ctrl+P”快捷键,就会自动在行首加上“#”注释。取消此快捷键定义,输入“:unmap ^P”即可。

    我们可以延伸下,如果想取消文件行首的快捷键,则可以设置":map ^B 0x",快捷键为“Ctrl+B”,“0”表示跳到行首,“x”表示删除光标所在处字符。

    再如,有时我们写完脚本等文件,需要在未尾注释中加入自己的邮箱,则可以直接定义每次按快捷键“Cu+E"实现插入邮箱,定义方法为“:map ^E asamlee@itxdl.net”。其中,“a”表示在当前字符后插入,“samle@itxdl.net”为插入的邮箱,"”表示插入后返回命令模式。

    所以,通过定义快捷键,我们可以把前面讲到的命令组合起来使用。

    将快捷键对应的命令保存在.vimre文件中,即可在每次使用Vim时自动调用,非常方便。

    5.4.5 在Vim中与Shell交互

    在Vim中,可以在编辑模式下用“!”命令来访问Linux的Shell以进行操作。命令格式如下:

    :! 命令
    

    直接在“!”后面跟所要执行的命令即可,这样可以在系统中直接春看会令的执行结果。例如,在编辑过程中向查看一下/etc/passwd文件的权限,则可以使用如下命令:

    :!ls -l /etc/passwd
    

    执行后,会在当前编辑文件中显示命令的执行结果,完毕后会提示用户按回车键返回编辑状态,如下图所示:

    在这里插入图片描述

    如果想把命令的执行结果导入编辑文件中,则还可以与导入命令“r”一起使用。如在编辑完文件后,在文件末尾加入当前时间,命令如下:

    :r !date
    

    5.4.6 文本格式转换

    unix2dos和dos2unix 命令可实现文本格式转换的功能。从命令名称即可得知,这两个文本操作命令是在UNIX与DOS文件格式之间进行数据转换的。在实际应用中,管理员经常会把Linux平台上的重要文档放到自己的Windows工作站上保存和查看,而这两种平台之间的文本在互相查看的时候可能会因为一些控制符号的存在而使屏幕显得很乱,甚至无法使用,这时就需要用到本小节介绍的这两个转换命令。

    注意:在默认安装时,dos2umix 和unix2dos命令是没有的,需要手工安装。先放入安装光盘,如果是VMware,则加载一下ISO安装镜像,然后挂载光盘。

    [root@localhost ~]# mount /dev/cdrom /mnt/cdrom
    rpm -ivh /mnt/cdrom/Packages/dos2unix-3.1-37.e16.1686.rpm
    rpm -ivh /mnt/cdrom/Packages/unix2dos-2.2-35.e16.1686.rpm
    

    不同版本的Liux,以上RPM包版本号可能有差别,但方法相同。

    在Windows 文件中,列的结束符有两个控制字符:一个是归为符(Carriage Return,^M),另一个是换行字符(New Line,J);但是在Linux文件中只是有一个换行字符“\n”(功能同J)。所以,当Linux中的文本文件放在windows上用文本编辑器编辑时,会乱成首尾相连的一行。

    Unix2dos命令的作用就是把Linux中的行位符号\n转换成windows中石油的MJ。命令格式如下:

    [root@localhost ~]# unix2dos 源文件名
    

    如下命令课更新ls.man.txt文件,在复制到windows中查看就正常了。

    [root@localhost ~]# unix2dos ls.man.txt
    

    可以想象,dos2unix命令的作用正好相反,即把windows文档中的行位符号MJ转换成^J。命令格式如下:

    [root@localhost ~]# dos2unix 文件名
    

    5.4.7 Vim的宏记录

    有时候需要对某些行进行相同的改动,如果逐一对每行进行修改则比较麻烦。Vim提供了非常优秀的宏记录功能,下面举例说明。

    现在有一个文件名列表,如下图a所示;假设这是我们所需的库文件列表,需要将其编辑成如下图b所示的格式。

    在这里插入图片描述
    在这里插入图片描述

    可以看到,如果行数比较多,那么一行一行的修改会比较麻烦。可以使用宏记录的方式来完成。步骤如下:
    1)在命令模式中将光标移动到liudehua.h行的行首,按下“qx”键,其中“q”代表宏记录,“x”代表给宏记录起的名字,可以是任意字符。这时候可以发现,在屏幕左下角会出现“recording”字样。

    2)将第一行设置成下面的样式。当修改完成后,按Esc键回到命令模式,在按下“q”键退出宏记录模式。

    3)当宏记录完成后,就可以执行它了。执行的方法是将光标移动到需要进行修改的行,然后执行“@宏名字”命令即可。如本例就可以将光标移动到第二行行首,然后执行“@x”命令,其他的行以此类推,最后得到如上b图中所示的效果。

    5.4.8 ab命令

    在 vim 编辑中,有时候需要频繁输入某一个长字符串,如输入电子邮箱、通信地址、联系电话……但是定义太多,难以记住,虽然vim中可以使用map定义快捷键,但是定义太多,难以记住,这时使用“ab”字符串替换命令,增加输入效率。命令格式如下:

    :ab替代符 原始信息
    #字符替换
    

    实例演示:

    :ab mymail shenchao@163.com
    :ab xdl http://www.itxdl.net
    

    执行之后,在任何地方输入“mymail”,在敲任意字母符号,或者回车,或者空格,马上就会变成对应的邮箱和网址,非常方便。

    注意:“替代符”不应设置的太短,否则有可能影响输入。 这样设置是临时生效;要永久生效,需要手工建立 vim 的配置文件“~/.vimrc”,,把你需要的参数写入配置文件中。

    5.5 异常问题

    问题1:

    我们在使用vim编辑文件(abc)的时候,如果没有保存而意外关机或重启,当我们再次打开这个文件(abc)的时候会出现报错,如下:

    E325: 注意
    发现交换文件 ".abc.swp"
                所有者: root    日期: Tue Jun 25 08:09:00 2019
                文件名: ~root/abc
                修改过: 是
                用户名: root      主机名: localhost.localdomain
               进程 ID: 25002
    正在打开文件 "abc"
                  日期: Tue Jun 25 07:29:13 2019
    (1) Another program may be editing the same file.  If this is the case,
        be careful not to end up with two different instances of the same
        file when making changes.  Quit, or continue with caution.
    (2) An edit session for this file crashed.
        如果是这样,请用 ":recover""vim -r abc"
        恢复修改的内容 (请见 ":help recovery")。
        如果你已经进行了恢复,请删除交换文件 ".abc.swp"
        以避免再看到此消息。
    交换文件 ".abc.swp" 已存在!
    以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 删除交换文件((D)), 退出((Q)), 中止((A)):
    

    那么在这个时候我们可以直接回车或者按E键继续进行文件的编辑,但是当我们保存退出后,再次打开还是会出现上面的错误。这个时候我们可以将编辑文件(abc)同一目录下的.abc.swp文件删除,在尝试打开即可正常。

    展开全文
  • 了解vim编辑器

    千次阅读 2017-08-16 20:20:26
    它们都是多模式编辑器,不同是vim是vi升级版本。vim不仅兼容了所有vi命令,而且还有一些新特性在里面。三、vi基本模式 vi基本上共分为三种模式,分别是一般模式、插入模式和命令行模式。 (1)一般模式...

    一、为何要学vim?
    因为很多Linux命令默认使用vi作为数据编辑的窗口,并且其编辑速度快,能主动辨别语法的正确性,方便程序设计。

    二、vi/vim的区别
    它们都是多模式编辑器,不同的是vim是vi的升级版本。vim不仅兼容了所有vi的命令,而且还有一些新的特性在里面。

    三、vi的基本模式
    vi基本上共分为三种模式,分别是一般模式、插入模式和命令行模式。
    (1)一般模式:
    以vi打开一个文件将直接进入一般模式(默认)。在这个模式中,可以左右上下移动光标,也可以删除字符或者删除整行,还可以粘贴、复制文件数据。
    (2)编辑模式:
    在一般模式下可以进行粘贴、复制和删除操作,但是不能编辑文件内容。想要编辑文件内容,需进入编辑模式,即按“i、I、o、O、a、A、r、R”等任意字母。退出则按【ESC】回到一般模式。
    (3)命令行模式:
    在一般模式下,想要进入命令行模式,需要输入“:、/、?”中的任意按钮,光标将移动到最下面那一行。在这个模式中,可以对数据进行查找、读取、大量替换字符、显示行号、保存和离开vi等操作。
    三种模式的关系如下图所示:
    这里写图片描述
    注意:一般模式与编辑模式和命令行模式可互相转换,但是编辑模式和命令行模式之间不能进行模式转换。

    四、按键说明
    1、一般模式:
    (1)使用vi进入一般模式
    【例】
    这里写图片描述
    (2)一般模式下的按键说明
    1)h/向左箭头键:向左。
    2)j/向下箭头键:向下。
    3)k/向上箭头键:向上。
    4)l/向右箭头键:向右。
    注:如果想要进行多次移动,可以使用组合键。如:向下移动6行,可以用“6j”或“6+向下键”。
    5)[Ctrl]+[f]:屏幕向下移动一页([Page Down])。
    6)[Ctrl]+[b]:屏幕向上移动一页([Page Up])。
    7)0/功能键[Home]:(数字零)移动到这一行的最前面字符处。
    8)$/功能键[End]:移动到这一行的最后面的字符处。

    9)G:移动到文件的最后一行。
    10)nG:n为数字。移动到这个文件的第n行。
    11)gg:移动到文件的第一行(1G)。
    12)N+[Enter]:n为数字。光标向下移动n行。
    13)/word:向下查找字符串“word”。“word”表任意字符串。
    14)?Word:向上查找字符串“word”。“word”表任意字符串。
    15):n1,n2s/word1/word2/g:n1和n2为数字。表在第n1与n2行之间寻找word1这个字符串,并用word2替代word1。
    16):1,$s/word1/word2/g:从第一行到最后一行查找word1字符串,并将该字符串替换为word2。

    17):1,$s/word1/word2/gc:从第一行到最后一行查找word1字符串,并将该字符串替换为word2,但是在替换之前向用户提示是否替换。
    18)X,x:x为向后删除一个字符(Del按键),X为向前删除一个字符。
    19)nx:连续向后删除n个字符。
    20)dd:删除光标所在的一整行。
    21)ndd:向下删除n行。
    22)yy:复制光标所在的那一行。
    23)nyy:向下复制n行。
    24)P,p:P在光标的上一行复制;p在光标的下一行复制。
    25)u:后退,复原前一个操作
    26)[Ctrl]+r:重做上一个操作。
    27)“.”:重复前一个操作。

    2、编辑模式
    在一般模式之中,按下i、o、a就可进入编辑模式,按[ESC]键就退回一般模式。
    从一般模式切换到编辑模式的按键说明:
    1)i/I:进入插入模式。I在目前所在行的第一个非空格符处开始插入;i从目前光标所在处插入。
    2)A/a:进入插入模式。A在目前所在行的最后一个字符处开始插入;a从目前光标所在的下一个字符处插入。
    3)O/o:进入插入模式。O表在光标所在行的上一行插入新的一行;o表在光标所在行的下一行插入新的一行。
    4)R/r:进入替换模式。R会一直替换光标所在的文字,直到按下[ESC]键为止;o只替换光标所在的那一个字符一次。

    3、命令行模式
    在一般模式下,按下“:、?、/”等任意字符,就可进入到命令行模式。
    一般模式切换到命令行模式的可用的按钮说明:
    1):w :将编辑的数据写入硬盘文件中。
    2):q :离开vi。
    3):wq :保存后离开。若为“:wq!”表强制保存后离开。

    展开全文
  • 打开命令提示符(快捷键:win+R,输入:cmd),在命令行窗口输入:python ,若安装成功,则会有相应版本信息出现。 python交互环境下为三个‘>>>’,区别于windows命令行两个:‘>>’ 选择代码...

    测试安装环境

    打开命令提示符(快捷键:win+R,输入:cmd),在命令行窗口输入:python ,若安装成功,则会有相应版本信息出现。

    在这里插入图片描述

    python交互环境下为三个‘>>>’,区别于windows命令行两个:‘>>’

    选择代码编辑器


    我是用的是pycharm 2018版本,以下是2017和2018版本永久激活教程

    转:Pycharm2018.3.3/ 2018.2.4 / 2017版本永久激活

    在这里插入图片描述
    dangdangdang dang !前期准备工作就完成了吧??
    去年装好之后一直没有使用,所以现在想用装起来比较容易。。记录一下 开始学习Python的第一天

    展开全文
  • 打开python 2.7之后有三个命令窗口:IDLE(python GUI),python(comand line),Module Docs。Module Docs是一个搜索框,可搜索python中不了解函数。 比较IDLE与命令行: ...更像一个编辑器。 python(comand

    用了几天命令行,才知道IDLE这个东西。

    打开python 2.7之后有三个命令窗口:IDLE(python GUI),python(comand line),Module Docs

    Module Docs是一个搜索框,可搜索python中不了解的函数。


    比较IDLE与命令行:都是交互模式

    IDLE(python GUI):

    白色窗口。有代码高亮、自动缩进、代码提示和菜单栏;

    可以新建python文件,可复制粘贴代码、但不会返回结果;

    不能用向上箭头重复上一条命令,不能选择删除。

    python(comand line):

    黑色窗口,只有执行后才会报错提示。

    没有菜单栏,只能一行一行键入命令,粘贴一段代码会拆解为一条一条的命令执行

    粘贴不了for后面的tab和空格,会报错。

    向上箭头再现上一条命令,速度更快一些,可选中当前编辑行代码直接删除。

    双击运行文件:要想摆脱脚本模式,直接编写代码运行,则先将python安装位置加入环境变量path中。随后可以双击打开.py文件。解决闪退的方法:根据版本在.py文件末尾行加raw_input()或input().

    命令行运行.py文件的两种方法:

    cmd:切换到文件所在路径,执行:python myName.py

    python.exe:

    import os

    os.chdir('当前路径')//切换到当前路径

    os.getcwd()//获取当前路径

    运行:execfile('myName.py')

    或者直接:execfile(整个路径名+文件名)

    如果用import myName.py,则只能在第一次导入时返回执行结果,再次导入会报错。


    展开全文
  • 前端技术

    2020-03-08 19:25:41
    ES5ES6区别 promise优化ajax constlet代替var 函数参数默认值 node8以下版本支持绝大多数es6语法,但是importexport不识别,需要安装插件 ...4.命令行窗口命令 vcode前台代码编辑器 数组复制 ...
  • 2021-04-24

    2021-04-24 17:54:48
    Vim支持多个窗口和缓冲、语法高亮显示、命令行编辑、联机帮助等功能。 2. 进入和退出Vim # vim 文件名(filename) 进入Vim 如果输入文件名存在(当前工作目录),则显示该文件内容,并在最后一行显示该...
  •  SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过SQL语句。该SQL编辑器...
  • 27. regedt32-------注册表编辑器 28. Msconfig.exe---系统配置实用程序 29. rsop.msc-------组策略结果集 30. mem.exe--------显示内存使用情况 31. regedit.exe----注册表 32. winchat--------XP自带局域网...
  • 1.3.2 命令行窗口 1.3.3 工作区 1.4 MATLAB R2014a 通用命令 1.5 MATLAB R2014a 文件管理 1.5.1 当前文件夹浏览器路径管理 1.5.2 搜索路径及其设置 1.6 MATLAB R2014a 帮助系统 1.6.1 纯文本...
  • PLSQL Developer 8.0.3.1510 简体中文绿色破解版

    万次下载 热门讨论 2010-07-15 16:36:07
     SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过SQL语句。该SQL编辑器...
  • 4.3.3SendMessrdgePostMessage函数的区别 第5章 使用资源 5.1菜单加速键 5.1.1菜单加速键的组成 5.1.2菜单加速键的资源定义 5.1.3使用菜单加速键 5.2图标光标 5.2.1图标光标的资源定义 5.2.2使用图标...
  • 4.3.3SendMessrdgePostMessage函数的区别 第5章 使用资源 5.1菜单加速键 5.1.1菜单加速键的组成 5.1.2菜单加速键的资源定义 5.1.3使用菜单加速键 5.2图标光标 5.2.1图标光标的资源定义 5.2.2使用图标...
  • 4.3.3SendMessrdgePostMessage函数的区别 第5章 使用资源 5.1菜单加速键 5.1.1菜单加速键的组成 5.1.2菜单加速键的资源定义 5.1.3使用菜单加速键 5.2图标光标 5.2.1图标光标的资源定义 5.2.2使用图标...
  • 4.3.3SendMessrdgePostMessage函数的区别 第5章 使用资源 5.1菜单加速键 5.1.1菜单加速键的组成 5.1.2菜单加速键的资源定义 5.1.3使用菜单加速键 5.2图标光标 5.2.1图标光标的资源定义 5.2.2使用图标...
  • WINRAR5.0正式注册版

    2013-10-10 10:14:03
    的恢复记录,如 1 - 2%, 或较少的随机损坏类型时 4.x 5.0 的区别较少。对于单一 连续损坏,4.x 5.0 的效率是相同的。 此外,通常的数据抹除,新的恢复记录比之前的 RAR 版本可以检测删除插入更大的大 小...
  • 184 理解#include#include file.h的区别 185 在头文件中使用卫式定义 186 在大的工程中使用通用头文件 187 把头文件添加到makefile的关联列表中 188 理解当头文件改变时发生什么 第十七章 条件编译 189 理解#if...
  • 184 理解#include#include file.h的区别 185 在头文件中使用卫式定义 186 在大的工程中使用通用头文件 187 把头文件添加到makefile的关联列表中 188 理解当头文件改变时发生什么 第十七章 条件编译 189 理解#if...
  • 184 理解#include#include file.h的区别 185 在头文件中使用卫式定义 186 在大的工程中使用通用头文件 187 把头文件添加到makefile的关联列表中 188 理解当头文件改变时发生什么 第十七章 条件编译 189 理解#if...
  • 184 理解#include#include file.h的区别 185 在头文件中使用卫式定义 186 在大的工程中使用通用头文件 187 把头文件添加到makefile的关联列表中 188 理解当头文件改变时发生什么 第十七章 条件编译 189 理解#if...
  • 4.3.3 SendMessagePostMessage函数的区别 118 第5章 使用资源 119 5.1菜单加速键 119 5.1.1 菜单加速键的组成 119 5.1.2 菜单加速键的资源定义 120 5.1.3 使用菜单加速键 125 5.2图标光标 138 5.2.1 ...
  • 4.3.3 SendMessagePostMessage函数的区别 118 第5章 使用资源 119 5.1菜单加速键 119 5.1.1 菜单加速键的组成 119 5.1.2 菜单加速键的资源定义 120 5.1.3 使用菜单加速键 125 5.2图标光标 138 5.2.1 ...
  • 4.3.3 sendmessagepostmessage函数的区别 118 第5章 使用资源 119 5.1 菜单加速键 119 5.1.1 菜单加速键的组成 119 5.1.2 菜单加速键的资源定义 120 5.1.3 使用菜单加速键 125 5.2 图标光标 138 ...
  • 4.3.3 SendMessagePostMessage函数的区别 118 第5章 使用资源 119 5.1 菜单加速键 119 5.1.1 菜单加速键的组成 119 5.1.2 菜单加速键的资源定义 120 5.1.3 使用菜单加速键 125 5.2 图标光标 138 5.2.1 ...
  • 4.3.3 SendMessagePostMessage函数的区别 118 第5章 使用资源 119 5.1 菜单加速键 119 5.1.1 菜单加速键的组成 119 5.1.2 菜单加速键的资源定义 120 5.1.3 使用菜单加速键 125 5.2 图标光标 138 5.2.1 ...
  • 4.3.3 SendMessagePostMessage函数的区别 118 第5章 使用资源 119 5.1 菜单加速键 119 5.1.1 菜单加速键的组成 119 5.1.2 菜单加速键的资源定义 120 5.1.3 使用菜单加速键 125 5.2 图标光标 138 5.2.1 ...
  • weditor 类似于uiautomatorviewer,专门为本项目开发辅助编辑器 Installation Connect to a device Command line Global settings Debug HTTP requests Implicit wait App management Install an app Launch ...
  • PL/SQL Developer v8.0.zip

    2019-07-17 17:29:59
    SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过SQL语句。该SQL编辑器...

空空如也

空空如也

1 2 3 4
收藏数 80
精华内容 32
关键字:

命令行窗口和编辑器的区别