zoukankan      html  css  js  c++  java
  • Linux文本编辑器

      Linux系统下有许多文本编辑器,按编辑区域可分为行编辑器和全屏幕编辑器,例如行编辑器有ed,全屏幕编辑器有vi。按运行环境可分为命令行控制台文本编辑器和X Window图形界面编辑器。例如vi属于命令行控制台编辑器,gedit则属于图形界面编辑器。

    一、Linux文本编辑器概述

    1、ed

      在早期的unix平台上,ed可以说是唯一的编辑工具。它是一个很古老的行编辑器,vi这些编辑器都是ed演化而来。行编辑器使用起来很不方便,每次只能对一行进行操作。

    2、vi 和 vim 

      vi是在UNIX平台上历史悠久的编辑器,是“visual interface"的缩写,vi是UNIX平台上可视化编辑器(或者说基于屏幕的编辑器)的代表,。

      vim意为vi IMproved,增强版vi。vim和vi相比,增加了更多特性,如彩色和高亮显示,可以使我们的编辑工具更轻松。通过设置vim会自动检测文件中内容的类型,并以不同的颜色进行高亮显示,如注释变成蓝色,关键字变成褐色,而字符串变成红色等,与vi传统的黑白显示模式相比,vim更易读易用。另一个有趣的功能是vim支持从右到左输入字符,这在使用一些特殊语言(如Farsi)进行编程时是比较有用的。

    在这里分享几个vim学习链接:

      linux操作系统vim的安装与配置:https://jingyan.baidu.com/article/046a7b3efd165bf9c27fa915.html

      Vim学习指南 :http://www.linuxidc.com/Linux/2013-08/89096.htm

      强大的Vim 编辑器 http://www.linuxidc.com/Linux/2013-07/87544.htm 

      在CentOS 6.2上搭建Vim开发环境 http://www.linuxidc.com/Linux/2013-07/87363.htm

      CentOS 5.4 安装高亮Vim编辑工具 http://www.linuxidc.com/Linux/2013-06/86508.htm

      Vim技巧分享:C语言设置 http://www.linuxidc.com/Linux/2012-12/77124.htm

           Ubuntu中设置Vim的行号 http://www.linuxidc.com/Linux/2012-12/75485.htm

      Vim编辑器使用基础教程 http://www.linuxidc.com/Linux/2013-05/84031.htm

      

    3、emacs

      emacs编辑器是自由软件基金会发行的软件产品,在Linux系统中比较流行。emacs的含义是宏编辑程序(editor macros),最开始是由Richard Stallman 编写的,其设计功能远不只是一个编辑工具,他的初衷是将emacs设计成一个Linux的shell,同时还希望增加一些现代操作系统应支持的用户环境,比如:mail的传递,web浏览器的查询,新闻(Usenet)阅读,日志功能等。另外,emacs中还包括了Lisp语言的解释执行功能。emacs功能很强大,使用它基本可以解决操作系统交互中的所有问题。当然emacs的强大功能带来的另一个问题是它占用的磁盘空间比较大。

    4、gedit

      gedit包含语法高亮和标签编辑多个文件的功能,对中文支持很好,支持包括GB2312、GBK在内的多种字符编码。利用GNOME VFS库,它还可以编辑远程文件。它支持完整的恢复和重做系统以及查找和替换功能。它还支持包括多语言拼写检查和一个灵活的插件系统,可以动态的添加新特性。例如snippets和外部程序的整合。另外,gedit还包括一些小特性,包括行号显示,括号匹配。文本自动换行等。

    二、vi编辑器使用介绍

    1、vi的工作模式

    vi的工作模式分为如下三种:

      命令模式:进入vi的默认模式,可以对文件进行复制、粘贴。删除、移动光标等。

      末行模式:用于文件的保存、退出、查找、替换、设置行号等。

      编辑模式:在此模式下可以输入字符。

    vi编辑器的使用主要是根据操作需要在各种模式下切换,切换方法如图所示:

     

    vi的常用命令:

    1、文件打开、保存与关闭

      vi filename:打开或新建文件,并将光标置于第一行首。

      vi +n filename:打开文件,并将光标置于第n行首。

      vi + filename:打开文件,并将光标置于最后一行首。

      vi +/pattern filename:打开文件,并将文件置于第一个与pattern匹配的串处。

      vi -r filename:在上次正用vi编辑器时发生系统崩溃,恢复filename。

      vi filename...filename:打开多个文件,依次进行编辑。可在末行模式下采用e filename命令切换所编辑的文件。

    保存文件和退出vi可以在命令模式输入下列指令完成。

      :w  //保存文件

      :w filename  //保存至filename文件

      :q  //退出编辑器,如果文件已修改请使用下面命令。

      :q!  //退出编辑器且不保存。

      :wq  //退出编辑器,且保存文件

      :x  //退出编辑器,且保存文件

    保存和退出需要在末行模式下完成,因此以上输入冒号是表示vi从命令模式切换至末行模式,冒号后面的命令则表示完成的操作。感叹号表示强制执行。  

    2、插入文本或行

    在命令模式下,按以下命令,则进入插入模式,插入模式可输入文本,按esc键可返回命令模式。

      a:在当前光标位置的右边添加文本。

      i:在当前光标位置的左边添加文本。

      A:在当前行的末尾添加文本。

      I:在当前行的开始处添加文本。

      O:在当前行的上面新建一行。

      o:在当前行的下面新建一行。

      s:删除光标后的一个字符,然后进入插入模式。

      S:删除光标所在的行,然后进入插入模式。

      R:替换(覆盖)当前光标位置及后面的若干文本。

    3、移动光标

    (1)基本的移动方式

      在命令模式下,vi可以直接用键盘上的方向键来上下左右移动光标,也可以用小写英文字母k、j、h、l,分别控制光标上下左右移一格。在插入模式下,可以用方向键控制光标移动。

    (2)同一行中光标移动方式

      数字0:移动到当前行行首。

      $:移动到光标所在行的行尾。

      ^:移动到光标所在行的行首。

      w:光标移动到下个字的开头。

      b:移动到当前字的字首,如果已经处于字首的,则光标回到上个字的开头。

      e:移动到当前字的字尾,如果已经处于字尾的,则光标跳到下个字的字尾。

      <n>w:右移n个字。

      <n>b:左移n个字。

    (3)在页面间移动光标

      Ctrl + b:向上翻一页(相当于PageUp键)。

      Ctrl + f: 向下翻一页(相当于PageDown键)。

      Ctrl + u:向前翻半页。

      Ctrl + d:向后翻半页。

      H:将光标移到当前屏幕的最上行的行首。H表示Highest。

      xH:将光标移到当前屏幕的第x行。例如:2H就是将光标移到当前屏幕的第二行。注意当前屏幕的第二行并不一定是本文件的第二行。

      G:移动到文章最后。

      ):由游标所在位置至下一个句子的第一个字母。

      (:由游标所在位置至该句子的第一个字母。

      {:由游标所在位置至该段落的最后一个字母。

      }:由游标所在位置至该段落的第一个字母。

    (4)删除、恢复字符或行

    在命令模式下,可以使用下列命令进行删除或撤销操作。

      x:删除当前字符。

      nx:删除从光标开始的n个字符。

      dd:删除当前行。

      ndd:向下删除当前行在内的n行。

      u:撤销上一步操作。

      U:撤销对当前行的所有操作。

    (5)搜索

      /<pattern>:向光标以下搜索pattern字符串。

      ?<pattern>:向光标以上搜索pattern字符串。

      n:向下搜索前一个搜索前一个搜索动作。

      N:向上搜索前一个搜索动作。

    以上命令在命令模式下使用。

    (6)设置行号

      :set nu  //显示行号

      :set nonu  //取消显示行号

    (7)跳至指定行

      n+:向下跳n行。

      n-:向上跳n行。

      nG:跳到行号为n的行。

    以上命令在命令模式下使用,另外,用户也可以在末行模式下跳转到制定行,例如:n,其中n为行号。

    (8)复制粘贴

    在命令模式下输入下列命令:

      yy:将当前行复制到缓存区,也可以用ayy复制,其中a为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。

      nyy:将当前行向下n行复制到缓冲区,也可以用anyy复制,a为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。

      yw:复制从光标开始到字尾的字符。

      nyw:复制从光标开始n个字。

      y^:复制从光标到行首的内容。

      y$:复制从光标到行尾的内容。

      p:粘贴剪贴板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用ap进行粘贴。

      P:粘贴剪贴板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用aP进行粘贴。

    (9)替换操作

    在末行模式下,输入下列命令:

      :s/old/new  //用new替换行中首次出现的old

      :s/old/new/g  //用new替换行中所有old

      :n,m s/old/new/g  //用new替换从n到n行里所有的old 

      :%s/old/new/g  //用new替换当前文件里所有old

    vi与shell交互

    在vi中,我们可以在末行模式下用"!"符号来访问Linux的shell,进行操作。格式如下:

    : ! 命令

    直接在!后面接着所要执行的命令即可。

  • 相关阅读:
    Struts2之Domain Model(域模型)。
    struts2接收参数的5种方法
    java泛型中特殊符号的含义
    @value取值
    Spring分页实现PageImpl<T>类
    eclipse快捷键整理
    String字符串的截取
    Java调用ASP.NET的webservice故障排除
    根据wsdl文件用soapUi快速创建webService服务(有图有真相)
    @Autowired标签与 @Resource标签 的区别
  • 原文地址:https://www.cnblogs.com/RanWhoo/p/9927537.html
Copyright © 2011-2022 走看看