vim文本编辑器

Vim文本编辑器不能单独编写二进制文件,但是可以配合xxd命令编辑二进制文件

1、文本编辑种类:

行编辑器: sed

全屏编辑器:nano, vi、vim(其是改进的vi)

其他编辑器:

Gedit,一个简单的图形编辑器

Gvim,一个Vim编辑器的图形版本

2、打开文件

用法#vim  [OPTION]… FILE…

+#:打开文件后,直接让光标处于第#行的行首,例如#vim +6 file 光标直接定位到第6行行首

+/ PATTERN:打开文件后,直接让光标处于第一个被PATTERN 匹配到的行的行首,例#vim +/^U /etc/fstab

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

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

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

vim -m file 只读打开文件,可以修改但是无法保存

    #ex file或者vim –e直接进入ex模式即是扩展模式

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

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

3、Vim模式:

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

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

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

模式间的转换如下:

插入模式 —->  命令模式     按ESC

   命令模式 —->  扩展模式     按:

   扩展模式 —->  命令模式     按ESC

   锁定屏幕和解锁:CTRL+s,Ctrl+q

1)、命令模式 –>  插入模式(即是在命令模式下,按下列按键可进入相应的插入模式,共有六种)

i: insert, 在命令模式按i进入插入模式,然后可在光标所在处输入

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

I:大写i,在当前光标所在行的行首输入

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

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

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

2)、扩展模式

按“:”进入Ex 模式也即扩展模式

    在底部的屏幕左侧创建一个命令提示符”:”

    命令:

wq 写入并退出

写入并退出

q  退出

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

r filename  读文件内容到当前文件中,例如在扩展模式左下:号处输入r /etc/issue,即是把/etc/issue文件内容写入当前文件光标处

w filename 将当前文件内容写入另一个文件,例如在扩展模式左下:号处输入w /root/di,即是把当前文件内容写存入/root/di文件

!command,不用退出可直接执行需要的其它命令,例如:!hostname点击enter键可执行命令hostname并显示执行结果,再按enter键即可返回

r!command,读命令的执行结果进入当前文件光标处,例如:r!ls /root

3)、关闭文件

    扩展模式下:

:q  退出

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

:wq 保存退出

:x  保存退出

    命令模式:

ZZ: 保存退出

ZQ:不保存退出

4)、命令模式光标跳转

    字符间跳转(处理四个方向箭头):

h: 左 j: 下  k: 上 l: 右

#COMMAND:跳转由#指定的个数的字符,例如6h、2j等等

    单词间跳转:

w:下一个单词的词首

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

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

#COMMAND:由#指定一次跳转的单词数,例如2w、3b等等

    当前页跳转:

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

    行首行尾跳转:

^:  跳转至行首的第一个非空白字符;

0:  跳转至行首

$:  跳转至行尾

  行间移动:

扩展模式下,在左下:号处输入#或#G,光标跳转至由#指定行首

G:最后一行

 1G, gg: 第一行

  句间移动:

 ):下一句 和(:上一句

  段落间移动:

 }:下一段和{:上一段

  翻屏操作

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

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

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

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

5)、命令模式编辑

字符编辑:

x: 删除光标处的字符

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

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

~: 转换大小写,转换光标所在位置字符的大小写

替换命令(r, replace)

r: 替换光标所在处的字符,按下r键后松开,再按要替换的字符就可替换光标所在处的字符

R: 切换成REPLACE,按下R键就进入replace模式,输入的字符就可替换光标及其后的任意字符

剪切删除命令(d-删除命令,可结合如下等等字符,实现范围剪切删除,如果需要可以粘贴)

d$:先按d键,松开后按下$键,可从光标处删除到行尾

d^:删除到非空行首

d0:删除到行首

dw:删除到单词尾

de:删除到单词尾

db: 删除到单词首

#COMMAND,使用例如6de、5db、2dw等等,指定同时删除多个单词

    dd:删除光标所在的行

#dd:多行删除

