TangWei's Studio

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

Word count: 2,186 / Reading time: 8 min
2018/04/08 Share

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

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

一、文本编辑器的种类主要有

  • 行编辑器:sed

  • 全屏编辑器:nano,vi

  • vim – Vi Improved(vi文本编辑器的升级版)

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

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

1.vim打开文件:

vim[option]…FILE…

  • +# 打开文件后,让光标处于第#行行首

  • -o 后跟多个文件可水平显示多个窗口

  • -O 后跟多个文件可垂直显示多个窗口

  • -b 以二进制方式打开文件

  • -d file1 file2… 比较多个文件

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

2.vim的三种主要模式:

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

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

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

3.vim模式切换:

命令模式—>插入模式

  • i:在光标处输入

  • I:在光标所在行首输入

  • a:在光标所在处后输入

  • A:在光标所在行行尾输入

  • o:在光标所在行的下方打开一个新行

  • O:在光标所在行的上方打开一个新行

插入模式—>命令模式

  • ESC

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

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

  • ESC,Enter

4.vim的其他一些模式:

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

  • 可视化(visual)模式:v 切换面向字符的可视化模式;右下角显示–VISUAL–V 切换面向行的可视化模式

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

5.vim关闭文件

扩展模式

按”:”从命令模式进入Ex模式

  • wq 存盘退出

  • q 文本未修改,不存盘退出

  • q! 文本已被修改,想不存盘退出

  • w file 文件另存为file

  • r file 读取file文件内容到当前文件

  • !command 直接在扩展模式下执行命令

  • r!command 读入命令的输入到当前文件光标处

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

  • ZZ 保存退出

  • ZQ 不保存退出

6.命令模式常用命令:

单词间跳转:

  • w 下一个单词词首

  • e 下一个单词词尾

  • b 当前或前一个单词的词首

当前页跳转:

  • H 页首

  • M 页中间

  • L 页底

行首行尾跳转:

  • ^ 跳转至行首第一个非空白字符

  • 0 跳转至行首

  • $ 跳转至行

行间移动:

  • #G 调至第#行;扩展模式下可执行 :G

  • G 最后一行

  • 1G,gg 第一行

命令模式下字符操作

  • 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.扩展命令模式常用命令:

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

地址定界

  • :# 跳到第#行

  • :#,# 第左侧第#行,到右侧第#行;2,5表示第2到第5行

  • :#,+# 从左侧第#行,加上右侧#的行;2,+3表示第2到5行

  • :. 当前行

  • $ 最后一行

  • % 全文,相当于1,$

  • :/pat1/,/pat2/ 从pat1匹配到的行开始,到第一次被pat2匹配到的行

  • :/pat1/,# 可混用

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

  • d 删除

  • y 复制

  • w file 将范围内行另存至指定文件中

  • r file 在指定位置插入匹配内容

查找字符

  • /PATTERN:从光标所在处向文件尾部查找

  • ?PATTERN:从光标所在处向文件首部查找

  • n:与命令同方向

  • N:与命令反方向

查找并替换

  • s/要查找的内容/替换为的内容/修饰符

修饰符:

  • i:忽略大小写

  • g:全局替换每一行的第一次出现的匹配

  • gc:全局替换所有匹配,每次替换前询问

查找替换的分隔符/可用其他分隔符代替:如#,@

命令模式

  • u:撤销更改

  • ctrl+r 恢复上一次撤销

  • . 重复执行上一次操作

8.vim的剪贴板

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

  • ”myy 表示复制光标所在行到m剪贴板

  • “mp 表示将m剪贴板内容粘贴

  • 3″tyy 表示复制3行内容到t剪贴板

  • “tp 表示将t剪贴板内容粘贴

9.vim多文件模式

vim FILE1 FILE2 FILE3

  • :next 下一个文件

  • :prev 上一个文件

  • :first 第一个文件

  • :last 最后一个文件

  • :wall 保存所有文件

  • :qall 退出所有

  • :wqall 保存退出

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

  • ctrl+w放开后按s 水平分割

  • ctrl+w放开后按v 垂直分割

  • ctrl+w放开后按q 取消相邻窗口

  • ctrl+w放开后按w 取消全部窗口;与:wqall相同

