gpt4 book ai didi

vim - 在 VIM 中使用 Uncrustify

转载 作者:行者123 更新时间:2023-12-03 23:36:34 25 4
gpt4 key购买 nike

在我的 vimrc 中,我通过以下命令调用 Uncrustify:

%!uncrustify -l CPP -c D:\uncrustify\default.cfg

之后在一些代码上我得到一个 Windows fatal error :

但是,当我使用 -f 选项在控制台中的同一代码上调用 uncrustify 时,没有错误。

如何更改我的 vimrc 以避免将来出现此类错误?什么可以引发此错误?

最佳答案

为了将 Uncrustify 与 Vim 正确集成,请将以下内容添加到您的 .vimrc :

" Restore cursor position, window position, and last search after running a
" command.
function! Preserve(command)
" Save the last search.
let search = @/

" Save the current cursor position.
let cursor_position = getpos('.')

" Save the current window position.
normal! H
let window_position = getpos('.')
call setpos('.', cursor_position)

" Execute the command.
execute a:command

" Restore the last search.
let @/ = search

" Restore the previous window position.
call setpos('.', window_position)
normal! zt

" Restore the previous cursor position.
call setpos('.', cursor_position)
endfunction

" Specify path to your Uncrustify configuration file.
let g:uncrustify_cfg_file_path =
\ shellescape(fnamemodify('~/.uncrustify.cfg', ':p'))

" Don't forget to add Uncrustify executable to $PATH (on Unix) or
" %PATH% (on Windows) for this command to work.
function! Uncrustify(language)
call Preserve(':silent %!uncrustify'
\ . ' -q '
\ . ' -l ' . a:language
\ . ' -c ' . g:uncrustify_cfg_file_path)
endfunction

现在,您可以将此函数 ( Uncrustify) 映射到键组合,也可以使用我使用的方便技巧。创建文件 ~/.vim/after/ftplugin/cpp.vim您可以在其中覆盖任何 Vim 设置,特别是针对 C++ 的设置,并在其中添加以下行:
autocmd BufWritePre <buffer> :call Uncrustify('cpp')

这基本上添加了一个预保存 Hook 。现在,当您使用 C++ 代码保存文件时,Uncrustify 将使用您之前提供的配置文件自动对其进行格式化。

例如,Java 也可以这样做:在 ~/.vim/after/ftplugin/java.vim 中添加:
autocmd BufWritePre <buffer> :call Uncrustify('java')

你明白了。

注意 : 这里介绍的所有东西都经过我的充分测试和每天使用。

关于vim - 在 VIM 中使用 Uncrustify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12374200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com