vim专业使用

Macros

对于临时的复杂操作,可以使用宏。这里举例一下

  1. 浏览模式下按 q
  2. 选择一个 mark, 比如 e
  3. 开始记录批量操作
  4. 按 q 退出宏记录
  5. :echo @e 或者:reg @e 可以查看宏记录
  6. 编辑修改:打开新的 vim,“ep, 编辑修改,复制,“eyy
  7. 列出所有的宏::reg
  8. 清除指定宏::let @e=‘’

相关资料

VimScript

vim本身提供一种脚本语言,帮助进行个性化操作。

相关资料

场景一:繁琐内容处理

我比较喜欢在idea里面写markdown文档,但是idea格式化mdbook的include语法时会出现问题, 自动添加空格导致语法失效。

这里自己写了一个vimscript解决这个问题,正好举例如何使用。

代码内容

function! MdbookIncludeSyntaxFormatInWholeBuffer()
    let include_replace = {
      \ '{{ #': '{{#',
      \ '# include': '#include',
      \ 'include\.\.': 'include\ \.\.',
      \ '\/ ': '\/',
      \ ' \/': '\/',
      \ ': ': ':',
      \ ' }}': '}}'
    \ }
    let l = 1
    for line in getline(1,"$")
        if stridx(line,  'include') > -1
            let replaced_line = line
            for [substitute_key, substituted] in items(include_replace)
                "echo l.replaced_line
                "echo l.substitute_key.substituted
                "call setline(l, substitute(line, substitute_key, substituted, "g"))
                let replaced_line = substitute(replaced_line, substitute_key, substituted, "g")
            endfor
            call setline(l, replaced_line)
        endif
        let l = l + 1
    endfor
    "保存文件
    write
    "退出vim
    exit
endfunction
"将会在source的时候直接执行
"call AddSpaceBeforeEqualInWholeBuffer()
"source之后将会自定义一个指令
command Ir call MdbookIncludeSyntaxFormatInWholeBuffer()

使用说明

  1. vim内:命令模式输入Ir
  2. 终端内:vim -c 'Ir' <target_file>