windos到linux的適應:
Linux下編程一直被詬病的一點是: 沒有一個好用的IDE, 但是聽說Linux牛人, ***之類的也都不用IDE. 但是對我等從Windows平臺轉移過來的Coder來說, 一個好用的IDE是何等的重要啊, 估計很多人就是卡在這個門檻上了, "工欲。善其事, 必先利其器"嘛, 我想如果有一個很好用的IDE, 那些Linux牛人也會歡迎的. 這都是勞動人民的美好願望罷了, 我今天教大家把gvim改裝成一個簡易IDE, 說它"簡易"是界面上看起來"簡易", 但功能絕對不比一個好的IDE差, 該有的功能都有, 不該有的功能也有, 你就自己沒事偷着樂吧,總結起來就是“要什麼配置什麼”咯,下面我開始介紹今天的工作了:
1、我的初步配置界面:
2、今天的主要工作:
本文將教會
1. vim編程常用命令
2. 語法高亮
3. 在程序中跳來跳去: Ctags 的使用
4. 教你高效地瀏覽源碼 -- 插件: TagList
5. 文件瀏覽器和窗口管理器 -- 插件: WinManager
6. 自動補全
本文不會教你:
1. 如何使用vim. 本文不會從零開始教你如何使用vim, 如果你是第一次接觸vim,
建議你先看看其他的vim入門的教程, 或者在shell下輸入命令: vimtutor,
這是一個簡單的入門教程.
2. 編程技巧.
3. vim腳本的編寫.
提示: 首先,我的工作環境是centos 6.5,具體情況根據自己的環境來。
其次,文中的一些路徑:
~/.vim/plugin
~/.vim/doc
如果沒有就在自己的工作目錄下創建(創建之前查看是否有該目錄)
文中說到的.vimrc文件都是指 ~/.vimrc(Vim本身的系統配置文件夾是在/usr/share/vim/ 和/etc/vim/兩個文件夾下。因爲.vim是隱藏 文件,所以查看.vim 用命令:ls -a,一般情況下,我們不會去改變這兩個文件夾下的配置文件,而是在用戶文件夾/home/user(其中,user爲用戶名,我的用戶名是mgys)下建立自己的配置件。使用 $cd ~ 切換到用戶文件夾,$touch .vimrc文件,在其中添加自己風格的配置)
最後,對於不清楚過程中的解壓命令什麼的,自己查;
下面開始工作:
一、語法高亮(vim環境的基本配置)
首先查看自己的系統是否有vim,沒有再裝vim,裝好之後,接下來就是我們的工作,
(1)~$:vim ~/.vimrc
打開.vimrc文件,將下面文檔 複製(copy),粘貼(shift+insert),保存退出(wq);
" 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已經是這種效果了(語法高亮挺漂亮的)
(2)進入vim界面,便可發現如下界面:
在此之後沒有這種效果,可以再次打開.vimrc編輯添加下面命令:
if filereadable("/etc/vim/vimrc.local")
sourse /etc/vim/vimrc.local
endif
set nu
set nobackup
set cursorline
set ruler
set tabstop=4
set autoindent
if has("syntax")
syntax on
endif
保存退出重複上面過程。
二、在程序中跳來跳去: Ctags 的使用
ctags可以建立源碼樹的標籤索引(標籤就是一個標識符被定義的地方,如函數定義),使程序員在編程時能迅速定位函數、變量、宏定義等位置去查看原形,ctags其實就跟一棵樹一樣指引我們去某個路徑下找什麼東西;
(1)下載並安裝壓縮包:
下 載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(切換root)
(3)建立索引
建立源碼索引,比如需要查看庫函數源代碼,而這些代碼放在/usr目錄下
那麼在終端進入到該目錄後,輸入命令ctags -R ,你會發現多了一個tags文件,這個就是索引文件
建立索引之後就不要再移動ctags文件,否則查看原型時提示找不到ctags;查看自己建立的索引:
(4)添加索引tags的路徑
$ vim ~/.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在任意地方查看有關庫函數原形
(5)查看原型
進入vim,不進insert,將光標放在printf函數上摁ctrl+w+]即可看到函數原型如下:
查看完了,按Ctrl+o(回到上一個標籤) 就回到原來的地方。
(6)tag命令用法:
Ctrl+] 跳到當前光標下單詞的標籤
Ctrl+O 返回上一個標籤
Ctrl+T 返回上一個標籤
:tag TagName 跳到TagName標籤
以上命令是在當前窗口顯示標籤,當前窗口的文件替代爲包標籤的文件,當前窗口光標跳到標籤位置。如果不希望在當前窗口顯示標籤,可以使用以下命令:
:stag TagName 新窗口顯示TagName標籤,光標跳到標籤處
Ctrl+W + ] 新窗口顯示當前光標下單詞的標籤,光標跳到標籤處
:tselect TagName
輸入以上命令後,vim會爲你展示一個選擇列表。然後你可以輸入要跳轉到的匹配代號 (在第一列)。其它列的信息可以讓你知道標籤在何處被定義過。
以下命令將在預覽窗口顯示標籤
:ptag TagName 預覽窗口顯示TagName標籤,光標跳到標籤處
Ctrl+W + } 預覽窗口顯示當前光標下單詞的標籤,光標跳到標籤處
:pclose 關閉預覽窗口
三、教你高效地瀏覽源碼 -- 插件: TagList
作用:Taglist用於列出了當前文件中的所有標籤(宏, 全局變量, 函數名等)
(1)下載taglist_xx.zip並解壓完成
將解壓出來的doc的內容放到(mv filename.zip 目標路徑)~/.vim/doc;
將解壓出來的plugin下的內容拷貝到~/.vim/plugin。一般剛開始時工作目錄下是沒有.vim文件夾的;所以自己創建一個.vim就行了(有就不用了),方法跟windows下創建文件夾的方法一樣。
下載鏈接:
http://www.vim.org/scripts/script.php?script_id=273
(2)完成後在在.vimrc 中添加如下三條指令:
let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window=1 |
進入vim後用命令":Tlist"打開/關閉taglist窗口
完成如圖:
(3)taglist的常用使用命令:
<CR> 跳到光標下tag所定義的位置,用鼠標雙擊此tag功能也一樣 o 在一個新打開的窗口中顯示光標下tag <Space> 顯示光標下tag的原型定義 u 更新taglist窗口中的tag s 更改排序方式,在按名字排序和按出現順序排序間切換 x taglist窗口放大和縮小,方便查看較長的tag + 打開一個摺疊,同zo - 將tag摺疊起來,同zc * 打開所有的摺疊,同zR = 將所有tag摺疊起來,同zM [[ 跳到前一個文件 ]] 跳到後一個文件 q 關閉taglist窗口 <F1> 顯示幫助 |
可以用“:TlistOpen”打開taglist窗口,用“:TlistClose”關閉taglist窗口。或者使用“:TlistToggle”在打開和關閉間切換。
四、文件瀏覽器和窗口管理器 -- 插件: WinManager
作用:WinManager用於管理文件瀏覽器和緩衝區(buffer)。2.0以上版本的WinManager還可以管理其他IDE類型插件,不過要用戶在插件中增加一些輔助變量和hook來支持WinManager(幫助文檔有相關說明)。Taglist 插件本身就提供了對WinManager的支持,不需要我們去修改它。這裏,我們就用WinManager來管理文件瀏覽器netrw和標籤瀏覽器 Taglist。netrw是標準的vim插件, 已經隨vim一起安裝進系統裏了, 不需要我們自行下載安裝。
(1)解壓winmanager.zip並解壓
將解壓出來的doc的內容放到~/.vim/doc;
將解壓出來的plugin下的內容拷貝到~/.vim/plugin;
下載鏈接:http://www.vim.org/scripts/script.php?script_id=95
(2)完成後在.vimrc 中添加下面兩行指令:
let g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle<cr> |
注意:wm與:WMToggle<cr>之間有個空格
(3)同樣,進入vim,效果如下:
(4)常用命令
:WMToggle 打開/關閉WinManage,不過我們在配置文件.vimrc中做了快捷鍵映射,所以直接按wm就可以打開/關閉WinManage
文件瀏覽器命令(在文件瀏覽器窗口中使用)
或雙擊 如果光標下是目錄, 則進入該目錄; 如果光標下文件, 則打開該文件
如果光標下是目錄, 則進入該目錄; 如果光標下文件, 則在新窗口打開該文件
刷新列表
- 返回上一層目錄
c 使瀏覽目錄成爲vim當前工作目錄
d 創建目錄
D 刪除當前光標下的目錄或文件
i 切換顯示方式
R 文件或目錄重命名
s 選擇排序方式
r 反向排序列表
x 定製瀏覽方式, 使用你指定的程序打開該文件
winmanager幫助文檔
:help winmanager
netrw幫助文檔
:help netrw
五、實現括號的代碼補齊
~$ vim .vimrc
直接在.vimrc 中添加以下指令並保存
inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {}<ESC>i inoremap < <><ESC>i]])) |
完成後保存並退出查看效果。
如果後期還需要什麼想要的功能可以按照上面的方法再次對自己的vim進行配置完善,相信會更加便捷和完美。