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 14:31
下一篇 2016-08-15 14:31

相关推荐

  • Linux文件三剑客sed命令用法详解

    sed是一种流编辑器,它是文本处理中非常强大的工具,能够完美的配合正则表达式使用,用法简单实用,非常灵活。        工作原理:sed命令处理文本时,把当前处理的行存储在一个临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。 在…

    2017-06-24
  • varnish动静分离

    http://blog.51cto.com/sonlich/2060785

    2018-01-14
  • 第一周课程练习

    1、描述计算机的组成及其功能。 计算机由硬件、操作系统、软件三大部分组成。 硬件包括核心CPU(大脑处理中心)、必备电源(心脏动力来源)、硬盘(仓库)内存(中转站)、主板(协调)、网卡、声卡、显卡、风扇、光驱、显示器、鼠标、键盘、麦克风音箱,闪存、蓝牙等。  计算机五大组成部分及功能。   运算器:     …

    Linux干货 2016-08-15
  • mysql配置详解-备份-主从-MHA

    目录: 1.备份和恢复 2.主从复制 3.主主复制 4.半同步复制 5.proxysql_读写分离 6.MHA 1.备份和恢复 ·mysqldump 备份: mysqldump -E -R –triggers –master-data=2 –flush-logs –single-transaction –dat…

    Linux干货 2017-08-08
  • CentOS6下的网络信息配置

    简介     我们都知道在我们互联网中,所有的通信都通过网络来完成的,有了网络当然也要有对应的地址,MAC地址是固定不变的,所以能变的只有IP的地址,那么今天来带给大家如何在CentOS6中如何配置网卡。当然一下的所有命令都是在CentOS6中进行的。 一、网卡的配置文件    1.操作网卡的命令 …

    Linux干货 2017-03-20
  • 配置LAMP (php-fpm模式)部署步骤

    配置LAMP (php-fpm模式)部署步骤 1.安装mariadb yum install maridb-server -y 1).配置server.cnf cp /etc/my.cnf.d/server.cnf{,.back} vim /etc/my.cnf.d/server.cnf ##mariadb服务器端配置文件 [mysqld] ##以下项是优化…

    Linux干货 2017-06-02