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

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

文章目录

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

  • 行编辑器: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
  1. vim的其他一些模式:

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

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

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

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

  2. vim关闭文件

    扩展模式

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

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

    ZZ     保存退出
    
    ZQ    不保存退出
    
  3. 命令模式常用命令:

    单词间跳转:

    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       返回上次撤销
    
  4. 扩展命令模式常用命令:

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

地址定界

:#  跳到第#行

:#,#    第左侧第#行,到右侧第#行;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:查找并替换

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

修饰符:

i:忽略大小写

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

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

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

命令模式

u:		撤销更改

ctrl+r  恢复上一次撤销

.       重复执行上一次操作

1.      重复执行上一次操作n次
  1. vim的剪贴板

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

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

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

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

“tp   表示将t剪贴板内容粘贴
  1. 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相同

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

三、定制vim的工作特性

扩展命令模式下执行:

set number      添加行号

set nonumber 取消行号

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

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

全局:/etc/vimrc

个人:~/.vimrc

其他一些常用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

  • head显示文件开头内容

    -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 基于行过滤的文本过滤工具

    -v     显示不被匹配到的行
    
    -i      忽略字符大小写
    
    -n     添加匹配到的行的行号
    
    -c     统计被匹配到的行数
    
    -o     仅显示匹配到的字符
    
    -q     静默模式
    
    -A#   包含此匹配行和后#行
    
    -B#   包含此匹配行和前#行
    
    -C#   包含此匹配行和前后#行
    
    -e     实现多个匹配字符的或者(or)关系 -e a -e b:a或b
    
    -w    匹配整个单词,数字、字母、下划线都算单词一部分
    
    -r      递归目录
    
    -E     使用ERE,扩展的正则表达式
    
    -F     相当于fgrep
    
03-04 18:59