美文网首页
vim操作指南

vim操作指南

作者: cendechen | 来源:发表于2018-09-23 11:09 被阅读0次

    . 重复上次更改
    * 正向查找字符串 # 反向查找
    ; 向后查找一行内相同的字符,, 向前查找
    % 跳转到于当前光标相匹配的括号上去 适用() [] {}

    退出 ZZ

    移动

    命令 功能说明 说明 对立命令
    h 移动 l
    j 移动 k
    w 移动word 光标word第一个字符 e
    b 移动word 光标word第一个字符 ge
    f 向右查找符合的字符 F
    t 在当前行上向右查找字符,把光标停留在字符的上一个位置 T

    插入

    命令 功能说明 说明 对立命令
    i 当前光标之插入 a
    I 当前行第个字符插入 A
    o 当前行新启一行插入 O

    删除

    命令 功能说明 说明 对立命令
    c 删除并进入插入模式 后面跟范围 c$ cw
    d 只是删除,不进入插入模式
    x 删除一个字符
    J

    替换模式

    命令 功能说明 说明 对立命令
    R 进入替换模式
    gR 进入虚拟替换模式 按照屏幕实际现实宽度来替换
    r 替换一个字符然后又回到普通模式
    gr 替换一个字符虚拟替换模式又回到普通模式

    可视模式

    是指vim分别用于操作字符文本,行文本或块文本,可视模式有三个子模式,支持相互切换

    命令 功能说明 说明 对立命令
    v 激活面向字符的可视模式
    V 激动面向行的可视模式
    ctrl+v 激动面向列的可视化模式
    gv 重选上次的高亮选区
    o 切换其活动端点
    U 在可视化模式下转换为大写
    u 可视模式下转换为小写

    格式化

    命令 功能说明 说明 对立命令
    < 左移动 >
    = 自动格式化

    CTRL 命令

    命令 用途
    ctrl + h 删除前一个字符
    ctrl + w 删除前一个单词
    ctrl + u 删除至行首
    ctrl + [ 切换到普通模式
    ctrl + o 切换到插入-普通模式
    ctrl + g 在可视模式和插入模式来回切换
    ctrl +w 分别为删除至上一个单词的开头和行首
    ctrl + d 会让vim现实补全列表,用tab会遍历提示,shift+tab会反向遍历提示

    命令模式

    : 切换到命令模式

    命令 简写 功能说明 说明 对立命令
    :write 写文件
    :edit 新编辑文件
    :split 窗口分割
    :prev :next
    :bprev :bnext
    :copy :t :[range]copy {address} 把指定范围拷贝到{address}所指定的行之下
    :move :m :[range]move {address} 把指定范围移动到{address}所指定的行之下
    :normal 执行普通模式命令
    :delete :d :[range]delete [x] 删除指定范围到寄存器X中
    :yank :y :[range]yank [x] 复制指定范围的行
    :put :[line]put [x] 在指定的行后粘贴寄存器x中的值
    :s :[range]s/{pattern}/{string}/[flags] :substitute
    :g :[range]g/{pattern}/{cmd}

    :[number] 会被识别为行号
    :{start},{end} 会被识别为一个范围
    可视化模式选择行,切换命令行输入
    地址偏移:{address}+n
    address 行号、位置标记、查找模式
    . 当前行

    范围选择语法

    符号 地址
    1 文件第一行
    $ 文件最后一行
    0 虚拟行,位于文件第一行上方
    . 光标所在行
    'm 包含位置标记m的行
    '< 高亮选择的起始行
    '> 高亮选择的结束行
    % 整个文件

    重复命令

    命令 说明
    @: 重复上次ex命令, :寄存器缓存的最后一条命令,再次支持需要@@
    @@
    ctrl+r 复制光标下的单词
    ctrl+w 映射项目会复制光标下的单词到命令行

    移动

    G 会把光标定位到由命令计数指定的行上 33G 移动到33行上 没有计数G 会把光标移动到最后一行
    gg 移动到第一行
    50% 把光标移动到文件的50%的样子
    H 当前显示页的最首行
    M 当前显示页的中间行
    L 当前显示页的最尾行
    Ctrl+G 显示当前行位置
    :set number 显示行号
    :set ruler 显示当前光标和位置
    CTRL+U 使文本向下滚动半屏
    CTRL+D 将窗口向下移动半屏幕
    CTRL+E/Y 向上/向下滚动
    CTRL+F/B 向前滚动一整屏
    zz/t/b 把当前行移动到屏幕中央/顶端/底部

    set hlsearch
    `` 回跳到起跳点
    CRTL+O 跳转到你更早停留光标的位置
    CRTL+I 跳转到后来停留光标的更新位置
    :jumps 命令记录跳转位置
    m a 将当前光标下的位置记录为a a-z 一共有26个自定义
    要跳转命令 `{mask} {mask}就是我们设置标记名字
    :marks 列出所有标记

    第四章小幅改动

    d命令 后面跟移位命令 将删除从当前光标到移位符号终点的文本
    c命令 与d命令类似,不过删除后,光标置于insert模式
    dd 可以删除一整行
    cc 命令可以改变整行,任然保持原来的缩进
    x = dl X = dh D = dC = c s = cl S = cc

    r 不是一个操作命令符,它等待你键入下一个字符用以替换当前光标下的那个字符。
    5rx 直接替换 光标开始的5个字符
    r<enter> 删除当前字符,插入一个换行符

    重复改动 . 命令 会重复你做出的所有修改,
    v 使编辑模式进入visual line模式, 按 esc 推出visual模式
    ctrl + v 进入 visual block模式
    o 命令让visual 模式下 光标去另一头 在矩形文本内容选择时, 有4个角, 0可以让你到对角线上去
    p/P 在光标之后/之前插入数据
    xp 删除这个字符 然后插入字符后面
    y 操作符命令会把文本复制到一个寄存器中,然后用p命令把它取回来
    y2w 复制两个单词
    yy 复制一整行
    Y 也是复制一整行
    y$ 复制当前到行后
    在y和p命令前加一个 *号 是把当前内容放到剪切板里面 和从剪切板里面取出来
    daw aw是一个文本对象
    aw is as 文本对象,可以用操作符号加文本对象

    R 让vim 进取repalce模式, 再此模式下,每个键入的字符都会替换掉当前光标下的字符,直到你潜入esc结束模式
    ~ 改变光标下的字符的大小写

    制定你的VIM

    :$MYVIMRC 打开已经有的自定义配置文件

    语法亮色

    终端上颜色代码0表示暗色,1表示亮色, 而2位数字的颜色代码中
    十位数字4表示背景色,3表示前景色, 个位数字0表示黑色,1为红,2为
    绿,3黄4蓝5紫6 青,7为白。以;分隔不同的项,m结束一个定义,如
    echo -e "\e[1;32mthis is green \e[0;37m"
    会显示亮绿色。然后恢复为暗白色

    :syntax enable 打开彩色
    :syntax reset
    :syntax clear
    :syntax off
    :set filetype 设置文件类型
    :set background=dark
    :set background=light
    :colorscheme evening 颜色主题

    多文件编辑

    :edit 文件名 重新打开文件
    :write 保存文件
    :hide edit 文件名 隐藏当前文件,不关闭 打开新文件
    vim 文件1 文件2 文件3
    :next 切换文件
    :wnext 先保存 再切换
    :args 查看当前编辑的文件
    :previous 移动到前一个文件
    :wprevious 保存移动到前一个文件
    :last 移动到最后一个文件
    :first 移动到第一个文件
    :set autowrite 自动存盘
    ctrl+^ 切换文件
    ctrl+o 跳转到文件较早位置
    ctrl+i 跳转到文件较后位置
    :marks M 文件标记

    :set backup 设置文件备份
    :set backupext = .bak 设置文件备份的后缀
    :set patchmode=.orig 保存原始文件

    :write >> logfile 将文件集中写道文件中
    :saveas move.c 文件另存为重新命名
    :file move.c文件重新命名

    窗口分割

    :split [filename] 分割窗口, 支持:3split filename 按照三等分
    crtl+W 切换选中
    :close/:quit/ZZ 关闭当前选中窗口
    :only 会关闭除了现在选择的窗口的其他窗口
    :new 打开一个新窗口,编辑
    :vnew
    :vsplit 垂直分割
    :qall 关闭所有
    :wall 保存所有
    vim -o filename1 filename2 filename3 多窗口打开

    vimdiff 比较两个文件的差异
    :vertical diffsplit filename 垂直打击比较两个文件的差异
    :vertical diffpatch filename 对文件执行patch,补丁会打到文件的副本上,文件本身不得修改

    ]c 直接向前跳转到下一个不同之处
    [c 直接向后跳转到下一个不同之处
    dp 当对比两文件不一直时候 把另外一个文件的内容放到这个文件来
    do

    大幅改动

    命令注册(宏)

    1. q{register} 注册后续动作记录到进名为{register}的寄存器中,给出的寄存器名字必须是a到z
    2. 执行你的操作
      3 按下q结束对命令的记录
    3. @{register} 来调用对刚刚命令的运行功能
      注意: 按下了 @a 第二次重复执行 只需要按下@@
      修改寄存器的东西
    命令 内容
    G 移动到文件最后
    o<ESC> 生成新的一行
    "np 将寄存器n的内容置于改行,你会该命令像你键入普通文本一样
    {edits} 修改错误部分逻辑
    O 到行首
    ”ny$ 将正确的结果回存到寄存器n中
    dd 删除这行草稿

    现在可以用 @n来回放正确的命令宏

    追加命令
    qC 寄存器名字变成大写,就是向已经存在的寄存器中追加命令
    替换
    :[range]substitute/from/to/[flags] 该命令将由[range]指定的行中的字符,“from”替换成“to”
    substitute 命令的缩写是 s
    [range]
    不指定.默认替换当前行 % = 1,直接所有行, 1,5 一到5行 使用正则表达式,/^begin/,/end/ 以begin 开始的,以end结束
    使用模式 /^begin/+2 以begin开始的位置 下移动2行 -1 上移动一行
    使用标签 't,'b 在标签t和b之间
    visual模式下,输入: 就会自动补全 选择范围'<,'>
    '< 表示上次visual模式的开始区域的 '> 是结束区域 '>,$ 上次visual结束地方到文件末尾
    .,.+4 当前行到当前行+4
    [flags] p 列出最后一行被改变的行 c 确认标识符

    全局命令
    :[range]global/{pattern}/{command} g 是global的缩写的命令
    g+//+s/foobar/barfoo/g 命令是替换所有以//开始的行里面的 foobar 替换成barfoo

    VISUAL BLOCK
    ctrl+v 进入block模式
    然后移动光标来调整选择区域,按下I 插入文本,推出insert模式,奇迹般的插入了多行
    A 追加文本
    c 改变文本
    ~ 交换大小写
    U 小写转换大写
    u 大写转换为小写
    rx 以x字符填充字符
    </> 左/右移动 :set shiftwidth=4 移动的宽度
    J 链接句子

    读写部分文件
    :read filename 当前文件追加到该行之后
    :read filename 在文件的尾部追加文件 写入指定文本 :write filename :.,write tempo 把当前行到结束写入tempo文件中
    如果tempo文件存在,可以给:.,$write! tempo 来执行
    :write >> collertion 追加文件

    格式文本
    :set textwidth=72 设置一行最多72个字符
    gq ap 格式化当前文件
    gg gq G 格式化从第一行到最后一行
    gu gU 改变大小写 guw 改变后面一个word的大小写

    过滤器

    ! 启动一个过滤器
    !5G 移动1到5行 !5Gsort 执行排序 sort 是liunx的排序程序
    !! 过滤当前行

    读取命令输出

    :read !ls 读取当前目录的
    :write !wc 写入wc的结果

    ctrl+L 重新绘制屏幕

    奇技

    qq 开始录制,后续的操作记录在名为q的宏中
    ${操作}
    :wnext
    q 停止宏记录
    @q 执行名为q的宏
    999@q对其余文件执行同样的操作
    :%/([^,]),(.)/\2 \1/ 单词换位置

    相关文章

      网友评论

          本文标题:vim操作指南

          本文链接:https://www.haomeiwen.com/subject/cepocftx.html