为 PostgreSQL 开发配置 Vim
这里有一些笔记和技巧,可以帮助你开始使用 Vim 进行 PostgreSQL 开发。
一些推荐的 ~/.vimrc 选项
开启语法高亮
syntax on
将制表符宽度设置为 4 个字符,以匹配代码风格
set tabstop=4
你可以突出显示第 80 列,以查看你的代码是否符合每行 80 个字符的限制
set colorcolumn=80 highlight ColorColumn ctermbg=52
这里第二行定义了该列的颜色。52 代表深红色。你可以将其更改为你喜欢的颜色。
推荐的插件
Pathogen,一个简单的插件管理器
Vim 需要一个插件管理器来添加插件。 pathogen 是一个简单的管理器。 你可以从你的操作系统仓库安装它(对于 Debian 来说,它是 vim-pathogen 包),或者按照网站上的说明进行安装。 安装后,你应该将以下内容添加到你的 ~/.vimrc
文件中,并创建一个 ~/.vim/bundle
目录。 将所有 Vim 插件放在 bundle
目录中,它们将自动加载。
execute pathogen#infect()
to your ~/.vimrc
file and create a ~/.vim/bundle
dir. Put all the vim plugins in the bundle
dir, they will be loaded automatically.
Filestyle,突出显示样式错误
Filestyle 允许突出显示错误的缩进、尾随空格和过长的行。 你可以 从 git 安装它。
要使其突出显示不符合 PostgreSQL 代码风格的代码,请将以下几行添加到 ~/.vimrc
中
set textwidth=80
这将使 filestyle 突出显示超过 80 个字符的行尾。
let g:filestyle_ignore_patterns = ['^\t* \{1,3}\S']
这将使 filestyle 不突出显示末尾有 1 到 3 个空格的缩进。 这在 PostgreSQL 代码风格中是可接受的。
如果你使用的是 Vim 的终端版本,你也应该添加这行
highlight Normal ctermbg=16
这是一种奇怪的技巧,是 filestyle 所需的,我不完全理解,但它使用终端颜色数字设置背景颜色,其中 0 和 16 代表黑色,15 代表白色。 如果你使用其他颜色,请自己找到合适的值…
Lastplace,返回你之前编辑过的地方
如果你喜欢从你之前退出 Vim 时编辑过的位置开始编辑文件,lastplace 插件适合你。 只需安装它。
Localvimrc,为不同的项目使用不同的 Vim 配置
如果你在同一台电脑上开发不同的项目,你可能不想在其他项目中使用 PostgreSQL 特定的 Vim 配置选项。 那么你可能需要 localvimrc 插件。 只需安装它,并将 .lvimrc
文件放在 PostgreSQL 项目目录(或其上级目录)中,并将所有 PostgreSQL 特定的 Vim 选项放在其中。 Vim 只有在你从 PostgreSQL 目录加载它时才会使用这些选项。
更多推荐
ctags
Ctags 是一种工具,它索引 C(不仅仅是 C 代码),以允许编辑器通过按一些热键来跳转到函数源代码。
在 PostgreSQL 代码中,有一个名为 src/tools/make_ctags
的脚本,它会自动为所有代码构建 ctags 索引。 你应该从代码源的根目录运行它。
$ src/tools/make_ctags
要运行它,你需要安装 ctags
工具(对于 Debian 来说,它在 exuberant-ctags 包中)。
你可能还需要将 tags
添加到 .gitignore
文件中,因为 ctags 会在代码中的每个目录中创建一个 tags
文件,最好让 git 忽略它们。
运行 make_ctags
后,你就可以通过按 Ctrl+]
来跳转到函数源代码。
旧内容
在 Developer_FAQ 文章中,有以下推荐
- 对于 Vim,一个更好的方法是通过 Pathogen 或 Vundle 安装 localvimrc,然后在你的 PostgreSQL 目录中添加一个 .lvimrc 文件,其中包含
" Works best with vimrc entries (otherwise localvimrc will complain): " let g:localvimrc_sandbox = 0 " let g:localvimrc_whitelist = "/path/to/postgres/tree/.*" " if g:localvimrc_sourced_once_for_file finish endif au BufNewFile,BufRead *.[ch] setlocal noexpandtab autoindent cindent tabstop=4 shiftwidth=4 softtabstop=0 cinoptions="(0,t0"
这里没有解释任何东西,并且并非所有选项都已移至本文并进行解释。 也许你会发现这个例子有用。 也许你能够将这个未解释的例子的所有项目移至本文并添加解释。