专栏首页北京马哥教育史上最全VIM使用手册
原创

史上最全VIM使用手册

vim是一个向上兼容于vi的文本编辑器,可用于编辑各种纯文本。它对编辑程序特别有用。 基本模式: 编辑模式:默认编辑文件进入的模式 输入模式: 末行模式:内置的命令行接口 基本使用: # vim [options] [file ..] +#:打开文件后,直接让光标处于第#行的行首; +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行;

模式转换: 编辑模式:默认模式

编辑模式 -> 输入模式:

i:insert,在光标所在处输入;
a: append,在光标在处后方输入;
o:在光标所在处的下方打开一个新行;
I:在光标所在行的行首输入;
A:在光标所在行的行尾输入;
O:在光标所在处的上方打开一个新行;
                                
输入模式 -> 编辑模式
    ESC键
                                
编辑模式 -> 末行模式
    :键
                                
末行模式 -> 编辑模式
    ESC键

关闭文件: 1.编辑模式下:

ZZ:保存并退出;
ZQ:不保存直接退出;

2.进入末行模式:

:q  退出
:q!  强制退出,不保存此前的编辑操作
:wq  保存并退出;
:w, :q
:x  保存并退出;
:w /PATH/TO/SOMEFILE 保存到指定文件

命令模式光标跳转 光标跳转:

字符间跳转

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

现在直接上下左右键

COMMAND:跳转由#指定的个数的字符;

单词间跳转

w:下一个单词的词首; e:当前或后一个单词的词尾; b:当前或前一个单词的词首;

COMMAND:跳转由#指定的个数的单词;

行首行尾跳转

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

行间跳转

G:跳转至由#指定的行;

1G, gg:第一行; G:最后一行;

