跟着鸟哥学Linux系列笔记2-第10章VIM学习

跟着鸟哥学Linux系列笔记0-扫盲之概念

跟着鸟哥学Linux系列笔记0-如何解决问题

跟着鸟哥学Linux系列笔记1

常用的文本编辑器:Emacs, pico, nano, joe, vim

VIM-为什么选择vi编辑器

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

  2. 很多软件的编辑接口都会主动调用vi,例如contab, visudo, edquota

  3. vim具有程序编辑能力,可以主动以字体颜色辨别语言正确性

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

  第2点比较重要,因为太多Linux命令默认使用vi作为数据编辑的接口

vi的使用:

  vi分为3种模型:一般模式,编辑模式,命令模式

一般模式:以vi打一个文件进入一般模式,可以使用上下左右键来移动光标,可以删除字符或删除整行,也可以复制,粘贴文件数据

编辑模式:在一般模式可以删除、复制、粘贴,但却无法编辑文件内容,要等到你按下i, o, a, r等任一个字母后才能进入编辑模式,按下这些键之后,在界面的左下方会出现INSERT或REPLACE,才可以进行编辑,如果要回到一般模式,则必须按下ESC退回编辑模式

命令行模式:在一般模式中,输入:, /, ? 3个中的任意一个字符就可以将光标移动到最下面一行,在这个模式中,可以查找数据、读取、保存、大量替换字符、离开vi、显示行号等

下图为相互转换图:

跟着鸟哥学Linux系列笔记2-第10章VIM学习

按键说明:

移动、翻页

h: 光标向左移动一个字符,同方向左键

j: 光标向下移动一个字符,同方向下键

k: 光标向上移动一个字符,同方向上键

l: 光标向后移动一个字符,同方向向右键

多个字符移动则为:n+方向,如:向左移动30个字符为30h

ctrl+f: 向下翻页

ctrl+b: 向上翻页

ctrl+d: 向下翻半页

ctrl+u: 向上翻半页

+: 光标移到非空格的下一行

-: 光标移到非空格的上一行

n+空格:向后移动n个字符,20[space],向后移动20个字符

0或home: 移到这一行最前面

$或end: 移到到这一行最后面

H: 光标移至屏幕最上方那行第一个字符

M: 光标移至屏幕*那行第一个字符

L: 光标移至屏幕最下方那行最后第一个字符

G: 移到文件最后一行

nG: 移至文件第n行

gg: 移至文件第一行

n[Enter]: 光标向下移动n行

/word: 向下查找

?word: 向上查找

n: 向下查找

N: 向上查找

替换

:n1,n2s/word1/word2/g: 在n1~n2之间找word1, 并替换为word2

:1, $s/word1/word2/g: 在1~最后一行之间找word1, 并替换为word2

:1, $s/word1/word2/gc: 在1~最后一行之间找word1, 并替换为word2,在所有替换之前提示用户

删除

x, delete: 向后删除一个字符

X, backspace: 向前删除一个字符

nx: 向后删除n个字符

nX: 向前删除n个字符

dd: 删除光标所在的那一整行

ndd: 删除光标所在行的向下20行

d1G: 删除光标所在列第1行的所有数据

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

d0: 删除从光标所在处到该行的最前面一个字符

复制

yy: 复制光标所在的那一行

nyy: 复制光标所在的向下行

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

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

y0: 复制光标所在那个字符到该行行首的所有数据

y$: 复制光标所在那个字符到该行结尾的所有数据

粘贴

p, P将已复制的数据在光标下一行粘贴,大写P则为贴在光标上一行

其他

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

c: 重复删除,例如10cj, 向下删除10行

u: 复原前一个操作

ctrl+r: 重做上一个操作

.: 恢复前一个操作

编辑模式:

i: 从目前光标所在处插入

I: 从目前光标所在行第一个非空格符处开始插入

a: 从目前光标所在处下一个字符插入

A: 从目前光标所在行的最后一个字符插入

o: 从目前光标所在的下一行处插入新的一行

O: 从目前光标所在的上一行处插入新的一行

r: 替换光标所在的那个字符一次

R: 替换光标所在行所有匹配字符

命令行模式:

:w: 将编辑的数据写入到硬盘中

:w!: 若文件属性为“只读”时,强制写入文件,写入前会校验权限

:q: 退出vi

:q!: 强制离开不保存文件

:wq: 保存后离开

:wq!: 强制保存并离开

ZZ: 大写Z,若文件无更改,则不保存离开;若文件有更改,则保存离开

:w[filename]: 将编辑文件保存为另一个文件

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

:n1,n2 w[filename]: 将n1~n2内容保存成filename文件

:! command: 暂时离开vi到命令行模式下执行command的显示结果,例如::! ls /home即可在vi当中查看/home下面以ls输出的文件信息

:set nu: 显示行号,设置之后,会在每一行前缀显示行号

:set nonu: 不显示行号

vim的备份文件,恢复与打开时的警告信息

vim会主动创建备份文件:/tmp/vitest/.man.con.swp, 以swp结尾的备份文件

在编辑时,不正常保存,再撕开时会找开,*.swp文件

命令:alias,将显示所有的简写

块选择:

ctrl+v: 光标移动过的地方开始反白

y: 将反白地方复制

d: 将反白地方删除

多文件编辑:

:n: 编辑下一个文件

:N: 编辑上一个文件

:files: 列出目前这个vim打开的所有文件

>vim filename / filename2

多窗口功能:

在命令行输入::sp[filename],即可多窗口编辑,以下为详细步骤

1. 先打开文件:vim /man.config

2. 输入: :sp

3. 输入:G

4. 再输入::sp /man.config

5. 此时3屏显示同一个文件

各个屏幕之间切换:ctrl+w+k(向上键): 找到上一个编辑窗口,ctrl+w+j(向下键): 找到下一个编辑窗口,ctrl+w+q: 结束离开

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

查看设置,在一般模式输入::set all,即可查看当前文件所有设置

整体vim设置值,一般是放在/etc/vimrc文件中,不过不建议修改它,可以修改~/.vimrc这个文件,默认不存在,可以自行手动创建

vim常用命令示意图:

跟着鸟哥学Linux系列笔记2-第10章VIM学习

其他问题:

中文编码问题:

1. Linux系统默认语系数据:/etc/sysconfig/i18n

2. 在bash下,与LANG变量有关

3. 文本原本编码

4. 打开终端机的软件

DOS与Linux的断行字符:

在Linux中Enter按键为LF,而在DOS中Enter按键为CRLF,在Linux中显示DOS回车会多出^M$

使用Linux中的格式转换工具可以进行转换:

  dos2UNIX [-kn] file [newfile]

  UNIX2dos [-kn] file [newfile]

最终建议:由于字符编码方式不一样,不建议在windows系统当中将文件编辑之后,才上传到Linux系统,容易发生错误,而且如果在不同的系统之间复制一些纯文文件时,使用以上两个 命令转换

语系编码转换:如何将big5编码转成utf-8,使用conv

  >iconv -f 原本编码 -t 新编码 file [-o newfile]

上一篇:跟着鸟哥学Linux系列笔记3-第11章BASH学习


下一篇:Java系列笔记(4) - JVM监控与调优