Linux文本编辑器之 vi vim 详谈

Linux文本编辑器之 vi vim

        vi :Visual Interface,它与sed不同,sed是功能比较简单的行编辑器,而vi是一个功能强大的全屏文本编辑器,它还有一个增强版vim (Vi IMproved).在vim里,有很多功能强大的文本编辑快捷键,以便你在编辑文本是能够迅速的实现文本的查找,修改,替换,引用等操作.

vim功能,操作详解:

打开文件:

QQ截图20160810095415.png

    # vim [OPTION]… FILE…

    +#: 打开文件后,直接让光标处于第#行的行首

    +/PATTERN:打开文件后,直接让光标处于第一个被

    PATTERN匹配到的行的行首

    vim + file 直接打开file,光标在最后一行

    vim -b file 二进制方式打开文件

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

    vim -m file 只读打开文件

     ex file 或 vim –e 直接进入ex模式

     如果该文件存在,文件被打开并显示内容

    如果该文件不存在,当编辑后第一次存盘时创建它

vim:是一个模式编辑器

QQ截图20160810095900.png

 三种主要模式:(模式的名称在每个地方叫法不同,如,有人喜欢叫扩展命令模式叫末行命令模式等)

    1: 命令模式(默认):移动光标,剪切/粘贴文本

    2: 插入(编辑)模式:修改文本

    3: 扩展命令模式:保存,退出等

  Esc键 :退出当前模式

  Esc键 Esc键 : (两下Esc键)返回到命令模式

    

    模式转换

         插入模式 —-> 命令模式

        ESC

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

        :

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

        ESC

         锁定和解锁:CTRL+s,Ctrl+q       

    1 : 运行命令 vim /etc/inittab 默认以命令模式打开文本

blob.png

    2: 在命令模式下按快捷键 i 等,进入编辑模式

blob.png

    3: 在命令模式下,输入 : 可以进入 扩展命令模式

blob.png

    关闭文件

        扩展模式:

            :q 退出

            :q! 强制退出,丢弃做出的修改

            :wq 保存退出

            :x 保存退出

        命令模式

            ZZ: 保存退出

            ZQ:不保存退出

    命令模式 –> 插入模式

            i: insert, 在光标所在处输入

            I:在当前光标所在行的行首输入

            a: append, 在光标所在处后面输入

            A:在当前光标所在行的行尾输入

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

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

     扩展模式 : 按“ :”进入Ex模式, 创建一个命令提示符:,处于底部的屏幕左侧        

            命令:

            w 写(存)磁盘文件

            wq 写入并退出

            x 写入并退出

            q 退出

            q! 不存盘退出,即使更改都将丢失

            r filename 读文件内容到当前文件中

            w filename 将当前文件内容写入另一个文件

            !command     //运行命令command,命令运行完之后按Enter继续编辑文本

            r!command     //将命令command运行的结果输入之当前光标的下方

   命令模式

      光标跳转           

            h: 左 l: 右 j: 下 k: 上       // 字符间跳转:在按键前先输入数字,按数字移动,如 10h 向左移动10个字符

            #COMMAND:跳转由#指定的个数的字符;

         单词间跳转

            w:下一个单词的词首

            e:当前或下一单词的词尾

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

            #COMMAND:由#指定一次跳转的单词数

         当前页跳转

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

      翻屏操作:

 Ctrl+f: 向文件尾部翻一屏

 Ctrl+b: 向文件首部翻一屏

 Ctrl+d: 向文件尾部翻半屏

 Ctrl+u:向文件首部翻半屏

      字符编辑:

x: 删除光标处的字符;

#x: 删除光标处起始的#个字符

xp: 交换光标所在处的字符及其后面字符的位置

~:转换大小写

 替换命令(r, replace)

r: 替换光标所在处的字符

R:切换成REPLACE模式

    删除命令:

d: 删除命令,可结合光标跳转字符,实现范围删除;

d$: 删除到行尾

d^:删除到非空行首

