在击键时插入(mac)vim中的代码行,用于pdb

Sjo*_*erd 11 python vim macvim pdb

我正在寻找用leaderpMacvim中的键击插入一行代码的方法

我想插入以下代码行:

import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

可能不是python土地中前所未闻的代码行

Mag*_*eno 11

我使用一个简单的映射(没有函数)到领导者p:

nnoremap <leader>p oimport pdb; pdb.set_trace()<Esc>
Run Code Online (Sandbox Code Playgroud)

当按o时,这进入插入模式,在当前的一个(带o)之后插入一个空行然后输入import pdb; pdb.set_trace(),最后它返回到正常模式(带Esq).


如果要在当前行之前插入代码,请用O替换o:

nnoremap <leader>p Oimport pdb; pdb.set_trace()<Esc>
Run Code Online (Sandbox Code Playgroud)

或者你可以为领导者shift-p设置这个:

nnoremap <leader><S-p> Oimport pdb; pdb.set_trace()<Esc>
Run Code Online (Sandbox Code Playgroud)

  • 我使用了这个答案的变体来插入当前行以上并使用相同级别的缩进,而不管任何缩进插件:`nnoremap <leader> p yyP ^ Cimport pdb; pdb.set_trace()^ [`(^ C不是"control-v C",它只是"^",然后是"C"). (2认同)

Spe*_*bun 6

为什么不试试vimpdb插件?或者,如果您正在寻找片段功能,那么supertabsnipmate插件的组合效果很好.


Bit*_*oet 5

这可能不是最好的vimscript,但它确实是你想要的!:-)只需将它放在你的.vimrc中,你可以用领导者p调用它.

map <Leader>p :call InsertLine()<CR>

function! InsertLine()
  let trace = expand("import pdb; pdb.set_trace()")
  execute "normal o".trace
endfunction
Run Code Online (Sandbox Code Playgroud)