enter image description here

三、定制vim的工作特性

1.扩展命令模式下执行:

  • set number 添加行号

  • set nonumber 取消行号

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

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

  • 全局:/etc/vimrc

  • 个人:~/.vimrc

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

忽略大小写
  • set ic 忽略大小写

  • set noic 取消忽略大小写

自动缩进
  • set ai 自动和上一行对齐

  • set noai 取消对齐

文件格式转换
  • set fileformat=unix Windows文件转换Linux文件

  • set fileformat=dos Linux文件转换Windows文件

设置光标所在行下划线
  • set cursorline 启用

  • set no cursorline 禁用

复制时保留格式:
  • set paste 启用

  • set nopaste 禁用

查看全部已配置的vim工作特性
  • :set 显示全部已配置set

  • :help 查看帮助

四、文本处理常用命令

cut 按列抽取文本

  • -d 指定分隔符

  • -f 指定第几列

  • –output-delimiter=’ ‘ 指定单引号中符号作为分隔符

diff 比较两个文件直接的差别,后跟file1,file2

  • -u
  • -n 显示头n行

  • -c 显示头n个字节

tail

  • -n 显示最后n行

  • -c 显示最后n个字节

  • -f 跟踪文本的变化(追加内容),可写为tailf

  • -F 跟踪文件名

sort 排序

  • -t 指定分隔符(类似cut -d)

  • -k 指定第几列(类似cut -f)

  • -n 以数字排序

  • -r 倒序排列

  • -f 忽略大小写

  • -u 删除重复的行压缩到一行

  • -R 随机排序

paste 合并两个文件同行号的列到一行

  • -s 合并两个文件按一行显示

  • -d 指定分隔符,类似cut -d的用法

grep 基于行过滤的文本过滤工具(grep文本处理三剑客之一)

  • -v 显示不被匹配到的行

  • -i 忽略字符大小写

  • -n 添加匹配到的行的行号

  • -c 统计被匹配到的行数

  • -o 仅显示匹配到的字符

  • -q 静默模式

  • -A# 包含此匹配行和后#行

  • -B# 包含此匹配行和前#行

  • -C# 包含此匹配行和前后#行

  • -e 实现多个匹配字符的或者(or)关系 -e a -e b:a或b

  • -w 匹配整个单词,数字、字母、下划线都算单词一部分

  • -r 递归目录

  • -E 使用ERE,扩展的正则表达式

  • -F 相当于fgrep

CATALOG
  1. 1. vim文本编辑器及文本处理常用命令
    1. 1.1. 一、文本编辑器的种类主要有
    2. 1.2. 二、Vim文本编辑器相关命令:
      1. 1.2.1. 1.vim打开文件:
      2. 1.2.2. 2.vim的三种主要模式:
      3. 1.2.3. 3.vim模式切换:
      4. 1.2.4. 4.vim的其他一些模式:
      5. 1.2.5. 5.vim关闭文件
      6. 1.2.6. 6.命令模式常用命令:
      7. 1.2.7. 7.扩展命令模式常用命令:
      8. 1.2.8. 8.vim的剪贴板
      9. 1.2.9. 9.vim多文件模式
    3. 1.3. 三、定制vim的工作特性
      1. 1.3.1. 1.扩展命令模式下执行:
      2. 1.3.2. 2.配置文件:使vim工作特性永久有效
      3. 1.3.3. 3.其他一些常用vim特性命令:
        1. 1.3.3.1. 忽略大小写
        2. 1.3.3.2. 自动缩进
        3. 1.3.3.3. 文件格式转换
        4. 1.3.3.4. 设置光标所在行下划线
        5. 1.3.3.5. 复制时保留格式:
        6. 1.3.3.6. 查看全部已配置的vim工作特性
    4. 1.4. 四、文本处理常用命令
      1. 1.4.1. cut 按列抽取文本
      2. 1.4.2. diff 比较两个文件直接的差别,后跟file1,file2
      3. 1.4.3. head
      4. 1.4.4. tail
      5. 1.4.5. sort 排序
      6. 1.4.6. paste 合并两个文件同行号的列到一行
      7. 1.4.7. grep 基于行过滤的文本过滤工具(grep文本处理三剑客之一)