d0:删除到绝对行首

dw:向后删除一个单词

de:向后删除一个单词

db:向前删除一个单词

#command: #为数字,command为以上的命令符

dd: 删除光标所在的行

#dd:多行删除

D: 从当前光标位置一直删除到行尾,留空行,等同于d$

     复制命令(y, yank):

y: 复制,行为相似于d命令

y$ :复制到行尾

y0 :复制到绝对行首

y^ :复制到非空行首

ye :向后复制一个单词

yw :向后复制一个单词

yb :向前复制一个单词

#COMMAND:#为数字,command为以上的命令符

 yy:复制行

#yy: 复制多行

 Y: 复制整行

     粘贴命令(p, paste):

p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面

P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

     改变命令(c, change)

c: 修改后切换成插入模式

 命令模式 –> 插入模式

c$:替换到行尾

c^:替换到非空行首

c0:替换到绝对行首

cb:替换前一个单词

ce:替换后一个单词

cw:替换后一个单词

#COMMAND :#为数字,command为以上的命令符

        cc:删除当前行并输入新内容

#cc:替换多行

        C:删除当前光标到行尾,并切换成插入模式

      粘贴

 100iwang [ESC] 粘贴“ wang” 100次

    <start position><command><end position>

 Command:

y 复制、 d 删除、 gU 变大写、 gu 变小写

例如 0y$ 命令意味着:

0 → 先到行头

y → 从这里开始拷贝

$ → 拷贝到本行最后一个字符

ye 从当前位置拷贝到本单词的最后一个字符

撤销更改:

 u撤销最近的更改

 #u撤销之前多次更改

 U 撤消光标落在这行后所有此行的更改

 按Ctrl – r重做最后的“撤消”更改

 . 重复前一个操作

 n.重复前一个操作n次

扩展模式:地址定界

地址定界:

start_pos,end_pos

#: 具体第#行,例如2表示第2行;

#,#: 从左侧#表示行起始,到右侧#表示行结尾

#,+#: 从左侧#表示的行起始,加上右侧#表示的行数

: 2,+3 表示2到5行

.: 当前行

$: 最后一行

.,$-1 当前行到倒数第二行

%:全文, 相当于1,$

     /pat1/,/pat2/     :从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束

#,/pat/

/pat/,$

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

d :删除

y :复制

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

r file:在指定位置插入指定文件中的所有内容

 

查找

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

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

n:与命令同方向

N:与命令反方向

查找并替换

     s: 在扩展模式下完成查找替换操作

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

要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用\1, \2, …

等后向引用符号;还可以使用“ &”引用前面查找时查找到的整

个内容

修饰符:

i: 忽略大小写

g: 全局替换;默认情况下,每一行只替换第一次出现

gc:全局替换,每次替换前询问

 查找替换中的分隔符/可替换为其它字符,例如

s@/etc@/var@g

s#/boot#/#i

vim的寄存器

有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。未指定,将使用无命名寄存器.

用a, b,…,z表示,用“寄存器表示,放在数字和命令之间

如: 3"tyy :表示复制3行到t寄存器中

"tp   :表示将t寄存器内容粘贴

有10个数字寄存器,用0, 1, …, 9表示, 0存放最近复制内容, 1存放最近删除内容。当新的文本变更和删除时, 1转存到2, 2转存到3,以此类推。数字寄存器不能在不同会话间共享。

vim可以编辑二进制文件

    编辑二进制文件

     以二进制方式打开文件

    vim –b binaryfile

     扩展命令模式下,利用xxd命令转换为可读的十六进制

    :%!xxd

     扩展命令模式下,利用xxd命令转换回二进制

    :%!xxd –r

vim的可视化模式

     允许选择的文本块

        v 面向字符

blob.png

        V 面向行

blob.png

        ctrl-v 面向块

blob.png

     可视化键可用于与移动键结合使用:

        w, ) , } ,箭头等

     突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等

多文件模式

 vim FILE1 FILE2 FILE3 …

