配置高效的VIM开发环境

vim是一款功能强大的通用编辑器,它提供了一组丰富的命令,成为众多用户的编辑器首选。本文将介绍vim中默认未被启用但仍然十分有用的命令。虽然我们可以在每个vim会话中单独启用这些命令,但本文的目的是创建一个开箱即用的高效率开发环境,所以建议将这些命令配置在vim配置文件中。

在开始之前

这里讨论的命令或配置属于vim启动配置文件vimrc,这个文件位于用户主目录中。可以按照以下说明在vimrc中设置命令:

(注意:在Linux上,vimrc文件也被用于系统范围的配置,例如/etc/vimrc或/etc/vim/vimrc。在本文中,我们只考虑存在于用户主目录中特定于用户的vimrc。)

在Linux上:

  • 使用vi $HOME/.vimrc打开文件;
  • 将末尾给出的命令输入或复制/粘贴到文件中;
  • 保存并关闭(:wq)。

在Windows上:

  • 首先,安装gvim;
  • 打开gvim;
  • 单击Edit --\u0026gt; Startup settings,打开_vimrc文件;
  • 将末尾给出的命令输入或复制/粘贴到文件中;
  • 单击File --\u0026gt; Save。

现在让我们深入研究各个vi命令。这些命令可以分为以下几类:

  1. 缩进和Tab;
  2. 显示和格式化;
  3. 搜索;
  4. 浏览和滚动;
  5. 拼写;
  6. 杂项。

1. 缩进和Tab

自动对齐文件中行的缩进:

set autoindent

智能缩进使用了代码语法和样式来对齐:

set smartindent

提示:vim具有语言感知功能,并根据文件中所使用的编程语言提供了默认的设置,让工作更高效。有很多默认配置命令,包括axs cindent、cinoptions、indentexpr等,这里就不做进一步的介绍。syn是一个有用的命令,用于显示或设置文件语法。

设置Tab的空格数量:

set tabstop=4

设置“移位操作”(例如“\u0026gt;\u0026gt;”或“\u0026lt;\u0026lt;”)的空格数量:

set shiftwidth=4

如果你更喜欢使用空格而不是制表符,那么在按下Tab键时将插入空格。对于依赖制表符而不是空格的语言(如Python)这可能是个问题。对于这种情况,你可以根据文件类型来设置这个选项。

set expandtab

2. 显示和格式化

要显示行号:

set number

\"\"

在文本超过最大宽度时换行:

set textwidth = 80

根据距离右边的列数来换行:

set wrapmargin = 2

在遍历文件时识别括弧的起始和结束位置:

set showmatch

\"\"

3. 搜索

在文件中高亮显示搜索关键词:

set hlsearch

\"\"

进行增量搜索:

set incsearch

\"\"
搜索时忽略大小写(很多用户选择不使用这个命令,不过可以在你认为有用时设置它):

set ignorecase

在设置了ignorecase和smartcase并且搜索关键字包含大写字母时,搜索时不考虑ignorecase:

set smartcase

例如,如果文件中包含:

test
Test

当设置了ignorecase和smartcase,搜索“test”会找到并突出显示test和Test。搜索“Test”只突出显示或只找到第二Test。

4. 浏览和滚动

为了获得更好的视觉体验,你可能更喜欢将光标放在中间的位置而不是第一行。设置下面的选项可以将光标位置设置为第5行。

set scrolloff = 5

例如:

第一张图像的scrolloff = 0,第二张图像的scrolloff = 5。

\"\"

提示:如果你设置了nowrap,那么set sidescrolloff会非常有用。

在vim屏幕底部显示永久的状态栏,用于显示文件名、行号、列号等:

set laststatus = 2

\"\"

5. 拼写

vim有一个内置的拼写检查器,在编辑文本和些代码时非常有用。vim会识别文件类型并检查代码注释的拼写情况。可以使用以下命令打开英语拼写检查:

set spell spelllang = en_us

6. 杂项

禁用备份文件:如果启用了这个选项,vim将为上一次编辑创建备份。如果你不想要这个功能,请像下面那样将其禁用。备份文件的文件名末尾有个波浪号(~)。

set nobackup

禁用交换文件:如果启用了这个选项,vim会创建一个交换文件,直到你开始编辑文件。在发生崩溃或冲突时,交换文件用于恢复文件。交换文件是隐藏文件,以.开头,并以.swp结尾。

