vi、vim

在Linux中使用文本编辑器来编辑你的Linux参数配置文件是一件很重要的事情,因此系统管理员至少应该熟悉一种文本编辑器。

在Linux世界里,绝大部分的配置文件都是以 ASCII(键盘上面可找到的)的纯文本形式,(发音:/ˈæski/ass-kee[1]AmericanStandardCode forInformationInterchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。 从[ 0000 0000 - 0111 1111 ]共128个字符。

vi 文本编辑器

所有的 Unix Like 系统都会内置 vi 文本编辑器,其他的文本编辑器则不一定存在;

很多软件的编辑接口都会主动调用 vi (如 crontab等命令);

vim 具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计;

程序简单,编辑速度相当快速。

vim 其实相当于 vi 的高级版本,vim可以用颜色或底线等方式来显示一些特殊信息。

在vi 里面,[ Tab ] 键所得到的结果与空格符得到的结果是不一样的,特别强调一下。

在 vi 中,数字是很有意义的。数字通常代表重复做几次的意思,也有可能是代表去到第几个什么什么的意思。


vim 的保存文件、恢复与打开时的警告信息


当我们在使用 vim 编辑时,vim 会在被编辑的文件目录下再建一个名为  .filename.swp 的暂存文件。

由于 vim 的工作被不正常中断,导致暂存盘无法通过正常流程来结束,所以暂存文件就不会消失,而继续保留下来。此时继续编辑文件就会出现某些情况。

异常及解决方案

1:可能有其他人或程序同时在编辑这个文件;

2:在前一个 vim 的环境中,可能因为某些不明原因导致 vim 中断(crashed)。



vi  的三种模式:一般模式、编辑模式、命令行模式



vi的3种模式

一般模式                删除、复制与粘贴

x,X                                x为向后删除一个字符,X为先前删除一个字符

nx(n代表数字)               向后删除n个字符

dd                                删除当前行

D                                  删除当前行所有字符,使成为空行

ndd(n代表数字)            删除光标所在行的向下n列

d1G                             删除光标所在行到第一行的所有数据

dG                              删除光标所在行到最后一行的所有数据

yy                               复制光标所在行

y1G                           复制光标所在行到第一行的所有数据

yG                              复制光标所在行到最后一行的所有数据

ynj(n代表数字)            复制光标所在行向下n+1行

dnj(n代表数字)            删除光标所在行向下n+1行

p,P                           p为复制的数据粘贴在光标的下一行,P为复制的数据粘贴在光标的上一行

J                             将光标所在行与下一行的数据结合成一行

u                             恢复前一个操作(undo)

ctrl + r                      重做上一个操作

.                                 重复前一个操作

编辑模式

i,I                      i为在当前光标所在处插入输入的文字,I为在光标所在行第一个非空字符插入输入的文字

a,A                      a为在当前光标所在处下一个字符插入输入的文字,A为在光标所在行最后一个字符的下一个字符处插入输入的文字

o,O                      o为在光标所在行的下一行行首开始插入字符,O为在光标所在行的上一行行首开始插入字符

r,R                      r为替换光标所在那一个字符,R为一直替换光标所指的文字,直到退出

Esc                      退出,回到一般模式

命令模式                光标移动

h                        光标向左移一个字符

j                        光标向下移一个字符

k                        光标向上移一个字符

l                        光标向右移一个字符

Ctrl+f (Page Down)                屏幕向下翻一页

Ctrl+b (Page Up)                   屏幕向上翻一页

Ctrl+d                  屏幕向下翻半页

Ctrl+u                  屏幕向上翻半页

+                        光标移动到下一行的第一个非空字符

-                        光标移动到当前行的第一个非空字符

n空格(n代表数字)          光标向当前行向右移动n个字符

0(数字0)                  光标移动到当前行的第一个字符(可以为空字符,注意与-区分)

$                        光标移动到当前行的最后一个字符(可以为空字符,注意与-区分)

H                        光标移动到当前屏幕最上方的那一行的第一个非空字符

M                        光标移动到当前屏幕最中间那一行的第一个非空字符

L                        光标移动到当前屏幕最下方的那一行的第一个非空字符

G                        光标移动到该文章最后一行的第一个非空字符

gg                            移动到这个文件的第一行,相当于 1G

nG(n代表数字)            光标移动到该文章第n行的第一个非空字符

/word                    在光标之后查找word字符串  # 使用 /word 配合 n 以 N 是非常有帮助的。可以让你重复地查找到一些关键字

n                          这个 n 为英文字符,代表重复前一个查找的操作。

?word                    在光标之前查找word字符串

:s/word1/word2/g        在光标当前行查找word1,并替换成word2

:n1,n2s/word1/word2/g    在第n1行与第n2行之间查找word1,并替换成word2

:%s/word1/word2/gc        整个文章查找word1,并替换成word2,且在替换前显示提示字符给用户确认(confirm)

:w                      将编辑的数据保存到硬盘文件中

:w [filename]            将编辑后的数据保存到硬盘的另一个文件中

:r [filename]            在编辑数据时,读入另一个文件中的数据,即将filename文件中的内容加到光标所在行下一行

:wq或:x                  保存并退出

:q                      退出,适用于未修改的文件

:q!                      强制退出,适用于修改文件后不保存退出

:!command    执行命令

:r !command    将命令结果写入

:set nu                  显示行号

:set nonu                取消行号

:n1,n2 w [filename]      将n1到n2行的内容保存到名为filename的文件中



vim 的功能


1、块选择(Visual Block)

2、多文件编辑

3、多窗口功能

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

因为我们的vim会主动将你曾经做过的行为记录下来,好让你下次可以轻松作业。那个记录操作的文件就是:~/.viminfo。  如果你曾经使用过vim,那你的主文件夹应该会存在这个文件才对。这个文件是自动产生的,你不必自行创建。

此外,每个distribution对vim的默认环境都不太相同,举例来说,某些版本在查找到关键字时并不会高亮反白,有些则会自动帮你进行缩进排列。其实这些都是可以自行设置的。那就是vim的环境设置。

vim的环境设置参数

整体的vim的设置值一般时放置在 /etc/vimrc 这个文件中,不过不建议你修改它。你可以新建  ~/.vimrc  将你的值写入。

举例如下:

自定义的vimrc

5、vim 常用命令示意图



其他vim使用注意事项


1、中文编码问题

你的Linux系统默认支持的语系数据,这与 /etc/sysconfig/i18n    有关;

你的终端接口(bash)的语系,这与 LANG这个变量有关;

你的文件原本的编码;

打开终端机的软件。

修改语系编码:

LANG=zh_CN.utf-8


2、DOS 与 Linux 的断行字符

Linux的【Enter】为LF符号($),由于DOS的断行符号是CRLF(^M$),也就多出来了一个CR(^M)。这样写出来的程序可能就会出现问题而无法执行。

如果在不同的系统之间复制一些纯文本文件时,千万记得要使用 UNIX2dos  或者  dos2UNIX 来转换一下断行格式。


3、语系编码转换

使用  iconv  这个命令来进行编码转换

iconv -f  gbk  -t  utf-8  aaagbk



重点回顾


Linux下配置文件多位文本文件,故使用vim即可进行编辑;

vim可视为程序编辑器,可用以编辑 shell script 、配置文件等;

vi 为所有UNIX like 的操作系统都会存在的编辑器,且执行速度块;

vi 的界面大致可以分为两部分:上半部的本文与最后一行的状态+命令行模式;

数字是有意义的,用来说明重复进行几次操作的意思,如 5yy 为复制5行的意思;

小数点“.”为重复进行前一次操作,也是经常使用的按键功能;

vim会主动创建swap暂存文件,多疑不要随意断线;

可以使用 ctrl + v 进行复制/粘贴/删除的行为;

使用 :sp 功能可以切割窗口;

vim的环境设置可以写入 ~/.vimrc 文件中;

可以使用 iconv 进行文件语系编码的转换;

使用 dos2UNIX 及 UNIX2dos 可以变更文件每一行的行尾断行符。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • vi/vim是什么? Linux世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的Linux发行版系统上都有...
    m2fox阅读 1,049评论 0 2
  • vi/vim是什么? 是个编辑器。 第一部分:一般模式。 移动光标的方法 h 或 向左箭头键(←) 光标向左移动一...
    溺象海阅读 231评论 0 0
  • 曾经在思科的工厂测试系统`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超过2年半,现在...
    戈多在地狱阅读 1,789评论 1 13
  • 看到今天的主体就精神一震,解读压力和管理情绪,鸭梨山大是现在职场通病,不禁对今天的课程多了一份期待! ...
    swallow_张燕阅读 288评论 0 1
  • 夏日凉凉夜,小径布芳草。众人辞辛劳,入梦谷不少。
    人间百味阅读 212评论 0 0