.cshrc .vimrc

来源:互联网 发布:android调用js方法 编辑:程序博客网 时间:2024/06/02 02:16

不同的公司有不同的setting,但是总体都是类似的。走过三家公司,环境脚本一家比一家复杂,第一家应届毕业时热心员工Ida为我设置的,就记得她把.vimrc.cshrc等一通拷贝到我的home目录,然后,然后就没有然后了,来不及研究我迅速投入到自己维护的正式模块中去了。第二家没有印象了,感觉设置也不困难,节奏比第一家慢多了,但是入职时候把好多时间精力放在研究各个模块Spec上。第三家就是现在,入职时候用心了一把,现把各个IC相关Setting记录如下:

1.      .cshrc

2.      VIM 相关设置 .vimrc

3.      ctags相关设置

.cshrc 文件

.cshrc表示用户运行csh这个shell时的一些配置信息,每开一个terminal就会被执行一次。跟IC相关的是:

1.path  Shell 的环境变量,最重要的就是PATH

通常path和PATH的区别是path内容通过空格隔开,而PATH是“:”隔开

set path = ($tmp_path  /usr/bin)

set path = ( $tmp_path )

 

在 Shell 有所谓的环境变量,当我们在 shell 中执行指令时,这些环境变量可能会被该程序用来判断程序所要执行时的参数。例如,我们在执行 cal 这个指令时,我们不必打它的绝对路径 /usr/bin/cal,因为shell 会自动依照 PATH 这个环境变量所设定的路径去找我们所输入的指令。您可以使用下列指令来看目前PATH 这个变量的内容:

echo $PATH

/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin

如果您使用 tcsh,您也可以打 setenv 来看目前所有的环境变量。以下为一些常用的环境变量:

变量名称

描述

USER

目前所使用的使用者名称。

PATH

执行指令所要搜寻的位置,以冒号隔开。

SHELL

目前所使用的 Shell。

TERM

目前所使用的终端机模式。

OSTYPE

操作系统名称。

MACHTYPE

系统所使用的 CPU 架构。

PAGER

当需要分页时,所要使用的分页软件,如 more 或 less。

EDITOR

预设所要使用的编辑器。

您也可以使用 setenv 来改变一个环境变量的值。例如,我们要将预设的文书编辑器改成ee,在 tcsh 中可以使用:

setenv EDITOR ee

如果您使用的是 Bourne Shell:

export EDITOR="ee"

 

注意IC各种tools的目录都要在哦,小到perlpathoy,matlab, 大到vcsVerdi DC ICC等等~

 

2. Set up C shell environment, especially prompt. 以前不明白prompt是个啥,原来意思就是你的terminal提示符,以前看人家的提示符超级酷和绚丽,现在咱也会弄了。看看下面例子是不是豁然开朗?

 

# Set up C shellenvironment:

 

          if ( $?prompt ) then          # shell is interactive.

             stty erase ^H kill ^U intr ^C susp ^Z

             set history=50              #previous commands to remember.

             set savehist=50            # numberto save across sessions.

             set system=`hostname` # name ofthis system.

             unset autologout

             alias setprompt 'set prompt="${system}:${cwd}[ \! ] --> "'

             alias cd 'chdir \!* && setprompt'        # reset prompt after change dir

             setprompt                              #to set the initial prompt

             endif

 

3.第三个最重要的是各种alias,下面是本人最常用的alias

alias g        "gvim "

alias h        "history"

alias ltr      "ls -ltr \!*"

alias ls       "ls -F"

alias proj9      "cd /vol/$USER/proj9/\!*"

alias out_rtl "cd out/linux_VCS/$PROJECT/tmp/src/rtl\!*"

 

这里牵扯到两个重要语法:

1.      $USER $PROJECT是环境变量,前者表示用户名,后者表示工程名称(这个通常是每个公司都有一个通用的脚本产生各种EDAtool的路径和环境变量)这样写通用性好,同事直接都可以互相copy

2.      \!*, 这个代表是说当前命令参数也被传递给当前的alias名称,例如你在terminal里面敲:out_rtl fifo/memory/

执行的结果是你进入了out/linux_VCS/project_name/tmp/src/rtl/fifo/memory,也就是说\!*(这里是fifo/memory/)也被传递到了aliasout_rtl里面

 

.gvimrc设置

下面是本人常用的设置,整个gvim打开后看起来赏心悦目 :-)

syntax on

set nu

set wrap

set incsearch

set ruler

set ignorecase

set autoindent

set showcmd

set bs=2

set history=50

colorscheme darkblue

augroup filetypedetect

au BufNewFile,BufRead *.sv      setfverilog

au BufNewFile,BufRead *.svp    setfverilog

au BufNewFile,BufRead *.svh    setfverilog

augroup END

 

ctags 设置

这个设置是我最费劲的,以前安装同事的邮件一步步很容易。现换了一个环境,再重建就不容易了。后来还是问了老同事+找本公司资深员工才解决的。