set noswapfile

假设你需要在同一个vim会话中编辑多个文件,并在它们之间切换。问题是,工作目录通常是你打开第一个文件的那个目录。所以,将工作目录自动切换到正在编辑的文件所在的目录是很有用的。可以启用这个选项:

set autochdir

vim维护了一个撤消历史记录,允许你撤消更改。默认情况下,历史记录只在文件打开时处于活动状态。vim通过了一个非常好用的特性,即使在文件关闭后也可以维护撤消历史记录,这意味着即使在保存、关闭和重新打开文件后,你仍然可以撤消更改。撤消文件是隐藏文件,扩展名为.un~。

set undofile

设置声音警报铃声(如果你试图滚动超过行尾,会发出警告):

set errorbells

如果你愿意,还可以设置视觉警报:

set visualbell

一些额外的tips

vim提供了长格式和短格式命令,都可用于设置或取消设置。

autoindent命令的长格式:

set autoindent

autoindent命令的短格式:

set ai

查看命令的当前设置,并且不改变当前的设置值,请在命令末尾添加问号:

set autoindent?

要取消或关闭命令,在命令前面加上no前缀(对大部分命令适用):

set noautoindent

可以只为一个文件设置命令,而不是全局。要做到这个,需要打开文件并输入冒号:,然后跟上set命令。这个配置只对当前文件编辑会话有效。

\"\"

查看命令帮助:

:help autoindent

\"\"
注意:本文列出的命令针对Linux上7.4版本(2013年8月10日)的Vim和Windows上8.0版本(2016年9月12日)的Vim进行了测试。

备忘单

在vimrc文件中复制/粘贴这些命令:

\u0026quot; Indentation \u0026amp; Tabsset autoindentset smartindentset tabstop=4set shiftwidth=4set expandtabset smarttab\u0026quot; Display \u0026amp; formatset numberset textwidth=80set wrapmargin=2set showmatch\u0026quot; Searchset hlsearchset incsearchset ignorecaseset smartcase\u0026quot; Browse \u0026amp; Scrollset scrolloff=5set laststatus=2\u0026quot; Spellset spell spelllang=en_us\u0026quot; Miscellaneousset nobackupset noswapfileset autochdirset undofileset visualbellset errorbells

英文原文:https://opensource.com/article/18/9/vi-editor-productivity-powerhouse

个人常用vim的IDE开发环境2015最新版。。 vim的快捷键和常用插件都已配好。。 支持cscope ctag,扩展工具栏,支持各类代码跳转查看。可以完全替代sourceinsight 支持自动编译输出窗口 支持代码符号定义快速预览窗口,需要生成完cscope数据库,按Fx键启用,具体哪个 忘了。。 = = 内置tab自动完成和提示,c/c++成员。声明提示。风格配色比较清新简洁。 字体采用courier new,space 4对齐 右边有buffer栏,函数符号栏, 可以按f2切换到文件树列表 f3 f4:大小写格式化 从F1 按到 f12 会有意外发现哦。。你可以一个个试过来。。哈哈。。 安装简单: 需要提前安装好 vim gvim/mvim cscope ctag 然后解压在当前目录 执行 install 就行了。。 windows下安装只需要吧 windows目录下的文件覆盖过去就好 macosx上是 mvim 哦。。 sourceinsight的代码查看功能启用,按下工具栏某个生成符号数据库的图标,就行了,各类跳转和搜索都有图标,快速使用。 注意:gvimvim 必须在源码目录下打开才行,他只会查找当前目录下的所有代码来生成。。 安装完 右击代码文件 系统右键菜单有个script菜单项 的gvim 可以在当前目录下打开代码文件。。 打开一个就可以管理整个工程了。。其他的文件拖进来。。 或者通过f2的目录树访问。。 还有隐藏插件 需要自己按快捷键启用 自己摸索吧。。 比如 文件搜素 图表绘制 matrix动画 。。。 一些集成好的常用插件: 1. tabbar符号列表 2. buffer当前打开文件列表 3. 文件树列表 4. cscope, ctags集成,可进行符号跳转,引用跳转,头文件跳转等。。 5. autotab自动补全 6. c/c++符号提示 7. 静态语法检测 8. 快速翻译 9. 注释绘图 10. 还有好多其他的,暂时想不起来的。。自己摸索吧。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值