句间跳转:

) 下一句 ( 上一句

段间跳转

} 下一段 { 上一段

翻屏:

Ctrl+f:向文件尾翻一屏 Ctrl+b:向文件首部翻一屏 Ctrl+d:向文件尾部翻半屏 Ctrl+u:向文件首部翻半屏 Enter:按行向后翻 当前页跳转:

H:页首 M:页中间行 L:页底 zt:将光标所在当前行移到屏幕顶端 zz:将光标所在当前行移到屏幕中间 zb:将光标所在当前行移到屏幕底端

vim的编辑命令: 字符编辑:

默认模式

x:删除光标所在处的字符;
#x:删除光标所在处起始的#个字符;
xp:交换光标所在处的字符与其后面的字符的位置;
    替换命令(replace):
r:替换光标所在处的字符;
    rCHAR
~:大小写切换

删除命令:

编辑模式删除

d:删除命令,可结合光标跳转字符,实现范围删除;
d$:删除光标所在位置到行尾的字符;
d^:删除光标所在位置到非空行首的字符;
d0:删除光标所在位置到行首的字符;

dw:删除光标所在位置到下个单词词首的字符
de:删除光标所在位置到当前单词或下个单词词尾的字符
db:删除光标所在位置到当前单词或上一个单词单首的字符
#COMMAND:

D:等同于d$
dd:删除光标所在处的行;
#dd:删除光标所处的行起始的共#行;

粘贴命令(p, put, paste):

编辑模式粘贴

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

复制命令(yank, y):

编辑模式复制

y:复制,工作行为相似于d命令;
y$:复制光标所在位置到行尾的字符
y^:复制光标所在位置到非空行首的字符
y0:复制光标所在位置到行首的字符
            
ye:复制标所在位置到当前单词或下个单词词尾的字符
yw:复制光标所在位置到下个单词词首的字符
yb:复制光标所在位置到当前单词或上一个单词单首的字符
#COMMAND
                
yy:复制一整行
#yy:复制#行

改变命令(change, c):

编辑模式 --> 输入模式,实现删除操作;

c$:删除光标所在位置到行尾的字符并且切换为输入模式;
c^:删除光标所在位置到非空行首的字符并且切换为输入模式;
c0:删除光标所在位置到行首的字符并且切换为输入模式;
            
cb:删除光标所在位置到当前单词或上一个单词单首的字符并且切换为输入模式;
ce:删除光标所在位置到当前单词或下个单词词尾的字符并且切换为输入模式;
cw:删除光标所在位置到下个单词词首的字符并且切换为输入模式;
#COMMAND
                
cc:删除光标所在的行,并且切换为输入模式;
#cc:删除#行并且切换为输入模式;

其它编辑操作:

可视化模式:

选定字符

v:按字符选定;
V:按行选定;
    
结合编辑命令使用:d, c, y
    
撤销(undo)操作:
    u:撤销此前的操作;
    #u:撤销此前的#个操作;
                
撤销此前的撤销:
    Ctrl+r
            
重复执行前一个编辑操作:
    .
vim自带的练习教程:vimtutor

vim末行模式: 内建的命令行接口

(1) 地址定界

:start_pos[,end_pos]
#:特定的第#行,例如5即第5行;
.:当前行;
$:最后一行;
#,#:指定行范围,左侧为起始行,右侧为结束行;
#,+#:指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7
.,$-1:范围为当前行指倒数第二行
1,$:范围为第一行至最后一行
%:全文
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;
/first/,$:从光标所在处起始,第一次由pat1匹配到的行开始,至最后一行中间的所有行
/pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;
        
可同编辑命令一同使用,实现编辑操作:
    d:地址定界后接d实现删除该定界范围内的行
    y:地址定界后接d实现复制该定界范围内的行
    c:地址定界后接d实现替换该定界范围内的行并且切换为输入模式
        
    w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;
    r  /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;

(2) 查找

模式匹配查找

/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配的所有字符串;
?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
n:下一个,与命令方向相同;
N:上一个,与命令方向相反;

(3) 查找并替换

s:末行模式的命令;
使用格式:
    s/要查找的内容/替换为的内容/修饰符
    要查找的内容:可使用正则表达式;
    替换为的内容:不能使用正则表达式,但可以引用;
    如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;
    直接引用查找模式匹配到的全部文本,要使用&符号;
修饰符:
    i:忽略大小写;
    g:全局替换,意味着一行中如果匹配到多次,则均替换;
                
    可把分隔符替换为其它非常用字符:
            s@@@
            s###
            
示例:
    %s@\<t\([[:alpha:]]\+\)\>@T\1@g
    %s@\<t[[:alpha:]]\+\>@&er@g

vim的多文件功能: 多文件:

vim FILE1 FILE2 ...
        
在文件间切换:
    :next  下一个
    :prev  上一个
    :first   第一个
    :last   最后一个
        
退出所有文件:
    :wqall 保存所有文件并退出;
    :wall
    :qall

多窗口:

窗口分割

-o:水平分割窗口
-O:垂直分割窗口

在窗口间切换:Ctrl+w, ARROW
    
注意:单个文件也可以分割为多个窗口进行查看:
    Ctrl+w, s:水平分割窗口
    Ctrl+w, v:垂直分割窗口

定制vim的工作特性: 注意:在末行模式下的设定,仅对当前vim进程有效;

永久有效:
    全局:/etc/vimrc
    用户个人:~/.vimrc
    
1、行号
    显示:set number, 简写为set nu
    取消显示:set nomber, 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
    
获取帮助:
    :help
    :help subject
好啦!今天的分享到这里就结束了,如果需要更多的技术性问题,可以直接访问马哥教育官网欧!每天都会有大量优质内容与大家分享!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 我的linux运维日记,比较下学习与工作。

    从事运维一年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题,今天想简单整理一下,主要有以下几点: 1.线上操作规范 测试使用 ...

    小小科
  • 【基础拾遗】编辑器之神-VIM

    在这天地间,流传这两大神器的故事:据说Emacs是神的编辑器,而Vim是编辑器之神。正所谓,工欲善其事,必先利其器。今天就和大家分享一下关于编辑器之神Vim的传...

    小小科
  • 如何接手一个新业务的运维工作

    如何接手一个新业务的运维工作?有些东西我们还是要把话说在前面,以免前期不明确造成后期工作的混乱。

    小小科
  • vi 常用命令行

      a) 一般模式: vi 处理文件时,一进入该文件,就是一般模式了.   b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作。等按...

    疯狂的技术宅
  • NotePad++中如何把横向闪烁光标( _ )修改成竖向闪烁光标样式( | )?

    当我们在写代码时出现的光标闪烁(横线闪烁),在键盘上找 Insert ,按这个Insert就可以把横向闪烁光标( _ )修改成竖向闪烁光标样式( | ),横向光...

    黑泽君
  • Linux 学习笔记(1) 查看文件内容

    cat filename |grep key1 |grep key2 |grep key3

    披头
  • vim使用命令详解

    x 删除光标所在字母(其实是光标后) X删除光标前所在字母) dw删除一个单词,光标要在当前单词的第一个字符前面 u 撤销操作 d0删除光标前面的字符 ...

    Y大宽
  • Linux常用命令速查-Vim

    Java学习录
  • ViEmu的vi-vim编辑器教程

    http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

    SeanCheney
  • vim 快捷键技巧总结

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。vi是...

    阳光岛主

扫码关注云+社区

领取腾讯云代金券