zoukankan      html  css  js  c++  java
  • Linux编辑器Vim简介

    在前面的几章中,我们为大家介绍了如何搭建Linux学习环境,以及Linux系统的一些常用命令。之前有给大家提到过,在Linux或者UNIX系统在服务器端应用的时候,往往是没有使用图形界面的,而是使用命令行的操作方式,那么我们如何在命令行里面编写一些脚本文件或者修改一些配置文件呢?从这节开始,为大家介绍Linux系统中广泛使用的文本编辑器Vim。

    Vim简介

    所有的类 Unix 系统都会内置 vi 编辑器,其他的文本编辑器则不一定会存在,但是目前我们使用比较多的是 vim 编辑器。

    Vim编辑器在最早期其实就是Vi,Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
    只是后来推出了一个新的增强版叫Vim。不过很多人在实际使用的时候,还是习惯使用Vi命令,因此在很多Linux版本中,系统对Vim做了一个别名还是叫Vi。Vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件,Linux/UNIX系统都会默认安装这个编辑器。

    image
    (图片来源于网络)

    Vim/Vi 没有菜单,只有命令

    vim常用的使用场景
    1、编辑一些文件,主要是配置文件
    2、编辑一些shell脚本文件

    Vim/Vi 工作模式

    Vim/Vi有三种工作模式,它们分别是命令模式插入模式编辑模式,编辑模式也称为底线命令模式,这三种工作模式我们可以随意切换,如下图:

    image

    1、命令模式

    命令模式是vim打开文件后默认进入的模式,这个模式不能插入字符,但是可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

    在命令模式下键盘输入作会被Vim识别为命令,而非字符输入。比如我们在命令模式下按下i,i被当作了一个命令,而不是作为字符i输入。
    以下是常用的几个命令:

    • i 切换到输入模式,以输入字符。
    • x 删除当前光标所在处的字符。
    • : 切换到编辑模式模式,以在最底一行输入命令。
      若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
    2、插入模式

    在命令模式状态下输入 i、I、a、A、o、O 等插入命令可以进入插入模式,在该模式下可以对文件执行写操作,类似于在 Windows 系统的文档中输入内容,当编辑文件完成后按 Esc 键即可返回命令模式。各指令功能如下:

    • i 在光标所在位置插入字符
    • I 在光标所在行的行首插入字符
    • o 在光标所在行的下一行新行插入字符
    • O 在光标所在行的上以行新行插入
    • s 删除光标所在字符并插入字符
    • S 删除光标所在行并插入字符
    • a 光标所在字符的下一个字符插入
    • A 光标所在行的行尾插入字符

    比如,我在命令模式输入 i 进入插入模式,在命令行左下角会有 --INSERT--状态的提示,如下图:

    image

    3、编辑模式

    从命令模式切换到编辑模式的方法是在命令模式状态下按 : 键,此时窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。

    • :q 当vim进入文件没有对文件内容做任何操作可以按"q"退出

    • :q! 当vim进入文件对文件内容有操作但不想保存退出

    • :wq 正常保存退出

    • :wq! 强行保存退出,只针对与root用户或文件所有人生效

    当然还有其他指令,比如要显示文本的行数:

    $ :set num

    image

    vim使用注意事项

    • 当文件名称存在,那么进入文件直接编辑
    • 当文件名称不存在,vim会在退出保存时自动建立文件
    • 当vim命令后没有跟任何文件名称时,是无法实现:wq退出保存的那么可以用
      “:wq+空格+文件名”。
    • 当vim异常退出时,系统会建立.file.swp这个缓存文件,这个文件中保存着没有执行:wq动作保存的信息。

    下一篇我们将进入vim的详细使用介绍。

    image

  • 相关阅读:
    JavaScript cookie详解
    Javascript数组的排序:sort()方法和reverse()方法
    javascript中write( ) 和 writeln( )的区别
    div做表格
    JS 盒模型 scrollLeft, scrollWidth, clientWidth, offsetWidth 详解
    Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.
    orm查询存在价格为空问题
    利用救援模式破解系统密码
    SSH服务拒绝了密码
    C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
  • 原文地址:https://www.cnblogs.com/jiupai-Linux/p/13454441.html
Copyright © 2011-2022 走看看