我使用vim在ruby和python中编码,我的vimrc有一个设置可以轻松输入断点:
au FileType python map <silent> <leader>b oimport ipdb; ipdb.set_trace()<esc>
au FileType python map <silent> <leader>B Oimport ipdb; ipdb.set_trace()<esc>
au FileType ruby map <silent> <leader>b orequire 'pry'; binding.pry<esc>
au FileType ruby map <silent> <leader>B Orequire 'pry'; binding.pry<esc>
但是,偶尔我会得到错误的命令,例如在ruby文件中的ipdb,我必须重新启动vim.可能是什么问题呢?
解决方法:
问题是您在全局定义映射.
解决方案很简单:添加< buffer>你的映射的参数,以使它们“缓冲本地”.
au FileType python map <buffer> <silent> <leader>b oimport ipdb; ipdb.set_trace()<esc>
au FileType python map <buffer> <silent> <leader>B Oimport ipdb; ipdb.set_trace()<esc>
au FileType ruby map <buffer> <silent> <leader>b orequire 'pry'; binding.pry<esc>
au FileType ruby map <buffer> <silent> <leader>B Orequire 'pry'; binding.pry<esc>
请参阅:help< buffer>.
也:
>您应该使用:nmap或:nnoremap而不是:map.首选:nnoremap.
>您应该将这些行包装在自动命令组中并重置它们,以防止在重新获取vimrc时自动命令堆积:
augroup python
autocmd!
autocmd FileType python nnoremap <buffer> <silent> <leader>b oimport ipdb; ipdb.set_trace()<esc>
autocmd FileType python nnoremap <buffer> <silent> <leader>B Oimport ipdb; ipdb.set_trace()<esc>
augroup END
augroup ruby
autocmd!
autocmd FileType ruby nnoremap <buffer> <silent> <leader>b orequire 'pry'; binding.pry<esc>
autocmd FileType ruby nnoremap <buffer> <silent> <leader>B Orequire 'pry'; binding.pry<esc>
augroup END
原文地址:https://codeday.me/bug/20190609/1201752.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。