VIM

 

目录
  • vim
    • 打开
    • 模式转换
    • 删除(编辑模式、末行模式)
    • 复制
    • 粘贴
    • 删除(编辑模式)
    • 可视操做
    • 撤回
    • 精巧
    • 翻屏
    • 地址界定(末行模式)
    • 查找
    • 查找替换
    • 窗口分割
    • 单文件窗口分割
    • 定制特性
    • 技巧

 

vim

vim的是全文编辑器,而sed是属于行编辑器,vim的活动范围是全文,sed的活动范围是行。vim

三种模式:bash

编辑模式(命令模式,命令不外显),好比复制yy,粘贴papp

输入模式(插入模式)编辑器

末行模式(命令行模式,命令外显),好比set bg=darkide

打开vim默认就是处于编辑模式下,就能够输出隐式的命令,所谓的隐式的命令就是像dd这样的命令,咱们在键盘上敲了以后不会显示在界面上,可是会生效。命令行

打开

//打开文件后,直接处在文件的第一行
 vim + /etc/passwd     

//打开文件后,直接让光标处在第9行的行首
 vim +9 /etc/passwd   

// 打开文件后,直接处在文件的最后一行
 vim +$ /etc/passwd  

//打开文件后直接让光标处于第一个被模式匹配到的行的行首
vim +/^zhanghe  /etc/passwd 

模式转换

咱们刚进入vim的时候默认是编辑模式,并不能编辑,必须转换成为输入模式才能够,从编辑模式转换到输入模式的方式有这几种:文档

insert:
i :在光标所在处前方输入
I :在光标所在行首插入

append:
a :在光标所在处后输入
A :在光标全部行的行尾插入

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

从输入模式与编辑模式就一种方式:ESC便可。it

从编辑到末行模式使用冒号就能够,末行模式(命令行模式)里面经常使用命令以下:ast

:q退出class

:q!强制退出不保存

:wq保存退出

:wq!强制保存退出

:x保存退出

:w保存不退出

:w /PATH/TO/SOMEWHERE #保存到另外一个文件,至关于另存为

:set nu显示行号

1,10d删除第一行到第10行

从末行模式到编辑模式一下ESC或者两下ESC便可,按完以后末行模式的冒号就消失了。

编辑模式(隐式命令)里面的经常使用操做:

字符跳转

hl字符间的左右跳转

jk字符间的上下跳转

按一下数字再按jkhl中任意一下,就能够指定跳转多少下,好比3 j向下转换三次

w跳到下一上单词的词首

b当前或上一个单词的词首,第一次是本身所在的单词,第二次是上一个单词的词首、

e当前或下一个单词的词尾,第一次是本身所在的单词,第二次是下一个单词的词尾

也能够用用数字加持,好比3 e,跳转到从当前数据第三个单词的词尾。

^行首

$行尾

gg跳转到第一行

G跳转到最后一行

ZZ保存并退出

删除(编辑模式、末行模式)

在编辑模式当中x用来删除光标右侧单个的字符,其实就是删除光标盖住的字符。

使用dd命令能够删除一行

d^能够删除一行当中光标到行首的全部内容

d$能够删除一行当中光标到行尾的全部内容

#dd:多行删除

:1,10d,在末行模式下也能够删除,删除第一行到第十行

复制

y^ 复制光标到行首的内容

y$ 复制光标到行尾的内容

y1G 复制光标到文档首部的内容

yG 复制光标到文档尾部的内容

yy复制一整行

#yy复制多行,包括当前所在的行

粘贴

P(小写):缓冲区存的若是为整行,则粘贴当前光标所在行的下方,不然,则粘贴至当前光标所在处的后面。

P(大写):缓冲区存的若是为整行,则粘贴 当前光标所在行的上方,不然,则粘贴到当前光标所在处的前面。

使用d删除的内容实际没有删除,而保存在缓冲区当中。

删除(编辑模式)

C:删除光标后面的字符,前进入插入模式

c c;删除一整行的内容

#cc:删除多行而后进入插入模式

c^:插入光标前面的内容进入插入模式