dG:删除到文件最后一行

dgg:删除到文件第一行

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

复制命令(y-复制,行为相似于d 命令)

y$

y0

y^

ye

yw

yb

#COMMAND

    yy:复制行

#yy:复制多行

    Y:

粘贴命令(p, paste)

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

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

改变命令(c-删除后切换成插入模式)

c$

c^

c0

cb

ce

cw

#COMMAND

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

#cc:

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

100iwang[ESC]—粘贴“wang”100次(具体是在命令模式下输入100i,自动进入插入模式,自光标位置输入wang,然后按下ESC键,就会接着输入的wang自动沿行粘贴”wang”99次,共计打印100次;若自光标位置输入wang后,把光标enter到下一行,然后按下ESC键,就会接着输入的wang自动沿列粘贴”wang”99次,也是共计打印100次)

<start position><command><end position>意思是开始位置-命令-结束位置

其中的命令Command可以如下:

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

例如 0gU$ 命令意味着:

0 → →  先到行头

gU→ →  从这里开始把字符变为大写

$ → →  直到本行最后一个字符

6)、扩展模式-地址界定

用法是:start_pos,end_pos,其中的:号就是扩展模式左下的:号

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

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

#,+#: 从左侧#表示的行起始,加上右侧#表示的行数例如:2,+3 表示2到5行

.: 当前行

$: 最后一行

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

% :全文, 相当于1,$

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

#,/pat/

/pat/,$

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

d,例如在扩展模式下,输入2,5d后按enter键就会删除第二至第五行

y,例如/etc/fstab文件在扩展模式下,输入/^.*by/,/^.*Se/y后按enter键就复制其第四至第七行

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

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

7)、扩展模式-查找搜索

/PATTERN:从当前光标所在处向文件尾部查找,使用方法-在扩展模式下输入/ PATTERN,按下enter键就会从当前光标所在处向文件尾部查找

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

n:与命令同方向,例如在/PATTERN时使用n,则是自查找的最近匹配模式向文件尾部查找

N:与命令反方向

8)、扩展模式-查找并替换(s-在扩展模式下完成查找替换操作)

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

要查找的内容可使用模式

替换为的内容不能使用模式,但可以使用\1, \2, …等后向引用符号

修饰符:

i: 忽略大小写

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

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

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

s@/sbin/nologin@/bin/csh@g

s#/aa#bb#i,文中的AA也会被搜索替代

%s#aa#bb#gc全文搜索替代

 

9)、命令模式-撤消更改

u 撤销最近的更改

    #u 撤销之前多次更改

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

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

    .重复前一个操作,例如yy复制了某一行,按p键后粘贴,再按p还可以粘贴…;在复制后,按p键后粘贴,此后按.键也可以不断粘贴; n.重复前一个操作n次 ,例如yy复制了某一行,按p键后粘贴,此后按2.可以重复两次粘贴

10)、vim寄存器(命令模式)

①、有26 个命名寄存器和1个无名寄存器,常存放不同的剪贴版内容,可以不同会话间共享

        用a ,b,…,z 表示:

如3"tyy 表示复制自光标处起3行到t寄存器中

"tp 表示将t寄存器中的内容粘贴至光标位置处,一次复制可多次粘贴

        未指定,将使用无命名寄存器

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

        参考如下示例:

        yy复制光标所在行的内容,此内容存在0数字寄存器中,如果再yy复制,0数字寄存器中的内容也将更新为最近复制的内容,如果要复制,”0p就将0数字寄存器中的内容粘贴到光标所在处;

        最近删除的内容存放于1数字寄存器中,”1p可将最近删除的内容粘贴于光标处,如果又进行了删除,则原1中内容转存到2中,最近刚删除的内容存放于1中,如要粘贴第一次删除的内容,就是”2p,等等

11)、编辑二进制文件

①、以二进制方式打开文件

#vim –b dosfile打开后有^M符号,此时处于不可编辑状态(注意是dosfile,非Linux上的文件)

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