我不会从安装ctags工具开始说的J,注意这几点:

1.      Home目录下要设置.ctags文件(注意兼容systemverilog)

--langdef=systemverilog

--langmap=systemverilog:.svh.sv.svi.svp.inc.h

--language-force=systemverilog

--regex-systemverilog=/^[\t]*(virtual)?[ \t]*class[ \t]*([a-zA-Z_0-9]+)/\2/c,class/

--regex-systemverilog=/^[\t]*(virtual)?[ \t]*class[ \t]*`ext_class_name\(([a-zA-Z_0-9]+)\)/\2/c,class/

--regex-systemverilog=/^[\t]*module[ \t]*([a-zA-Z_0-9]+)/\1/m,module/

--regex-systemverilog=/^[\t]*program[ \t]*([a-zA-Z_0-9]+)/\1/p,program/

--regex-systemverilog=/^[\t]*interface[ \t]*([a-zA-Z_0-9]+)/\1/i,interface/

--regex-systemverilog=/^[\t]*(virtual)?[ \t]interface[ \t]*([a-zA-Z_0-9]+)[ \t]*([a-zA-Z_0-9]+)/\3/i,interface/

--regex-systemverilog=/^[\t]*typedef[ \t]+.*[ \t]+([a-zA-Z_0-9]+)[ \t]*;/\1/e,typedef/

--regex-systemverilog=/}(\w*_t);/\1/e,} /

--regex-systemverilog=/}(\w*_s);/\1/e,} /

--regex-systemverilog=/^[\t]*package[ \t]*([a-zA-Z_0-9]+)[ \t]*;/\1/i,} /

--regex-systemverilog=/^[\t]*(parameter|localparameter)[ \t]*([a-zA-Z_0-9]+)[ \t]*=[ \t]*.*;/\2/i,} /

--regex-systemverilog=/^[\t]*`define[ \t]*([a-zA-Z_0-9]+)/\1/d,vmm_defined_macro/

--regex-systemverilog=/^[\t]*constraint[ \t]*([a-zA-Z_0-9]+)/\1/s,constraint/

--regex-systemverilog=/^[\t]*(virtual)?(import[ \t]+.*)?[ \t]*function[\t]+(automatic|void|byte|shortint|int|longint|integer|time|bit|logic|reg|shortreal|real|realtime)?[\t]*(([a-zA-A_0-9]+)[ \t]+)?(([a-zA-Z_0-9]+)[ \t]*::[ \t]*)?([a-zA-Z_0-9]+)[\t]*(\(|;)/\8/f,function/

--regex-systemverilog=/^[\t]*(virtual)?(import[ \t]+\".*\"[ \t]*)?[ \t]*task[\t]+(automatic)?[ \t]*(([a-zA-Z_0-9]+)[ \t]*::)?[ \t]*([a-zA-Z_0-9]+)[\t]*(\(|;)/\6/t,task/

--regex-systemverilog=/^[\t]*(protected|local|static)?[ \t]*(rand)?[\t]*(byte|shortint|int|longint|integer|time|bit|logic|reg|shortreal|real|realtime|supply0|supply1|tri|triand|trior|trireg|tri0|tri1|uwire|wire|wand|wor){1}[\t]*(signed|unsigned)?[ \t]*(\[.*\])?[ \t]*([-a-zA-Z_0-9]+)[ \t]*(\[.*\]| *= *.*)?[\t]*;/\6/i,} /

--regex-systemverilog=/^[\t]*(protected|local|static)?[ \t]*(rand|event|randc)?[ \t]*([a-zA-Z_0-9]+)[\t]+(#\(.*\))?[ \t]*([a-zA-Z_0-9]+)(\[.*\]| *= *.*)?[ \t]*;/\5/i,} /

--regex-systemverilog=/^[\t]*([a-zA-Z_0-9]+)[ \t]*([a-zA-Z_0-9]+)[ \t]*\(.*\)[ \t]*;/\2/i,} /

--regex-systemverilog=/^[\t]*([a-zA-Z_0-9]+)[ \t]*:[ \t]*assert[ \t]*property.*/\1/i,} /

--systemverilog-kinds=+ctfmpievds

 

2.      到你的目标目录生成tags索引(这里核心一点是你的ctags工具版本要够新,高人指点用module load  才解决)

 

ctags -R

3.      在你的.vimrc中加入这样一句(这样你无论在哪个目录里看文件跳转都不会报找不到tags文件的错误了):

set tags+=./tags

set tags+=/proj/jack/verif/pc/tb/ovm_tb/tags

 

如何使用?

Ctrl+ ]跳到光标所在函数或者结构体的定义处

Ctrl+ T返回查找或跳转(结果我的要用Ctrl+ O)

 

为什么CTRL+t不行?我是怀疑自己的Ctrl+T可能被占用了,所以在.gvimrc中加了这么一句:

map

这样我就Ctrl+b也可以返回了。

原创粉丝点击