DomBro Studio

vim编辑器

2017/12/11

Linux vim编辑器

没接触Linux之前就经常听到 vi、vim 这两个词,后来简单接触过vi编辑器,今天就来一探究竟。

目录

1. what? 什么是vim编辑器

Linux 中所有内容都是以文件形式存在的,所以作为系统管理员(root)重要工作就是修改某些软件的配置文件(MySql、tomcat、MongoDB等都需要配置启动),所以就必须要学会使用一种以上的命令行界面的文本编辑器。Linux发行版本众多,但所有发行版本都会有的一款文本编辑器就是vi编辑器。而 vim编辑器 就是 vi编辑器的升级版,支持语法高亮,还可以拿来编程,优点一大堆。

2. why? 为啥要学vim编辑器

这原因嘛,主要有四点

  1. 所有类 UNIX 系统都会内置 vi编辑器。
  2. 很多软件的编辑接口会主动调用vi编辑器,这是最重要的一点原因,太多命令默认使用vi作为数据的编辑接口,所以一定要学会 vi 呀。
  3. vim 具有编程能力,可以根据字体颜色辨别语法的正确性,快来试试吧~
  4. 编辑速度相当快。

对vim编辑器(以下简称 vim) 是不是有好感了? 其实 vim 的官方给vim的定位是程序开发工具,而不是文字处理软件,vim加入了很多功能如支持正则表达式的查找框架,多文件编辑等等等….总之 vim 用了都说好,你值的拥有。

3. how? 怎么使用vim编辑器

基本上 vi 分为三种模式:一般模式、编辑模式、命令行模式。下面会给出三种模式的按钮说明,不用全记(你有精力我也不拦你),记住每种模式常用按钮操作就可以啦!

  • 一般模式

在一般模式下可以进行光标移动、复制粘贴、查找替换等操作

  • 一般模式切换到编辑模式可用按钮

  • 一般模式切换到命令行模式可用按钮

4. do? vim编辑器可以做什么

  • 块选择(Visual Block)

上述的简单vi操作,几乎都是以航为单位操作。下面介绍对一块范围的操作。

  • 多文件编辑

这是一个很爽的操作,你可以通过键盘复制一个文件的内容到另一个文件

1
vim file1 file2

这样 vim 就会编辑两个文件了,图片是操作:

  • 多窗口的功能

vim 另一个强大的功能就是”切割窗口”,将一个或多个文件切割成多个窗口,在命令行模式通过

1
2
:sp{file}
file 可有可无,如果有则在该窗口中启动另一个文件,没有则是同一文件的两个窗口间

  • vim 环境设置与记录:~/.vimrc,~/.viminfo

有没有发现,如果我们以vim软件来查找一个文件内部的某个字符串时,这个字符串会被反白,而下次我们再次以vim编辑这个文件时,该查找的字符串反白情况还是存在呢。甚至于在编辑其他文件时,如果其他文件内也存在这个字符串,竟然还是主动反白。另外,当我们重复编辑同一个文件时,当第二次进入该文件时,光标竟然就在上次离开的那一行上面。
这是因为我们的vim会主动将你曾经做过的行为记录下来,好让你下次可以轻松作业。那个记录操作的文件就是:~/.viminfo。如果你曾经使用过vim,那你的主文件夹应该会存在这个文件才对。这个文件是自动产生的,你不必自行创建。而你在vim里头所做过的操作就可以在这个文件内部查询到。
此外,每个distributions对vim的默认环境都不太相同,举例来说,某些版本在查找到关键字时并不会高亮度反白,有些版本则会主动帮你进行缩排的行为。但这些其实都可以自行设置的,那就是vim 的环境设置。vim 的环境设置参数有很多,如果你想要知道目前的设置值,可以在一般模式时输入“:set all”来查阅,不过设置选项实在太多了,在这里仅列出一些平时比较常用的一些简单的设置值,提供给你参考。
所谓的缩排,就是当您按下[Enter]编辑新的一行时,光标不会在行首,而是在与上一行的第一个非空格符处对齐。

整体vim的设置值一般是放置在/etc/vimrc这个文件中,不过,不建议你修改它。你可以修改~/.vimrc这个文件(默认不存在,请你自行手动创建),将你所希望的设置值写入。
举例来说,可以是这样的一个文件:

1
2
3
4
5
6
7
8
9
10
11
12
[root@www ~]# vim ~/.vimrc
"这个文件的双引号(") 是批注
set hlsearch "高亮度反白
set backspace=2 "可随时用退格键删除
set autoindent "自动缩排
set ruler "可显示最后一行的状态
set showmode "左下角那一行的状态
set nu "可以在每一行的最前面显示行号
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示
在这个文件中,使用“set hlsearch”或“ :set hlsearch”,即最前面有没有冒号“:”效果都是一样的。至于双引号则是批注符号,不要用错批注符号,否则每次使用vim时都会发生警告信息。
创建好这个文件后,当你下次重新以vim编辑某个文件时,该文件的默认环境设置就是这么设置的。这样是否很方便你的操作?所以多利用vim的环境设置功能吧!

5. more! 更多操作

这一小节下面,介绍两个常见的文件编辑问题,不定义与 vim 有关

5.1 Windows 与 Linux 换行字符

熟悉 Windows 和 Linux 文本编辑的同学可能知道,这两种系统的换行方式是不一样的,Windows 是以 “\r\n”(^M$) 换行(即CRLF这两个符号),而 Linux 是以 “\n”($) 换行(即LF这个符号)。两种系统不同的换行符,造成的影响很大! 比如将 Windos 下面的文件放到 Linux 下面时,你会发现每行都会多出来一个 “^M” ,如果这是一个在 Windows 下面编写的脚本文件,可能会造成程序无法执行的尴尬事件! 如何解决?当然是将文件换行变为 Linux 可读的样子(LF)就好了呀。你会不会想到用 vim 将每行多出来的 “^M” 删掉?这也太没人性了,Linux 提供了简单的命令来进行格式转换

1
2
3
4
5
[root@www ~]# dos2UNIX [-kn] file [newfile]
[root@www ~]# UNIX2dos [-kn] file [newfile]
参数:
-k :保留该文件原本的 mtime 时间格式(不更新文件上次内容经过修订的时间)
-n :保留原本的旧文件,将转换后的内容输出到新文件,如: dos2UNIX -n oldfile newfile

在不同系统之间复制一些纯文本文件时,千万记得要使用UNIX2doc或doc2UNIX来转换一下换行格式。

5.2 编码的转换

还有一个很大的问题就是编码的转换,想要将big5编码转成utf8,怎么办?答案是使用 iconv 这个命令。

1
2
3
4
5
6
7
[root@www ~]# iconv --list
[root@www ~]# iconv -f 原本编码 -t 新编码 filename [-o newfile]
参数:
--list :列出 iconv 支持的语系数据
-f :from ,后接原本的编码格式;
-t :to ,即后来的新编码要是什么格式;
-o file:如果要保留原本的文件,那么使用 -o 新文件名,可以建立新编码文件。

当你输入命令 iconv –list ,会列出一大堆信息,那就是 iconv 支持的编码。

  • 举个例子
1
2
3
4
5
6
7
将 /tmp/vitest/vi.big5 转成 utf8 编码。
[root@www ~]# cd /tmp/vitest
[root@www vitest]# iconv -f big5 -t utf8 vi.big5 -o vi.utf8
[root@www vitest]# file vi*
vi.big5: ISO-8859 text, with CRLF line terminators
vi.utf8: UTF-8 Unicode text, with CRLF line terminators
你会发现有明显的不同

说明

整理笔记参考了 《鸟哥的Linux私房菜》 一书。这本书我是买的京东阅读的正版电子书籍。

如果不想买书看的话可以直接戳这里进入鸟哥Linux私房菜的线上博客 : http://linux.vbird.org/。请大家支持正版!!

至于笔记中的命令我是都敲过一遍的并进行了理解,并不是单纯的复制粘贴呦!

CATALOG
  1. 1. Linux vim编辑器
    1. 1.1. 目录
    2. 1.2. 1. what? 什么是vim编辑器
    3. 1.3. 2. why? 为啥要学vim编辑器
    4. 1.4. 3. how? 怎么使用vim编辑器
    5. 1.5. 4. do? vim编辑器可以做什么
    6. 1.6. 5. more! 更多操作
      1. 1.6.1. 5.1 Windows 与 Linux 换行字符
      2. 1.6.2. 5.2 编码的转换
      3. 1.6.3. 说明