vim文本编辑器及文本处理常用命令

一、文本编辑器简介:

vi: Visual Interface,文本编辑器
文本:ASCII, Unicode
文本编辑种类:
行编辑器: sed
全屏编辑器:nano, vi
vim - Vi Improved (vi文本编辑器的升级版)
其他编辑器:
gedit 一个简单的图形编辑器
gvim 一个Vim编辑器的图形版本

二、Vim文本编辑器相关命令:

Vim是从 vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

1.vim打开文件:

vim[option]…FILE…

1
2
3
4
5
+#    打开文件后,让光标处于第#行行首
-o 后跟多个文件可水平显示多个窗口
-O 后跟多个文件可垂直显示多个窗口
-b 以二进制方式打开文件
-d file1 file2… 比较多个文件

注:当一个文件不存在时,用vim打开编辑存盘后会自动创建它

2.vim的三种主要模式:

命令(normal)模式:默认模式,可移动光标,剪切/粘贴文本。左下角显示文本路径,行数,字符数,右下角显示光标位置

插入(insert)模式:也叫编辑模式,修改文本。左下角显示 –INSERT–

扩展命令(extended command)模式:保存、退出等。左下角显示 “:”

3.vim模式切换:

命令模式—>插入模式

1
2
3
4
5
6
i:在光标处输入
I:在光标所在行首输入
a:在光标所在处后输入
A:在光标所在行行尾输入
o:在光标所在行的下方打开一个新行
O:在光标所在行的上方打开一个新行

插入模式—>命令模式

ESC

命令模式—>扩展命令模式

扩展命令模式—>命令模式

ESC,Enter

4. vim的其他一些模式:

替换(replace)模式: 命令模式下R切换,可随意替换字符;右下角显示–REPALCE–

可视化(visual)模式:

​ v 切换面向字符的可视化模式;右下角显示–VISUAL–

​ V 切换面向行的可视化模式

​ ctrl+v 面试块的可视化模式

5.vim关闭文件

扩展模式:

1
2
3
4
5
6
7
8
按”:”从命令模式进入Ex模式
wq 存盘退出
q 文本未修改,不存盘退出
q! 文本已被修改,想不存盘退出
w file 文件另存为file
r file 读取file文件内容到当前文件
!command 直接在扩展模式下执行命令
r!command 读入命令的输入到当前文件光标处

命令模式下也可关闭文件(不推荐使用)

1
2
ZZ     保存退出
ZQ 不保存退出

6.命令模式常用命令:

字符间跳转

1
2
h: 左 l: 右 j: 下 k: 上
#COMMAND:跳转由#指定的个数的字符

单词间跳转:

1
2
3
4
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND :由#指定一次跳转的单词数

当前页跳转:

1
H:页首 M:页中间行 L:页底

行首行尾跳转:

1
2
3
^       跳转至行首第一个非空白字符
0 跳转至行首
$ 跳转至行尾

行间移动:

1
2
3
\#G    调至第#行;扩展模式下可执行 :G
G 最后一行
1G,gg 第一行

句间移动

