我现在正在使用gvim来编写verilog代码。当我使用自动缩进全文功能(命令:gg = G)时,gvim开始自动缩进全文。但是,gvim可以识别" //开始"但无法识别" //结束",这会导致错误的代码缩进。例如(在输入命令gg = G之后):
always@(posedge iClk) begin
some codes.....
if(condition....) begin
some codes....
end
//if(condition..) begin
//some commented out codes...
//end
if(condition...) begin
some codes...
end
end
Gvim可以识别 // if(condition)begin 中的开始,并自动缩进下一行 //一些注释掉的代码...... < / strong>即可。但是当 //结束时,gvim会识别并对 // end 下面的所有代码进行错误的代码缩进。
有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:0)
这看起来像标准verilog缩进函数的错误,是runtime/indent/verilog.vim
标准vim分布的一部分。
在www.vim.org上搜索verilog缩进文件显示four options,其中包括一个标记为“修复veril缩进的错误修正:错误修正:以前的版本正在评估注释中的表达式”。你可以尝试那个,但它是最低评级的选项。你也可以试试GitHub。
答案 1 :(得分:0)
要添加到benjifishers answer,因为您没有指定缩进文件,将使用默认版本runtime/indent/verilog.vim
。
如果您还没有安装pathogen,我建议您这样做,它会切换语法&amp;缩进文件非常容易。
基本上它允许您将插件作为单个文件夹添加到~/.vim/bundle
中,这也意味着删除您不想要的插件就像删除单个文件夹一样简单。这在尝试语言插件时非常有用,否则它们通常需要放入文件:
~/.vim/ftdetect
~/.vim/ftplugin
~/.vim/indent
~/.vim/syntax
Verilog上的vim.org选项可能评分较低,因为它不支持SystemVerilog关键字。
我有SystemVerilog plugin我使用但不认为重新缩进功能是固定的。
我的基于nickjones verilog_systemverilog 正在开发的最新版本似乎是nachumk's systemverilog.vim。
注意:对于重新缩进,我在.vimrc中进行了此设置,从;g
重新缩进并保留文件中的当前位置。
"http://technotales.wordpress.com/2010/03/31/preserve-a-vim-function-that-keeps-your-state/
function! Preserve(command)
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
" Do the business:
execute a:command
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
map ;g :call Preserve("normal! gg=G")<CR>