:next 下一个

:prev 前一个

:first 第一个

:last 最后一个

:wall 保存所有

:qall 退出所有

:wqall

blob.png

使用多个窗口:

多文件分割

vim -o|-O FILE1 FILE2 …

-o: 水平分割

-O: 垂直分割

在窗口间切换: Ctrl+w, Arrow

单文件窗口分割:

Ctrl+w,s: split, 水平分割

Ctrl+w,v: vertical, 垂直分割

ctrl+w,q:取消相邻窗口

ctrl+w,o:取消全部窗口

: wqall 退出

定制vim的工作特性

 配置文件:永久有效

全局: /etc/vimrc

个人: ~/.vimrc

 扩展模式:当前vim进程有效

 (1) 行号

显示: set number, 简写为set nu

取消显示: set nonumber, 简写为set nonu

 (2) 括号成对匹配

匹配: set showmatch, 简写为set sm

取消: set nosm

 (3) 自动缩进

启用: set ai

禁用: set noai

 (4) 高亮搜索

启用: set hlsearch

禁用: set nohlsearch

 (5) 语法高亮

启用: syntax on

禁用: syntax off

 (6) 忽略字符的大小写

启用: set ic

不忽略: set noic

 (7) 文件格式

启用: fileformat=unix

不忽略: fileformat=dos

 (8) 设置文本宽度

:set textwidth=65 (vim only)

:set wrapmargin=15

:help option-list

:set or :set all

原创文章,作者:hunter,如若转载,请注明出处:http://www.178linux.com/32474

(0)
hunterhunter
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • Centos Linux基础入门知识类

    Centos Linux基础入门知识类 •1.1Linux终端介绍 •1.2基本命令的使用:ls、pwd、cd。 •1.3 查看系统和BIOS硬件时间。 •1.4 Linux如何获得帮助,Linux关机命令:shutdow、init等。 •1.5 YUM本地源配置与开机自动挂载光盘 前言: 很多学习Linux的同学或多…

    Linux干货 2017-03-26
  • 基于mysql虚拟用户认证​

    虚拟用户:                             用户账号存储于何处? …

    Linux干货 2016-10-17
  • Linux 救援模式初步运用详解

    Linux救援模式初步运用 背景: 在运用Linux时会出现一些误操作,导致系统无法正常使用,比如删除了某个重要依赖库,或者删除了rpm等等。在这里记录下具体的操作步骤,供以后参考。 意义: 学会在使用Linux系统出现误删除系统重要文件时,能使用救援模式来恢复系统。 案例详解: 当我们删除了Linux系统重要库文件时,该如何恢复,比如在这里我们删除/lib…

    2017-07-29
  • Linux 常用命令之cp,一个可以煮饭的工具;

    cp 复制目录和文件 对于系统管理员来说,在文件系统中将文件和目录从一个位置复制到另外一个位置是家常便饭,而cp就是可以煮饭的工具之一。cp需要源对象和目标对象,源对象在前,目标对象在后面。 1. 常用选项 基本用法 [root@local tmp]# ll total 0 -rw-rw-r–. 1 gen…

    Linux干货 2016-08-02
  • 【N25第五周作业】find命令以及相关练习

    find: 实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找; 工作特性: 查找速度略慢; 精确查找; 实时查找; 用法: find [OPTIONS]  [查找起始路径]  [查找条件]  [处理动作] 查找起始路径:指定具体搜索目标起始路径;默认为当前目录; 查找条件:…

    Linux干货 2016-12-27
  • 周期性计划任务crond讲解

    crond是Linux或者unix系统的作业调度程序。运用它,在设定的时间段周期性执行某个命令或脚本。下文的例子均在centos 7.3上测试。一、crond组件 如果centos7.3最小化安装,不一定存在crond服务,需要手动安装,安装之后手动启动并设置以后自行开机启动。 主要有cronie、cronie-anacron、crontabs三个程序包。 …

    Linux干货 2017-03-27