VIM编辑器1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VIM编辑器1相关的知识,希望对你有一定的参考价值。

VIM编辑器vi improved

vi:visual interface

vim +/PATTERN f1 打开文件后光标处于第一个被匹配到PATTERN的行的行首,n键跳到下一个,即支持正则匹配

vim +n f1  直接打开f1文件并且将光标定位在第n行

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

vim -d f1 f2...  比较多个文件

vim -m f1  以只读方式打开文件

ex f1 或vim -e f1  直接进入ex模式


vi +/^user passwd

//vi或vim支持正则表达式匹配,即打开passwd文件并将光标定位在匹配到以user开头的行


vim的模式:

命令模式(normal):默认打开模式,移动光标,剪切粘贴删除等

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

扩展命令模式(extended command):保存,退出,帮助,:号后加命令

可视模式(visual):块选择操作

ESC键,退出当前模式。按两次ESC键,返回到命令模式

i:insert,光标前插入

I:在光标所在行首插入

a:append,光标后插入

A:在光标所在行尾插入

o:在光标所在行的下方插入新行

O:在光标所在行的上方插入新行


锁定和解锁:ctrl+s,ctrl+q

扩展模式:

:q  退出

:q!  强制退出不保存修改

:wq  保存退出

:x  保存退出

:r f2  读取f2的文件内容到当前光标的下一行

:w f3  将当前编辑内容写入到另一个文件中

!cmd  执行命令并显示,回车退出

r!cmd  读取命令的输出到当前光标的下一行

:方向键  可以上下选择vi的历史命令,操作同bash,支持的快捷键操作^w,^u,^e


命令模式:

ZZ:保存退出

ZQ:不保存退出

hjkl:左下上右移动

#cmd:3h向左移动3个字符

w:下一个单词词首

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

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

#cmd:3w向下跳转3个单词

H:跳转到当前页页首  M:页中  L:页底

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

0:跳转至行首,注意是数字零

$:跳转至行尾

#G或者:#  :跳转至指定行,3G第三行,:10第10行

shift+3:即#号,匹配光标处的单词,并高亮显示文件中的所有相同的单词,n键跳转

G:最后一行

1G,gg:第一行

):下一句 (:上一句。句子以.隔开

}:下一段 {:上一段。段落以空行隔开

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

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

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

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

x:删除光标处的字符

#x:删除光标处之后的#个字符

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

~:转换大小写

r:替换光标所在处的1个字符,3r三个字符

R:完全替换模式,ESC退出

d:删除范围,可配合方向键hjkl删除当前行和同方向行

d$:删除到行尾

d^:删除到非空行首

d0:删除到行首

dw,de,db

dd:删除行,3dd向下删除3行

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

y:复制,y$,y0,y^,ye,yw,yb

yy:复制行,Y复制整行

p:小写,若为行粘贴则是粘贴在当前光标所在行的下方;若为文本则粘贴在光标的后面

P:大写,若为行粘贴则是粘贴在当前光标所在行的上方;若为文本则粘贴在光标的前面

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

c$,c^,c0,cb,ce,cw

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

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


100iroot[ESC]粘贴root 100次

0y$:组合命令:0-移到行首,y-从这里开始复制,$-复制到本行的最后一个字符

ye:从当前位置复制到本单词的最后一个字符

gU:变大写

gu:变小写


扩展命令模式:以:为命令开始,显示在左下角,以下:均省略,不再说明

#,#:3,9:从第3行到第9行

#,+#:3,+4:从第3行到第7行

.:当前行

$:最后一行  .,$-1:当前行到倒数第二行

%:全文,相当于1,$


vim支持正则表达式,在扩展命令模式下

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

#,/pat/ , /pat/,$

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

d,y,w,r

w f3:将指定范围内的行另存到指定文件中

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

vim +/usera passwd  直接跳转至usera的行

:/^bin/,/^halt/y   复制以bin开头,以halt结尾的行

/word:从光标处向下查找

?word:从光标处向上查找

n:与命令同方向  N:与命令反方向

s/查找的内容/替换的内容/修饰符 :查找并替换

s/root/rooter/g

s/root/&er/g  同上,&表示引用前面查找到的内容

s/r..t/&er/g  简写,使用正则方式

s/r..t/user:&/g  正则

修饰符:i忽略大小写,g全局替换,gc全局替换,每次替换前询问

查找替换中的分隔符/可以替换为其他的字符,如#@+,方便替换路径,如:

[email protected]/[email protected]/[email protected] :将/etc替换为/var,全部替换

s#/boot#/#i :将/boot替换为/且忽略大小写

vi fstab

:%s/^#/*/  表示以#开头的行替换为以*开头

:1s/root/ROOT/g  替换第一行的root为ROOT

:1s/root/a&b/g

:%s/^#//  表示删除注释符#

:%s/^UUID/#&/

:%d  清空文件

:%[email protected]/dev/[email protected]/etc/[email protected]


命令模式:撤销更改

u:撤销最近的更改,3u撤销前3次

U:撤销此行的所有更改,条件为光标必须始终定位在此行,否则无效

ctrl+r:重做

.:重复一个操作

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


录制宏:命令模式下

qa  //开始录制宏,名称为a

操作编辑。。。  //开始操作

q  //退出编辑操作

@a  //运行宏a

@@  //重复执行宏


vim的寄存器:

有26个命名的寄存器(a,b,c...z)和1个无命名的寄存器

名称寄存器格式:"寄存器名称。放在数字和命令之间,如3"tyy 表示复制3行到t寄存器中

未指定名称,则使用无命名寄存器:3yy 表示复制三行到无命名寄存器中


有10个数字寄存器(0-9)0为最近复制,1为最近删除的内容。变更1转存到2,2转存到3,以此类推,数字寄存器不能在不同会话间共享。

格式:数字"寄存器命令,5"bdd,未指定则使用无命名寄存器4"y

3yy:复制3行

3"ayy:复制3行到a寄存器

"ap:粘贴a寄存器的内容


编辑二进制文件步骤:

dd if=/dev/zero of=b1 bs=1 count=6

hexdump b1

hexdump -C b1

vim -b b1

:%!xxd  切换为可读的十六进制

进行编辑二进制文件

:%!xxd -r  重新转换回二进制

:wq  保存退出


可视模式:

v 面向字符

V 面向行

ctrl+v 面向块

可视化键可用于与移动键结合使用,w,),},箭头等

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