1
):下一句  (:上一句

段落间移动:

1
}:下一段  {:上一段

命令模式下字符操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
x:删除光标所在处字符
\#x:删除从光标所在处开始#个字符
xp:交换光标所在处字符和它后面字符的位置(原理是剪切粘贴)
~:波浪符转换大小写
J:删除当前行后的换行符
r:替换光标所在处字符

d:删除命令
d$ 当前光标删除至行尾
d^ 当前光标删除到非空行首
d0 当前光标删除到行首
dw 删除单词
dd 删除光标所在的行
\#dd 多行删除,一下删除#行

y:复制命令(用法类似d删除)
y$ 复制当前光标到行尾
y^ 复当前光标位置到非空行首
yw 复制单词
yy 复制光标所在的行

p:粘贴
p 粘贴至光标所在行下一行
P 粘贴至光标所在行上一行

u:撤销更改
\#u 撤销之前多次修改
U 撤销光标落在这行后所有此行的修改
Ctrl+r 返回上次撤销

7.扩展命令模式常用命令:

格式:地址定界+编辑命令

地址定界

1
2
3
4
5
6
7
8
:#  跳到第#行
:#,# 第左侧第#行,到右侧第#行;2,5表示第2到第5行
:#,+# 从左侧第#行,加上右侧#的行;2,+3表示第2到5行
:. 当前行
$ 最后一行
% 全文,相当于1,$
:/pat1/,/pat2/ 从pat1匹配到的行开始,到第一次被pat2匹配到的行
:/pat1/,# 可混用

使用方式:后跟一个编辑命令

1
2
3
4
d     删除
y 复制
w file 将范围内行另存至指定文件中
r file 在指定位置插入匹配内容

查找字符

1
2
3
4
/PATTERN:从光标所在处向文件尾部查找
?PATTERN:从光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向

s:查找并替换

格式:s/要查找的内容/替换为的内容/修饰符

修饰符:

1
2
3
4
i:忽略大小写
g:全局替换每一行的第一次出现的匹配
gc:全局替换所有匹配,每次替换前询问
查找替换的分隔符/可用其他分隔符代替:如#,@

命令模式

1
2
3
4
u:		撤销更改
ctrl+r: 恢复上一次撤销
. 重复执行上一次操作
#. 重复执行上一次操作n次

8.vim的剪贴板

有26个命名剪贴板和一个无命名剪贴板,存放不同的剪切内容,可以不同会话间分享

例:

1
2
3
4
"myy 	表示复制光标所在行到m剪贴板
"mp 表示将m剪贴板内容粘贴
3"tyy 表示复制3行内容到t剪贴板
"tp 表示将t剪贴板内容粘贴

9.vim多文件模式

vim FILE1 FILE2 FILE3

1
2
3
4
5
6
7
:next     下一个文件
:prev 上一个文件
:first 第一个文件
:last 最后一个文件
:wall 保存所有文件
:qall 退出所有
:wqall 保存退出

单文件的窗口分隔:方便对照文件内容

1
2
3
4
ctrl+w放开后按s      水平分割
ctrl+w放开后按v 垂直分割
ctrl+w放开后按q 取消相邻窗口
ctrl+w放开后按w 取消全部窗口;与:wqall相同

QQ图片20180408193404

三、定制vim的工作特性

扩展命令模式下执行:

1
2
set number     添加行号
set nonumber 取消行号

此操作仅临时有效,退出重进vim后,操作失效,要想永久保存vim的工作特性,需写入配置文件中

配置文件:使vim工作特性永久有效

全局:/etc/vimrc

个人:~/.vimrc

其他一些常用vim特性命令:

忽略大小写

1
2
set ic    忽略大小写
set noic 取消忽略大小写

自动缩进

1
2
set ai    自动和上一行对齐
set noai 取消对齐

文件格式转换

1
2
set fileformat=unix   Windows文件转换Linux文件
set fileformat=dos Linux文件转换Windows文件

设置光标所在行下划线

1
2
set cursorline      启用
set no cursorline 禁用

复制时保留格式:

1
2
set paste      启用
set nopaste 禁用

查看全部已配置的vim工作特性

1
2
:set      显示全部已配置set
:help 查看帮助

四、文本处理常用命令

  1. cut : 按列抽取文本

    1
    2
    3
    4
    5
    6
    7
    -b:	仅显示行中指定直接范围的内容;
    -c: 仅显示行中指定范围的字符;
    -d: 指定字段的分隔符,默认的字段分隔符为“TAB”;
    -f: 显示指定字段的内容;
    -n: 与“-b”选项连用,不分割多字节字符;
    --complement: 补足被选择的字节、字符或字段;
    --out-delimiter=<字段分隔符>: 指定输出内容是的字段分割符;
  2. diff: 比较两个文件直接的差别,后跟file1,file2

  3. head: 用于显示文件的开头的内容

    1
    2
    -n<数字>:指定显示头部内容的行数;
    -c<字符数>:指定显示头部内容的字符数;
  4. tail: 用于显示文件的结尾的内容

    1
    2
    3
    4
    -n     显示最后n行
    -c 显示最后n个字节
    -f 跟踪文本的变化(追加内容),可写为tailf
    -F 跟踪文件名
  5. sort: 将文件进行排序,并将排序结果标准输出

    1
    2
    3
    4
    5
    6
    7
    -t      指定分隔符(类似cut -d)
    -k 指定第几列(类似cut -f)
    -n 以数字排序
    -r 倒序排列
    -f 忽略大小写
    -u 删除重复的行压缩到一行
    -R 随机排序
  6. paste 合并两个文件同行号的列到一行

    1
    2
    -s      合并两个文件按一行显示
    -d 指定分隔符,类似cut -d的用法
  7. grep: 基于行过滤的文本过滤工具

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -v     显示不被匹配到的行
    -i 忽略字符大小写
    -n 添加匹配到的行的行号
    -c 统计被匹配到的行数
    -o 仅显示匹配到的字符
    -q 静默模式
    -A# 包含此匹配行和后#行
    -B# 包含此匹配行和前#行
    -C# 包含此匹配行和前后#行
    -e 实现多个匹配字符的或者(or)关系 -e a -e b:a或b
    -w 匹配整个单词,数字、字母、下划线都算单词一部分
    -r 递归目录
    -E 使用ERE,扩展的正则表达式
    -F 相当于fgrep
-------------本文结束感谢您的阅读-------------
0%