首先,安裝vim的時候(建議在我們工大的實驗室上面安裝,先改掉源,具體看後面如何修改源的介紹),直接在命令列中輸入sudo apt-get install vim-gtk,若發現提示不能裝的話,請往下看
正在讀取軟體包列表... 完成
正在分析軟體包的相依樹狀結構
正在讀取狀態資訊... 完成
有一些軟體包無法被安裝。如果您用的是 unstable 發行版,這也許是
因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟體
包尚未被建立或是它們已被從新到(Incoming)目錄移出。
下列資訊可能會對解決問題有所協助:
下列軟體包有未滿足的依賴關係:
ia32-libs : 依賴: ia32-libs-multiarch
E: 無法修正錯誤,因為您要求某些軟體包保持現狀,就是它們破壞了軟體包間的依賴關係
------------------------
網上找不到合適的解決方案。
這裡其實只需要再輸多兩個命令(先更新,再修複依賴關係):
先輸入下面兩個命令,然後再sudo apt-get install vim-gtk
sudo apt-get update
sudo apt-get -f install
在安裝vim的時候,若發現軟體包衝突了,具體情況如下
apt-get install vim
正在讀取軟體包列表... 完成
正在分析軟體包的相依樹狀結構
正在讀取狀態資訊... 完成
有一些軟體包無法被安裝。如果您用的是不穩定(unstable)發行版,這也許是
因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟體
包尚未被建立或是它們還在新到(incoming)目錄中。
下列的軟體包有不能滿足的依賴關係:
vim: 依賴: vim-common (= 1:7.1.314-3ubuntu3.1) 但是 2:7.2.079-1ubuntu5 正要被安裝
E: 無法安裝的軟體包
這種問題就應該是軟體源的問題,源中的版本比較低;依賴的版本號碼比正要安裝的版本號碼要低導致沒法安裝。
只需要將原來軟體源刪除,用新的軟體源替換一下就可以了
修改的方式是:首先在命令列中進入etc/apt,然後會有一個檔案sources.list,這時輸入命令sudo gedit sources.list
然後直接把下面的覆蓋到原檔案就行了(我們工大校內網很快,基本上能夠達到5MB/S左右吧)。
哈爾濱工業大學補救伺服器,包含其他開源鏡像:(工大的源貌似只能在實驗室或者我們基地才能用,在宿舍貌似連不上= =。宿舍的話,建議把源改為163的就好了,國內的源一般比國外的源快。另外如果某個軟體沒有合法的來源的話,建議換一個源,或者在剛安裝完ubuntu的時候,貌似需要先sudo apt-get update才能更新源,不然的話,在軟體中心那裡安裝不了軟體,提示說沒有合法的軟體來源。。。)
deb http://run.hit.edu.cn/ubuntu/ precise main restricted universe multiverse
deb http://run.hit.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb http://run.hit.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
deb http://run.hit.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb http://run.hit.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ precise main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
連結(其他源地址):http://hi.baidu.com/zhangfeezju/blog/item/8f96bdde15f8b90c495403cd.html
vim的設定檔的修改:
首先,在命令列下進入etc/vim,裡面有檔案vimrc,然後在命令列下輸入sudo gedit vimrc,然後系統會用類似於記事本開啟vimrc,然後把自己的設定檔複製到檔案的後面,
你的vim設定檔就配置成功了。
下面是我的vim配置(跟隨別人的風格,感覺跟codeblocks差不多)。
set encoding=utf-8set termencoding=utf-8set fileencodings=utf-8,chinese,latin-1if has("win32") set fileencoding=chineseelse set fileencoding=utf-8endiflanguage messages zh_CN.utf-8" 設定不與以前版本兼 set nocompatible " 設定色彩配置"colorscheme murphy " 顯示行號set nu" 偵測檔案類型filetype on" 設定當檔案被改動時自動載入set autoread" 記錄曆史的行數set history=100" 顯示文法高亮syntax enablesyntax on" 在處理未儲存或唯讀檔案的時候,彈出確認set confirm" 與windows共用剪貼簿set clipboard+=unnamed" 載入檔案類型外掛程式filetype plugin on" 為特定檔案類型載入相關縮排檔案filetype indent on" 儲存全域變數set viminfo+=!" 帶有如下符號的單詞不要被換行分割set iskeyword+=_,$,@,%,#,-" 設定滑鼠一直可用set mouse=a" 高亮當前行set cursorline" 命令列高度set cmdheight=1" 啟動的時候不顯示那個援助索馬里兒童的提示set shortmess=atI" 不讓vim發出討厭的滴滴聲set noerrorbells" 在被分割的視窗間顯示空白,便於閱讀set fillchars=vert:\ ,stl:\ ,stlnc:\""""""""""""""""""""""""""""" 檔案設定""""""""""""""""""""""""""""" 不要備份檔案(覆蓋檔案時不備份)set nobackup" 不要產生swap檔案,當buffer被丟棄的時候隱藏它setlocal noswapfileset bufhidden=hide" 字元間插入的像素行數目set linespace=0" 增強模式中的命令列自動完成操作set wildmenu" 置粘貼模式,使得粘貼不錯位" set paste " 儲存檔案,用習慣了Ctrl+S了" nmap <C-s> <esc>:w<CR>" imap <C-s> <esc>:w<CR>noremap <C-S> :update<CR>vnoremap <C-S> <C-C>:update<CR>inoremap <C-S> <C-O>:update<CR> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 搜尋和匹配"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 高亮顯示匹配的括弧set showmatch" 高亮顯示被找到的句子(phrases)"set hlsearch" 在搜尋時,輸入的詞句的逐字元高亮(類似firefox的搜尋),即輸入搜尋內容時就顯示搜尋結果set incsearch" 搜尋時忽略大小寫set ignorecase" 不要閃爍set novisualbell """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 文字格式設定和排版"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 自動格式化set formatoptions=tcrqn" 繼承前一行的縮排方式,特別適用於多行注釋set autoindent" 為C程式提供自動縮排set smartindent" 使用C樣式的縮排set cindent" 定位字元為4set tabstop=4" 統一縮排為4" 使得按退格鍵時可以一次刪掉 4 個空格set softtabstop=4" 設定 << 和 >> 命令移動時的寬度為 4set shiftwidth=4" 不要用空格代替定位字元set noexpandtab" 設定每行120個字元自動換行set textwidth=120 " 自動切換目前的目錄為當前檔案所在的目錄set autochdir" 摺疊代碼set foldmethod=syntax" 檔案開啟時不摺疊set foldlevel=100 """"""""""""""""""""""""""""""""""""""""""""自動執行個體括弧"""""""""""""""""""""""""""""""""""""""""""inoremap ( ()<ESC>iinoremap ) <c-r>=ClosePair(')')<CR>inoremap { {}<ESC>iinoremap } <c-r>=ClosePair('}')<CR>inoremap [ []<ESC>iinoremap ] <c-r>=ClosePair(']')<CR>inoremap ' ''<ESC>iinoremap " ""<ESC>ifunction ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endifendf """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set mapleader"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""let mapleader = ","" platformfunction! MySys() if has("win32") return "windows" else return "linux" endifendfunction" if file not opened, create a new tab, or switch to the opened filefunction! SwitchToBuf(filename) " find in current tab let bufwinnr = bufwinnr(a:filename) if bufwinnr != -1 exec bufwinnr . "wincmd w" return else " search each tab tabfirst let tb = 1 while tb <= tabpagenr("$") let bufwinnr = bufwinnr(a:filename) if bufwinnr != -1 exec "normal " . tb . "gt" exec bufwinnr . "wincmd w" return endif tabnext let tb = tb +1 endwhile " not exist, new tab exec "tabnew " . a:filename endifendfunction" fast edit .vimrcif MySys() == 'linux' " fast reloading of the .vimrc map <silent> <leader>ss :source ~/.vimrc<cr> " fast editing of the .vimrc map <silent> <leader>ee :call SwitchToBuf("~/.vimrc")<cr> " when .vimrc is edited, reload it autocmd! bufwritepost .vimrc source ~/.vimrcelseif MySys() == 'windows' " Set helplang set helplang=cn "Fast reloading of the _vimrc map <silent> <leader>ss :source ~/_vimrc<cr> "Fast editing of _vimrc map <silent> <leader>ee :call SwitchToBuf("~/_vimrc")<cr> "When _vimrc is edited, reload it autocmd! bufwritepost _vimrc source ~/_vimrcendifif MySys() == 'windows' source $VIMRUNTIME/mswin.vim behave mswinendif""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 外掛程式""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""加入工程使得能夠訪問ctags"""""""""""""""""""""""""""""""project1"set tags=tagsset autochdir"後面的工程加在tags變數上""""""""""""""""""""""""""""""" 設定Taglist""""""""""""""""""""""""""""""" 按照名稱排序let Tlist_Sort_Type = "name"" 在右側顯示視窗let Tlist_Use_left_Window = 1" 如果只有一個buffer,kill視窗也kill掉bufferlet Tlist_Exist_OnlyWindow = 1" 使taglist只顯示當前檔案tag,其它檔案的tag都被摺疊起來(同時顯示多個檔案中的tag時)let Tlist_File_Fold_Auto_Close = 1" 不要顯示摺疊樹let Tlist_Enable_Fold_Column = 1"不同時顯示多個檔案的tag,只顯示當前檔案的let Tlist_Show_One_File = 1 " 鍵盤對應nmap tl :TlistToggle<cr>""""""""""""""""""""""""""""""""""""""""""""""設定 winManager winManager管理netrw和Taglist。"""""""""""""""""""""""""""""""""""""""""""""let g:winManagerWindowLayout = "FileExplorer|TagList"let g:persistentBehaviour = 0let g:winManagerWidth = 30let g:defaultExplorer = 0nmap <C-W><C-F> :FirstExplorerWindow<cr>nmap <C-W><C-B> :BottomExplorerWindow<cr>"nmap <silent> <F8> :WMToggle<cr>nmap wm :WMToggle<cr>"設定 netrw"""""""""""""""""""""""""""""""let g:netrw_winsize = 30"nmap <silent> <leader>fe :Sexplore!<cr>"let Tlist_File_Fold_Auto_Close=1" 快速切換標頭檔/源檔案"nnoremap <silent><F12>:A<cr>""nmap <silent><F12>:A<CR>"在工程中快速尋找"nnoremap <silent><F3>:Grep<cr>"""""""""""""""""""""""""""""""設定 MiniBufExploer""""""""""""""""""""""""""""""" quickfix模式autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""F5編譯和運行C++程式"F6編譯和運行C程式""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" C的編譯和運行map <F6> :call CompileRunGcc()<CR>func! CompileRunGcc()exec "w"exec "!gcc % -o %<"exec "! ./%<"endfunc" C++的編譯和運行map <F5> :call CompileRunGpp()<CR>func! CompileRunGpp()exec "w"exec "!g++ % -o %<"exec "! ./%<"endfunc source $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbehave mswinset diffexpr=MyDiff()function MyDiff() let opt = '-a --binary ' if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif let arg1 = v:fname_in if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif let arg2 = v:fname_new if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif let arg3 = v:fname_out if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif let eq = '' if $VIMRUNTIME =~ ' ' if &sh =~ '\<cmd' let cmd = '""' . $VIMRUNTIME . '\diff"' let eq = '"' else let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"' endif else let cmd = $VIMRUNTIME . '\diff' endif silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eqendfunction " 自動補全(ctrl-p)時的一些選項: 多於一項時顯示菜單,最長選擇; 顯示當前選擇的額外資訊if v:version >= 700 set completeopt=menu,longest,preview endif """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 狀態行相關動作"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 顯示狀態列 (預設值為 1, 無法顯示狀態列)set laststatus=2" 狀態行顏色highlight StatusLine guifg=SlateBlue guibg=Yellowhighlight StatusLineNC guifg=Gray guibg=Whitefunction! CurDir() let curdir = substitute(getcwd(), '/Users/amir/', "~/", "g")return curdirendfunction""""""""""""""""""""""""""""""""狀態行顯示內容"""""""""""""""""""""""""""""""" %F 當前檔案名稱" %m 當前檔案修改狀態" %r 當前檔案是否唯讀" %Y 當前檔案類型" %{&fileformat} 當前檔案編碼" %b 當前游標處字元的 ASCII 碼值" %B 當前游標處字元的十六進位值" %l 當前游標行號" %c 當前游標列號" %V 當前游標虛擬列號 (根據字元所佔位元組數計算)" %p 當前行佔總行數的百分比" %% 百分比符號" %L 當前檔案總行數 set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c " 設定在狀態行顯示的資訊如下: " set nowrapscan"Highlight currentif has("gui_running") set cursorline hi cursorline guibg=#333333 hi CursorColumn guibg=#333333endif"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => VIM userinterface""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""Set 7 lines to the curors - when moving vertical..set so=7"Do not redraw, when running macros.. lazyredrawset lz"Change buffer - without savingset hid"Set magic onset magic"How many tenths of a second to blinkset mat=2set lines=40set columns=100""""""""""""""""""""""""""""""""""""""""""""""""""""功能表列、工具列顯示與隱藏的切換"""""""""""""""""""""""""""""""""""""""""""""""""""set guioptions-=Tset guioptions-=mmap <silent> <F4> :if &guioptions =~# 'T' <Bar> \set guioptions-=T <Bar> \set guioptions-=m <bar> \else <Bar> \set guioptions+=T <Bar> \set guioptions+=m <Bar> \endif<CR>""""""""""""""""""""""""""""""""""""""""""""""""""""" 日曆外掛程式設定""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:calendar_diary = /calendar" map ca :Calendar<cr> " 讓 gvim 支援 Alt+n 來切換標籤頁function! BufPos_ActivateBuffer(num) let l:count = 1 for i in range(1, bufnr("$")) if buflisted(i) && getbufvar(i, "&modifiable") if l:count == a:num exe "buffer " . i return endif let l:count = l:count + 1 endif endforendfunction
2013.1.5日,發現吳垠學長一文《手把手教你把Vim改裝成一個IDE編程環境(圖文)》寫的很詳細,我上面的獻醜了= =。
附上他的連結http://blog.csdn.net/wooin/article/details/1858917