先從vim的安裝說起:
1,首先把 vimrc和gvimrc 檔案的位置改在/etc目錄下:
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h,2,,./configure --prefix=/usr
3, make (make test) make install
4, ln -s vim /usr/bin/vi
5,在預設情況下, vim 是以與 vi 相容的模式運作。有些人可能喜歡這種模式,但是我們強烈建議使用 vim 模式運作 vim (要不然我們就不必把 vim 包含到這本書裡了,用老的 vi 不是更好?)。使用如下指令建立/root/.vimrc:
cat > /etc/vimrc << "EOF"
" Begin /etc/vimrc
set nocompatible
set backspace=2
syntax on
" End /etc/vimrc
EOF
set nocompatible 将使vim以比預設的vi相容模式功能更強的方式運作。set backspace=2 讓倒退鍵能跨行,自動縮進并開始插入。syntax on 打開vim的文法高亮功能。
vi 的工作模式:編輯模式,插入模式,指令模式
k、j、h、l功能分别等同于上、下、左、右箭頭鍵Ctrl+b在檔案中向上移動一頁(相當于PageUp鍵)Ctrl+f在檔案中向下移動一頁(相當于PageDown鍵)H将光标移到螢幕的最上行(Highest)nH将光标移到螢幕的第n行2H将光标移到螢幕的第2行M将光标移到螢幕的中間(Middle)L将光标移到螢幕的最下行(Lowest)nL将光标移到螢幕的倒數第n行3L将光标移到螢幕的倒數第3行w在指定行内右移光标,到下一個字的開頭e在指定行内右移光标,到一個字的末尾b在指定行内左移光标,到前一個字的開頭0數字0,左移光标,到本行的開頭$右移光标,到本行的末尾^移動光标,到本行的第一個非空字元rc用c替換光标所指向的目前字元nrc用c替換光标所指向的前n個字元x删除光标所指向的目前字元nx删除光标所指向的前n個字元ndw删除光标右側的n個字db删除光标左側的字ndb删除光标左側的n個字5db删除光标左側的5個字dd删除光标所在行,并去除空隙ndd删除n行内容,并去除空隙3dd删除3行内容,并去除空隙将其粘貼到正文中的指定位置。完成這一操作的指令是:p小寫字母p,将緩沖區的内容粘貼到光标的後面P大寫字母P,将緩沖區的内容粘貼到光标的前面注意上述兩個指令中字母的大小寫。vi編輯器經常以一對大、小寫字母(如p和P)來提供一對相似的功能。通常,小寫指令在光标的後面進行操作,大寫指令在光标的前面進行操作。
yy複制目前行到記憶體緩沖區nyy複制n行内容到記憶體緩沖區6.文本選中vi可進入到一種成為Visual的模式,在該模式下,使用者能用光标移動指令可視地選擇文本,然後再執行其他編輯操作,例如删除、複制等。v字元選中指令V行選中指令1.進入插入模式在編輯模式下正确定位光标之後,可用以下指令轉換到插入模式:i在光标左側輸入正文a在光标右側輸入正文o在光标所在行的下一行增添新行O在光标所在行的上一行增添新行I在光标所在行的開頭輸入正文A在光标所在行的末尾輸入正文上面介紹了幾種轉換到插入模式的簡單方法。另外更有一些指令,他們允許在進入插入模式之前首先删去一段正文,進而實作正文的替換。這些指令包括:s用輸入的正文替換光标所指向的字元ns用輸入的正文替換光标右側n個字元cw用輸入的正文替換光标右側的字ncw用輸入的正文替換光标右側的n個字cb用輸入的正文替換光标左側的字ncb用輸入的正文替換光标左側的n個字cd用輸入的正文替換光标的所在行ncd用輸入的正文替換光标下面的n行c$用輸入的正文替換從光标開始到本行末尾的所有字元c0用輸入的正文替換從本行開頭到光标的所有字元:345w file将第345行寫入file檔案:3,5w file将第3行至第5行寫入file檔案:1,.w file将第1行至目前行寫入file檔案:.,$w file将目前行至最後一行寫入file檔案:.,.+5w file從目前行開始将6行内容寫入file檔案:1,$w file将所有内容寫入file檔案,相當于:w file指令在指令模式下,允許從檔案中讀取正文,或将正文寫入檔案。例如::w将編輯的内容寫入原始檔案,用來儲存編輯的中間結果:wq将編輯的内容寫入原始檔案并退出編輯程式(相當于ZZ指令):w file将編輯的内容寫入file檔案,保持原有檔案的内容不變:a,bw file将第a行至第b行的内容寫入file檔案:r file讀取file檔案的内容,插入目前光标所在行的後面:e file編輯新檔案file代替原有内容:f file将目前檔案重命名為file
:f列印目前檔案名稱和狀态,如檔案的行數、光标所在的行号等4.正文替換利用:s指令能實作字元串的替換。具體的用法包括::s/str1/str2/用字元串str2替換行中首次出現的字元串str1
:s/str1/str2/g用字元串str2替換行中所有出現的字元串str1
:.,$ s/str1/str2/g用字元串str2替換正文目前行到末尾所有出現的字元串str1
:1,$ s/str1/str2/g用字元串str2替換正文中所有出現的字元串str1
:g/str1/s//str2/g功能同上從上述替換指令能看到:g放在指令末尾,表示對搜尋字元串的每次出現進行替換;不加g,表示隻對搜尋字元串的首次出現進行替換;g放在指令開頭,表示對正文中所有包含搜尋字元串的行進行替換操作。6.恢複檔案vi在編輯某個檔案時,會另外生成一個臨時檔案,這個檔案的名稱通常以.開頭,并以.swp結尾。vi在正常退出時,該檔案被删除,若意外退出,而沒有儲存檔案的最新修改内容,則能使用恢複指令::recover恢複檔案也能在啟動vi時利用-r選項。為控制不同的編輯功能,vi提供了非常多内部選項。利用:set指令能設定選項。基本文法為::set option設定選項option常見的功能選項包括:autoindent設定該選項,則正文自動縮進ignorecase設定該選項,則忽略規則表達式中大小寫字母的差别number設定該選項,則顯示正文行号ruler設定該選項,則在螢幕底部顯示光标所在行、列的位置tabstop設定按Tab鍵跳過的空格數。例如:set tabstop=n,n預設值為8
mk将選項儲存在目前目錄的.exrc檔案中在編輯正文時,利用vi指令模式下提供的shell轉換指令,無須退出vi即可執行Linux指令,十分友善。文法格式為::! command執行完shell指令command後回到vi另外,在編輯模式下,鍵入K,可指令vi查找光标所在單詞的手冊頁,相當于運作man指令。:g/^/m0
:%s/old_word/new_word/g
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" =>全局配置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"關掉相容模式
set nocompatible
"設定曆史記錄步數
set history=400
"開啟檔案類型判斷插件
filetype plugin on
filetype indent on
"當檔案在外部被修改,自動更新該檔案
set autoread
"設定快速儲存和退出
"快速儲存為,s
"快速退出(儲存)為,w
"快速退出(不儲存)為,q
nmap s :w!
nmap w :wq!
nmap q :q!
"map :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
"設定快捷鍵為win方式的快捷鍵
"source $VIMRUNTIME/mswin.vim
"behave mswin
"set pastetoggle=
"tag
set tag=../tags,../TAGS,tags,TAGS
"cscope
set cscopequickfix=s-,c-,d-,i-,t-,e-
"c\h檔案切換
nnoremap :A
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" =>字型和顔色
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"開啟文法
syntax enable
"設定字型
set guifont=dejaVu\ Sans\ Monospace\ 12
"設定配色
colorscheme desert
"高亮顯示目前行
set cursorline
hi cursorline guibg=#222222
hi CursorColumn guibg=#333333
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" =>檔案和備份
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"關閉自動備份
set nobackup
set nowb
"關閉交換檔案
set noswapfile
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" =>折疊
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"開啟折疊
"set nofen
set fdl=0
set fdc=2
set fdm=syntax
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" =>文字處理
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"設定(軟)制表符寬度為4
set tabstop=4
set softtabstop=4
"set smarttab
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" =>縮進
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"自動縮進
set ai
"智能縮進
set si
"設定縮進的空格數為4
set autoindent
"設定自動縮進:即每行的縮進值與上一行相等;使用noautoindent取消設定
set shiftwidth=4
"設定使用C/C++語言的自動縮進方式
set cindent
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Vim界面
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Set 7 lines to the curors - when moving vertical..
"set so=7
"Turn on WiLd menu
"set wildmenu
"顯示标尺
set ruler
"設定指令行的高度
set cmdheight=1
"顯示行數
set nu
"顯示比對的括号([{和}])
set showmatch
"高亮顯示搜尋的内容
set hlsearch
tags的用法