vim小技巧

vim定时保存session

把如下代码保存为sess.vim

let g:sname = strftime('.session/%Y_%m_%d__%H_%M_%S.vim')
function! SaveSession(timer)
  if !isdirectory(".session")
    call mkdir(".session", "p", 0755)
  endif
  execute "mksession!" g:sname
endfunction
let timer = timer_start(180000, 'SaveSession', {'repeat':-1})

然后在vim中执行

source sess.vim

在json数组中跳转到端点的[]括号

va[
比如光标在d处,按下va[,可以跳转到[]上
[
{a:b},
{c:d}
]

delete hidden buffer

function DeleteHiddenBuffers()
    let tpbl=[]
    call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))')
    for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1')
        silent execute 'bwipeout' buf
    endfor
endfunction

然后

:call DeleteHiddenBuffers()

build from source

configure的命令

set -x
make distclean
export LD_LIBRARY_PATH=/tvm/python3.8-compile/python3.8/lib:${LD_LIBRARY_PATH}
export PATH=/tvm/python3.8-compile/python3.8/bin/:${PATH}
export LDFLAGS="-rdynamic"
#vi_cv_path_python=/home/like12/opt/python3.8/bin/python3.8
./configure --prefix=/tvm/vim-install/ --enable-python3interp=yes --with-python3-config-dir=/tvm/python3.8-compile/python3.8/lib/python3.8/config-3.8-x86_64-linux-gnu/ --with-python3-command=/tvm/python3.8-compile/python3.8/bin/python3.8

YouCompleteMe Python指定解释器,跳转到third-party库

在conda环境中比较有用
在你的项目下新建.ycm_extra_conf.py文件,指定解释器路径和third-party库

(torch2) like@a141:~/package/torchmo$ cat .ycm_extra_conf.py
def Settings(**kwargs):
  return {
    'interpreter_path': '/share_data/users/like/miniconda3/envs/torch2/bin/python',
    'sys_path': [
      '/share_data/users/like/miniconda3/envs/torch2/lib/python3.10/site-packages/'
    ]
  }

cscope重新加载数据库

:cs reset

python跳转到函数开始和class开始

[[
直接跳到最外层的class或者函数定义,连局部函数的定义都跳过
[m
只跳一次,到最内层函数定义

sipu 自定义文件 .su 被 vim 当作 cuda 文件语法处理

识别 .su 文件为 cuda

cat /data/like/vim-port-all/config/.vim/filetype.vim 
au BufNewFile,BufRead *.cl setf opencl
" sioriign su file as cuda file
au BufNewFile,BufRead *.su setfiletype cuda

增加关键字clusterDim clusterIdx

cat /data/like/vim-port-all/config/.vim/after/syntax/cuda.vim
" SiPU-specific CUDA-like built-in variables.
syntax keyword cudaVariable clusterDim clusterIdx

project local: hpp as cuda for sipu project(可选)

sikernel 会把 device code 写在hpp文件,device, blockIdx 等 cuda专属 keyword 在 .hpp 文件没有语法高亮
设置 project local .vimrc

augroup project_cuda_hpp
  autocmd!
  autocmd BufRead,BufNewFile *.hpp set ft=cuda
augroup END

并在根 .vimr 文件配置:

""" https://akrabat.com/using-vimrc-for-project-specific-settings/
"" vim 每个项目有自己的.vimr配置文件
set exrc
set secure
"" end vim 每个项目有自己的.vimr配置文件

注意:autocmd BufRead,BufNewFile .hpp set ft=cuda可以把hpp当作cuda, autocmd BufRead,BufNewFile .hpp setfiletype cuda没有作用,vim 仍旧显示hpp是cpp 文件,什么原因?
set ft=cuda是强制修改。setfiletype cuda, 先检测文件已经是cpp, 就不会覆盖了,除非原来没有检测到 filetype,再设置成 cuda.

Leave a Comment