c$:插入光标后面的内容进入插入模式

c1G :插入光标到文档首部的全部内容进入插入模式

cG:插入光标到文档结尾的全部内容进入插入模式

删除到文档首部的时候并非以字符,而是以行为单位,也就是说当使用c1G或者cG的时候是删除当前整行到文档首部和尾部的内容

可视操做

可视化模式(使用可视化操做的时候最好使用上下光标来配合)

v:按字符选定

V:按行选定

常常与删除,删除并插入、复制、连用

可视操做在写脚本的时候常常用到,选中多行以后,经过shift+>进行tab进行总体缩进。

若是想要删除连续多行当中开头的空格或TAB的话,不管经过大V仍是小v都不太使,在编辑模式使用ctrl+v就能够按字符选中,这个在后面写脚本的时候用的比较多。

撤回

在编辑模式使用u便可撤消上一步的操做

ctr+r把撤消给撤消了

精巧

r替换光标所在处的字符

重复上一步的操做使用点便可

翻屏

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

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

地址界定(末行模式)

:start_pos,end_pos

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

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

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

. 当前行

$:最后一行

.,$-1:表示当前行到倒数第二行。

%:全文,至关于1,$

/pat1/,/pat2/

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

#,/pat/

/pat/,$

常常与编辑命令连用:

d

y

w /PATH/TO/SOMEWERE,将范围内的行另存到指定文件中

r /PATH/FROM/SOMEWERE,在指定位置插入文件中的全部内容

例:把1——24行选中后删除:“:1,24d”

把开头是zhanghe的一直到开头是zhangjia之间全部删除:“:/zhanghe/,/zhangjia/d”

查找

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

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

n:与命令同方向

N:与命令反方向

查找替换

格式 :<界定> s@/须要搜索的模式/@/替换的内容/@g

s:末行模式下完成查找替换操做

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

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

替换为的内容:不能使用模式,但可使用\1,\2等后向引用符号,还可使用&引用前面查找进查找到的整个内容

修饰符:

i忽略大小写

g:全局替换,全部的都替换,若是不加g 话,第行只替换第一次出现

note:查找替换中的分隔符/可替换为其它字符,例如:s@@@,s###

//将从第一行到第10行的bash替换为BASH
:1,10s@bash@BASH@g    

//将第一行的r..t模式下查找到的内容替换为ROOT
:1s@r..t@R00T@   

//将第一行到第五行中的:号全都替换成两个冒号
:1,5s@\(:\)@\1:@g

//将和一行到第3行当中的bin全都替换成BIN,不区分大小写
:1,3s@bin@BIN@i

7.14 多文件操做

vim后面跟多个文件可打开多个文件,如:

[root@China ~]# cp /etc/{fstab,passwd,shadow} /tmp
[root@China ~]# vim /tmp/{fstab,passwd,shadow}

在末行模式输入:

:n跳转到下一个文件
:N跳转到上一个文件
:first跳转到第一个文件
:last跳转到最后一个文件
:wall保存全部
:qall退出全部
:wqall退出并保存全部

窗口分割

vim –o FILE……水平分割

vim –O FILE ……垂直分割

在窗口之间切换使用ctrl+w命令,或者再加上箭头

单文件窗口分割

ctrl+w,s:split水平分割

ctrl+w,v:vertical垂直

定制特性

全局:/etc/vimrc

我的:~/.vimrc 默认没有,需自行建立

set ruler设置标尺

set number—set nonumber 显示行号

set autoindent—set noautoindent自动缩进

set hlsearch-----set nohlsearch hl=high light搜索高亮

set bg=dark,这个色调最好用

set bg=light,默认是这个色调

NOTE:VIM能够经过可视模式选中以后使用x所有删除

技巧

1.删除全部内容

命令为:ggdG

其中,gg为跳转到文件首行;dG为删除光标所在行以及其下全部行的内容;

再细讲,d为删除,G为跳转到文件末尾行;

  1. 定位到第一行: 1 + shift + G

  2. 定位到最后一行:shift + G

  3. 定位到第x行: x + shift + G

相关文章
相关标签/搜索