当我在PHP文件中点击<leader>r
时,我想这样做:
nnoremap <leader>r ifile_put_contents(ini_get('error_log'), '');<cr>error_log(print_r(, true));<esc>
但是当我在JS文件中执行<leader>r
时,我想这样做:
nnoremap <leader>r iconsole.log();<esc>
我怎么能这样做?
我还想将光标放在console.log/print_r
内。知道如何做到这一点吗?
答案 0 :(得分:2)
您可以使用自动寻线并仅映射到缓冲区。这是一个例子:
augroup quick_debug
autocmd!
autocmd FileType php nnoremap <buffer> <leader>r ifile_put_contents(ini_get('error_log'), '');<cr>error_log(print_r(, true));<esc>
autocmd FileType javascript nnoremap <buffer> <leader>r iconsole.log();<esc>
augroup END
要移动光标,您可以在<left>
之前使用<right>
和<esc>
。像这样:nnoremap <buffer> <leader>r iconsole.log();<left><left><esc>
。
如果您不介意使用插件,可以查看UltiSnips并使用代码段代替映射。
答案 1 :(得分:2)
您可以通过预先:autocmd Filetype {filetype} ...
来定义某些文件类型,然后将其放入~/.vimrc
。但是,当您为各种文件类型添加映射和其他设置时,这会变得难以处理。最好将命令放入~/.vim/ftplugin/{filetype}_mappings.vim
。 (这要求您拥有:filetype plugin on
。)