vim专业使用
Macros
对于临时的复杂操作,可以使用宏。这里举例一下
- 浏览模式下按 q
- 选择一个 mark, 比如 e
- 开始记录批量操作
- 按 q 退出宏记录
- :echo @e 或者:reg @e 可以查看宏记录
- 编辑修改:打开新的 vim,“ep, 编辑修改,复制,“eyy
- 列出所有的宏::reg
- 清除指定宏::let @e=‘’
相关资料
VimScript
vim本身提供一种脚本语言,帮助进行个性化操作。
相关资料
- Tutorial: vimscript
- Vimscript functions cheatsheet
- VimScript 五分钟入门(翻译) - 知乎
- Five Minute Vimscript
- Vim documentation: usr_41
场景一:繁琐内容处理
我比较喜欢在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()
使用说明
- vim内:命令模式输入
Ir
- 终端内:
vim -c 'Ir' <target_file>