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中文件管理类命令初探

    Linux中文件管理类命令初探 文件管理通常指的是对文件或者目录进行的类似复制、移动、删除操作。 1. 文件的复制 cp 在Linux中使用cp指令完成文件复制工作,即copy之意。实际操作中又可以分为以下两种情况: 单源复制 单源复制即复制的源只有一个,这个源可以为文件或者目录。命令语法:cp [OPTION]… [-T] SOURCE DEST在实际…

    Linux干货 2016-11-06
  • iptables 初识

    iptables 包过滤性防火墙     iptables是位于用户空间,是防火墙管理配置规则的工具。     iptables的作用:用来添加,删除,管理netfilter规则。     Netfilter是位于内核中真正的防火墙,由5个钩子组成,…

    Linux干货 2016-06-01
  • 马哥教育网络班22期第二周课程练习1-未闻花名

    1、Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 rm 删除文件 rmdir 删除目录 1.1 pwd命令 该命令的英文解释为print working directory(打…

    Linux干货 2016-08-29
  • HTTP详解(2)-请求、响应、缓存

    1. HTTP请求格式              做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP协议传输的消息也是这样规定的…

    Linux干货 2015-04-04
  • 学以致用

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 cp – copy files and directories 复制文件或目录 使用格式: 单文件复制 cp [OPTION]… [-T] SOURCE DEST 如果DEST不存在,即创建文件并复制源文件数据流; 如果DEST存在,且为非目录文件时,将覆盖…

    Linux干货 2016-10-13
  • 马哥教育网络21期+第二周练习博客

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常用文件管理类命令有cp、mv、rm。 # cp命令:文件复制命令     cp [OPTION]… [-T] SOURCE DEST 单文件复制     cp [OPTION]… SOURC…

    Linux干货 2016-07-26