:%!xxd

      ③、编辑二进制文件

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

:%!xxd –r

12)、可视化模式-允许选择的文本块

在命令模式下,按v键后再按左右方向键可以选择自光标位置开始的任意连续字符进行操作,比如按y键进行复制操作

在命令模式下,按V键后再按上下方向键可以选择自光标所在行开始的任意连续行进行操作,比如按y键进行复制操作

在命令模式下,按ctrl-v 键后再按上下左右方向键可以选择自光标所在处开始的任意连续块进行操作,如按y键进行复制操作

13)、多文件模式

vim FILE1 FILE2 FILE3 …

:next  下一个(其中的冒号是扩展模式左下方的冒号,修改文件后可以输入w进行当前文件保存,再次输入next后按enter键可切换至下一个文件;如果修改文件后直接输入next不能够进行切换,会提示应该输入next!进行强行切换,切换后修改的文件修改内容丢失)

:prev  前一个

:first  第一个

:last  最后一个

:wall  保存所有

:qall  退出所有

:wqall

14)、使用多个“窗口”

①、多文件分割 #vim -o|-O FILE1 FILE2 …

-o: 水平分割

-O: 垂直分割

在窗口间切换: Ctrl+w, Arrow(按Ctrl+w后再按方向键)

     ②、单文件窗口分割

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

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

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

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

 :wqall 保存退出

15)、定制vim 的工作特性

①,配置文件-永久有效(若配置文件不存在,建立后修改)

全局:/etc/vimrc

个人:~/.vimrc

    ②、扩展模式下-仅对当前vim进程有效(以下各项同此)

       (1) 行号

显示:set number,简写为set nu

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

       (2) 括号成对匹配(意思是光标在一半括号上时,与之相对应的另一半括号会高亮显示)

匹配:set showmatch,  简写为set sm

取消:set nosm

    ③、自动缩进(编辑输入时,换行后光标自动和前一行的行首对其)

启用:set ai

禁用:set noai

    ④、高亮搜索

启用:set hlsearch

禁用:set nohlsearch

    ⑤、语法高亮

启用:syntax on

禁用:syntax off

    ⑥、忽略字符的大小写(例如搜索时)

启用:set ic

不忽略:set noic

    ⑦、文件格式(把文件存为Unix或者dos格式)

:set fileformat=unix

:set fileformat=dos设置后再wq保存退出,即存为了dos格式

    ⑧、设置文本宽度(一行输入多少字符后自动换行)

 :set textwidth=65 (只用于vim,不能用于vi)从左起65个字符后换行

 :set wrapmargin=15 距离右端15个字符时换行

 


 

 

 

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

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

相关推荐

  • for、while、until循环

    一、for循环          for 变量名 in 列表;do             循环体     &nbsp…

    Linux干货 2016-09-19
  • 基础命令

    2018-03-13
  • Linux基础学习总结(三)

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次: [leexide@leeblog ~]$who | cut -d" " -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。 last -n&nbs…

    Linux干货 2016-10-03
  • Linux下/proc目录详解

    Linux下/proc目录详解 proc目录总的概述 proc下有关进程的目录概述 proc下针对Linux系统相关的参数目录概述 /proc目录总的概述 1.首先,我们可以使用ll命令查看下/proc目录,如下 [root@centos6 ~]# ls -l /proc total 0 dr-xr-xr-x. 8 root root 0 May 19 04…

    Linux干货 2017-05-20
  • RPM软件包管理

                                                RPM 软件包管理 1、rpm软件包管理: &nbs…

    系统运维 2016-09-01
  • 实战:ansible自动化部署nginx+keepalived+mysql负载均衡集群

    一、目的 使用ansible自动化部署nginx+keepalived+mysql负载均衡集群。 二、拓扑规划 三、详细步骤 1、环境的搭建         (1)安装ansible,同时配置私钥免密码进行通信 [root@localhost ~]# ssh-keygen &nb…

    Linux干货 2016-11-11