Linux之编辑器vim配置

Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我今天教大家把vim改装成一个简易IDE, 说它"简易"是界面上看起来"简易", 但功能绝对不比一个好的IDE差, 该有的功能都有, 不该有的功能也有, 下面开始介绍今天的工作.

本文会教你:
1. 中文帮助手册的安装

2. 语法高亮

3. 在程序中跳来跳去: Ctags 的使用

4. 教你高效地浏览源码 -- 插件: TagList

5. 文件浏览器和窗口管理器 -- 插件: WinManager

6. 实现括号的代码补齐

eg:文中说的一些路径, 比如:
~/.vim/plugin
~/.vim/doc
~/.vim/syntax
如果你没有, 就自己创建(在自己的工作目录下创建).
文中说到的.vimrc文件都是指 ~/.vimrc(Vim本身的系统配置文件夹是在/usr/share/vim/和/etc/vim/两个文件夹下。一般情况下,我们不会去改变这两个文件夹下的配置文件,而是在用户文件夹/home/user(其中,user为用户名,我的用户名是yangle)下建立自己的配置文件。使用 $cd ~ 切换到用户文件夹,$touch .vimrc文件,在其中添加自己风格的配置

一. 中文帮助手册的安装

vim中文帮助文档tar包下载地址:
http://sourceforge.net/projects/vimcdoc/files/vimcdoc/
解压后其中有个doc文件夹, 将其中的内容全部复制到~/.vim/doc, 或者vim安装目录下的doc目录中, 此时vim中的help信息已经是中文的了.

二. 语法高亮

~$ gedit .vimrc
注:使用gedit主要是为了方便大段大段的文字粘贴!
然后把下面的文字拷贝进这个文件之后保存:

" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
 debian.vim

" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
set nocompatible

" Vim5 and later versions support syntax highlighting. Uncommenting the
" following enables syntax highlighting by default.
if has("syntax")
  syntax on            " 语法高亮
endif
colorscheme ron        " elflord ron peachpuff default 设置配色方案,vim自带的配色方案保存在/usr/share/vim/vim72/colors目录下

" detect file type
filetype on
filetype plugin on

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
set background=dark

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
  "have Vim load indentation rules and plugins according to the detected filetype
  filetype plugin indent on
endif

" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.

"set ignorecase        " 搜索模式里忽略大小写
"set smartcase        " 如果搜索模式包含大写字符,不使用 'ignorecase' 选项。只有在输入搜索模式并且打开 'ignorecase' 选项时才会使用。
set autowrite        " 自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
set autoindent        " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置
"set smartindent        " 智能对齐方式
set tabstop=4        " 设置制表符(tab键)的宽度
set softtabstop=4     " 设置软制表符的宽度    
set shiftwidth=4    " (自动) 缩进使用的4个空格
set cindent            " 使用 C/C++ 语言的自动缩进方式
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s     "设置C/C++语言的具体缩进方式
"set backspace=2    " 设置退格键可用
set showmatch        " 设置匹配模式,显示匹配的括号
set linebreak        " 整词换行
set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去
"set hidden " Hide buffers when they are abandoned
set mouse=a            " Enable mouse usage (all modes)    "使用鼠标
set number            " Enable line number    "显示行号
"set previewwindow    " 标识预览窗口
set history=50        " set command history to 50    "历史记录50条


"--状态行设置--
set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行
set ruler            " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。

"--命令行设置--
set showcmd            " 命令行显示输入的命令
set showmode        " 命令行显示vim当前模式

"--find setting--
set incsearch        " 输入字符串就显示匹配点
set hlsearch 
注:配置文件中,以单个双引号开头的文字为注释。
保存文件之后,启动Vim。此时,Vim已经显示语法高亮效果了。

三.在程序中跳来跳去: Ctags 的使用

(1)到http://ctags.sourceforge.net/下 载ctags源码ctags-5.8.tar.gz
http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz
(2)解压并安装
tar zxvf ctags-5.8.tar.gz
cd ctags-5.8
./configure && make && make install
(3)使用
建立源码索引,比如需要查看库函数源代码,而这些代码放在/usr目录下
那么在终端进入到该目录后,输入命令ctags -R ,你会发现多了一个tags文件,这个就是索引文件

向vim注册索引文件tags的路径,
$ vi ~/.vimrc
在打开文件的最后添加如下内容(当然,具体路径根据你自己的情况)
"--ctags setting--
" 按下F5重新生成tag文件,并更新taglist
map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
set tags=tags
set tags+=./tags "add current directory's generated tags file
set tags+=/usr/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)
set tags+=./tags表示在当前工作目录下搜索tags文件
set tags+=/usr/tags表示在搜寻tags文件的时候,也要搜寻~/usr/文件夹下的tags文件。
然后保存并退出vi。这样,你就可以用vim在任意地方查看有关库函数原形

