程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Vim常见的四种模式

balukai 2025-02-14 22:15:42 文章精选 5 ℃

Vim帮助文档的快键键是:vimtutor

普通模式(Normal mode)

vim打开进入的就是普通模式
vim从其他模式进入普通模式按ESC键,可以多次按ESC

保存退出:shift zz  
代码格式优化:shift g  
光标的移动:
    H:←
    J:↓
    K:↑
    L:→
    行首:0,^:移动到行首的非空白字符
    行尾:$, g_:移动到行尾的非空白字符
    头部:gg
    尾部:G
    一行中的单词移动:
        w/W移动到下一个word/WORD开头
        e/E移动到下一个word/WORD结尾
        b/B移动到上一个word/WORD开头
        word指的是以非空白符分割的单词
        WORD指的是以空白符分割的单词
    一行中的搜索的字符移动
        f{char} 移动到char字符上,F是从行尾往前搜索
        t{char} 移动到char字符前,T是从行尾往前搜索
        分号(;)向后继续搜索
        逗号(,)向前继续搜索
    当前行向下移动N行,N+Enter
    定位:行数 + G
    H:移动屏幕的顶部
    M:移动到屏幕的中间
    L:移动到屏幕的底部
    ctrl + u:向上翻页
    ctrl + f:向下翻页 
    zz:让光标的所在行成为屏幕的中间行

删除操作
    删除光标前一个字符:X
    删除光标后的一个字符:x
    删除光标后的一单词:dw
    删除光标前的字符串:d0
    删除光标后的字符串:d$ 或者 D
    删除当前行:dd
    删除当前光标行下的多行:行数 + dd
    删除当前光标后的字符至指定的字符:dt + 指定的字符
    
撤销:u
反撤销:ctrl + r
复制:
    一行:yy
    多行:行数 + yy
粘贴:
    小p粘贴到光标的下一行
    大P粘贴到光标的上一行
    粘贴系统粘贴板中的内容:"+p
    
匹配:
    *:向前匹配光标所在的单词
    #:向后匹配光标所在的单词

插入模式(Insert mode)

vim从普通模式切换到插入模式
    a:从光标后开始插入
    A:从光标所在行的行尾插入
    i:从光标前开始插入
    I:从光标所在行的行首插入
    o:光标下面创建新的一行
    O:光标上面创建新的一行
    s:删除光标盖住的字符
    4s:删除4个字符,并进入插入模式
    S:删除光标所在的行
    gi:从普通模式快速切换到上次编辑的位置,并进入插入模式
    r:替换单个字符,并进入插入模式
    R:一直替换字符
    cw:删除单词,进入插入模式
    C:删除一行进入插入模式
    ct+字符:删除到指定的字符,并进入插入模式,和dt+字符用法相似
    

删除操作:
    删除光标前一个字符:ctrl + h
    删除光标前一个单词:ctrl + w
    删除光标所在当前行:ctrl + u

命令行模式(Command line mode)

进入命令模式的方式
    执行命令: :键
    搜索命令:/和?键
    过滤命令:!键
注:vim执行完命令行就会返回普通模式

保存退出:wq == x
保存不退出:w
退出:q
退出不保存:q
:e!: 放弃修改,重新加载
:e file 在同一个vim窗口加载file文件
:set paste 原格式粘贴

替换:
substitute 命令允许我们查找并且替换掉文本,并且支持正则式
:[range]s[ubstitute]/{pattern}/{string}/[flags]
    range 表示范围比如:10,20表示10-20行,%表示全部
    pattern是要替换的模式,string是替换后文本
flags:
    g(global)表示全局范围内执行
    c(confirm)表示确认,可以确认或者拒绝修改
    n(number)报告匹配到的次数而不替换,可以用来查询匹配次数
案例:
    替换光标所在行:
        :s/old/new/gc
    替换多行:
        :n1,n2 s/old/new/gc
        n1,n2表示行数
    替换当前文档:
        :% s/old/new/gc
    统计单词的个数:
        :% s/word//n
    匹配完成的单词:
        :% s/\/new/g

分屏:
    水平分屏:sp
    垂直分屏:vsp
    退出:q
    分屏之间切换:ctrl + ww
    退出所有:qall
    保存所有:wall
    退出保存所有:wqall
    分屏另一个文件:sp/vsp filename
    同时给多个文件水平分屏:vim -o[filenumber] filenames
    同时给多个文件垂直分屏:vim -O[filenumber] filenames

可视模式(Visual mode)

调用的快捷键:v
复制:y
删除:d
粘贴:
    小p:粘贴到光标的后面
    大P:粘贴到光标的前面
替换:
    r:替换光标覆盖的当前字符(一个)
    R:替换光标覆盖的当前字符串(多个)
    
行之间的选择:使用大v进入
最近发表
标签列表