多文件模式:

vim f1 f2 f3 ...

:next  下一个

:prev  前一个

:first  第一个

:last  最后一个

:wall  保存所有

:qall  退出所有

:wqall


多窗口:

vim -o f1 f2

o:水平分割,O:垂直分割

ctrl+w 窗口间切换

单文件窗口分割,重复打开当前文件,Windows下Ctrl+Tab切换,顺序为从上往下,从左往右。

:vs  左右

:sp  上下

Ctrl+ww  窗口切换,同Ctrl+Tab

Ctrl+wh  切换到左侧窗口,wl右侧窗口,wj向下,wk向上。hjkl左下上右

ctrl+w,s  水平分割,split

ctrl+w,v  垂直分割,vertical

ctrl+w,q  取消相邻窗口

ctrl+w,o  取消全部窗口

:wqall  退出


定制vim配置文件

全局/etc/vimrc,个人~/.vimrc

set [no]nu  行号

set [no]sm  括号成对匹配

set [no]ai  自动缩进

set [no]hlsearch  高亮搜索

set [no]ic  忽略字符大小写

syntax on[off]  语法高亮

set fileformat=dos  启用Windows格式

set fileformat=unix  启用unix格式


"设置文本宽度

:set textwidth=65

:set wrapmargin=15

:help option-list  查看所有选项列表

:set or :set all  查看所有set设置

:source %  使当前编辑的配置文件生效(可简写为:so %),编辑窗口不能关闭

vimtutor  命令行直接打开,可自由编辑,关闭后自动还原,用于练习vim命令

:e .  打开当前目录

:echo $MYVIMRC  显示vimrc配置文件的路径

:source $MYVIMRC

nmap ,ev :e $MYVIMRC<cr>  定义快捷键编辑vimrc

:tabedit $MYVIMRC  新开标签页

:tabclose  关闭当前标签页

nmap ,ev :tabedit $MYVIMRC<cr>  通过快捷键,ev在新标签打开vimrc配置文件


通过设置统一的快捷键首mapleader来实现组合多个功能操作

"--------------Mappings---------------"

let mapleader = "," 

nmap <leader>ev :tabedit $MYVIMRC<cr>

nmap <leader><space> :nohlsearch<cr>

nmap <leader>w :w<CR>


"自动加载vimrc文件

augroup autosourcing

        autocmd!

        autocmd BufWritePost _vimrc source %  自动加载vimrc文件

augroup END


"窗口切换,ctrl+j向下,ctrl+k向上,ctrl+h向左,ctrl+l向右

nmap <c-j> <c-w><c-j>

nmap <c-k> <c-w><c-k>

nmap <c-h> <c-w><c-h>

nmap <c-l> <c-w><c-l>


"设置tab键为4个空格

set ts=4

set expandtab

set autoindent


本文出自 “rackie” 博客,请务必保留此出处http://rackie386.blog.51cto.com/11279229/1931946

以上是关于VIM编辑器1的主要内容,如果未能解决你的问题,请参考以下文章

vim编辑器的高级使用

20170410 --- Linux备课资料 --- vim的使用

Vim求生手册,让你离“Vim党”更近一步!

linux学习之shell编程基础

vim基本命令

iptables编辑