查看printf函数
把光标停留在printf上然后按 Ctrl+W + ],vi会自动跳到Linux系统函数printf()处,这时我们能查看printf()的原形
查看完了,按Ctrl+o(回到上一个标签) 就回到原来的地方

四.教你高效地浏览源码 -- 插件: TagList
下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到~/.vim/plugin。一般刚开始时工作目录下是没有.vim文件夹的,所以自己创建一个.vim就行了,方法跟windows下创建文件夹的方法一样。
点击此链接下载:http://www.vim.org/scripts/script.php?script_id=273
完成后在在.vimrc 中添加如下三条指令:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
进入vim后用命令":Tlist"打开/关闭taglist窗口
效果如图

五.文件浏览器和窗口管理器 -- 插件: WinManager
解压winmanager.zip,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到~/.vim/plugin
点击此链接下载:http://www.vim.org/scripts/script.php?script_id=95
完成后在.vimrc 中添加下面两行指令:
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>

常用命令
:WMToggle 打开/关闭WinManage,不过我们在配置文件.vimrc中做了快捷键映射,所以直接按wm就可以打开/关闭WinManage
文件浏览器命令(在文件浏览器窗口中使用)
或双击 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
刷新列表
- 返回上一层目录
c 使浏览目录成为vim当前工作目录
d 创建目录
D 删除当前光标下的目录或文件
i 切换显示方式
R 文件或目录重命名
s 选择排序方式
r 反向排序列表
x 定制浏览方式, 使用你指定的程序打开该文件
winmanager帮助文档
:help winmanager
netrw帮助文档
:help netrw
六.实现括号的代码补齐
~$ gedit .vimrc
直接在.vimrc 中添加以下指令并保存
:inoremap <S-ENTER> <c-r>=SkipPair()<CR>
:inoremap <S-SPACE> <ESC>la
:inoremap <C-ENTER> <ESC>A;<CR>
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { <c-r>=ClsoeBrace()<CR>
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap ;; <ESC>A;<CR>

function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endf
function Semicolon()
"echo getline('.')[col('.')]
if getline('.')[col('.')] == ')'
return "<ESC>A;"
elseif getline('.')[col('.')] == '}'
return "\<ESC>A;"
elseif getline('.')[col('.')] == ']'
return "\<ESC>A;"
else
return ";"
endif
endf
function SkipPair()
if getline('.')[col('.') - 1] == ')'
return "\<ESC>o"
else
normal j
let curline = line('.')
let nxtline = curline
while curline == nxtline
if getline('.')[col('.') - 1] == '}'
normal j
let nxtline = nxtline + 1
let curline = line('.')
continue
else
return "\<ESC>i"
endif

endwhile
return "\<ESC>o"
endif
endf
function ClsoeBrace()
if getline('.')[col('.') - 2] == '='
return "{}\<ESC>i"
elseif getline('.')[col('.') - 3] == '='
return "{}\<ESC>i"
elseif getline('.')[col('.') - 1] == '{'
return "{}\<ESC>i"
elseif getline('.')[col('.') - 2] == '{'
return "{}\<ESC>i"
elseif getline('.')[col('.') - 2] == ','
return "{}\<ESC>i"
elseif getline('.')[col('.') - 3] == ','
return "{}\<ESC>i"
else
return "{\<ENTER>}\<ESC>O"
endif
endf


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值