Dav*_*ain 14 python vim pep8 python-mode
我正在使用(梦幻般的)Vim插件python-mode,其中包括pep8 linter.该:PyLint命令运行所有链接并在QuickFix窗口中打开错误.
现在,让我们假设我只使用pep8 linter,并且我有一个充满错误的QuickFix窗口.我想逐步解决这些错误并应用自动修复(类似于autopep8).autopep8工具很棒,但它会出错.理想情况下,我希望能够监督Vim中的每个修复(应用修复,检查,转到下一个修复).
我目前的方法是在我的Python文件上运行autopep8,对结果进行差异,然后修复任何不良更改:
$ autopep8 --in-place spam.py
$ git difftool spam.py # check edits in gVim, write to file
$ git commit spam.py -m "Fix bad PEP8 formatting"
Run Code Online (Sandbox Code Playgroud)
然而,这种方法破坏了我的撤消历史,似乎不必要地复杂.有没有更好的办法?
有没有办法自动将pep8修复程序(如果可用)应用于QuickFix窗口中的pep8错误?
有两个简单的答案不会消除您的撤消历史记录.
我DiffWithSaved很久以前在网上发现了这个功能,它非常有用.在这种情况下,你可以在终端中运行autopep8,当Gvim要求重新加载文件时,选择no然后运行这个函数,它会弹出一个带有你新文件的暂存缓冲区,并允许你改变它.
" copy this to your vimrc or source it
" tells vim not to automatically reload changed files
set noautoread
function! DiffWithSaved()
let filetype=&ft
diffthis
vnew | r # | normal! 1Gdd
diffthis
exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
endfunction
" sets up mappings to function
com! DiffSaved call DiffWithSaved()
map <Leader>ds :DiffSaved<CR>
Run Code Online (Sandbox Code Playgroud)
运行后,您可以使用vim copy-diff和其他diff命令快速完成并接受/不接受更改.此外,所有内容都将存储在撤消历史记录中.
" run these commands after sourcing the above function
" % expands to filename (also %:h to head, %:t to tail)
" if it throws an error, just do :cd %:h first
:!autopep8 --in-place %
:DiffSaved
Run Code Online (Sandbox Code Playgroud)
difftool并重新加载文件如果你想在git索引中使用文件进行区分(并使用git的difftool),你可以执行以下操作:
选项1
好处:
缺点:
diff功能.选项2
好处:
缺点:
| 归档时间: |
|
| 查看次数: |
6554 次 |
| 最近记录: |