天天看點

《建構高可用Linux伺服器 第3版》—— 3.1 Vim的基礎用法及進階心得

本節書摘來自華章出版社《建構高可用linux伺服器 第3版》一 書中的第3章,第3.1節,作者:餘洪春 ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

vi作為開源系統的預設編輯器,現在為越來越多的人了解和熟悉,而vim作為vi的更新版本,在功能上又有明顯提高。由于它友善實用,現在越來越多的開發人員喜歡将其作為代碼編輯工具。vi更符合unix傳統,它通過管道機制和系統内的各種積木工具打交道,它講究的是和系統内的工具程式協作來完成使用者的任務。vim是vi最受歡迎的變種之一,它除了繼承了vi迅捷的編輯方式外,在功能方面也已經比原始的vi強大很多。它現在是centos 5.8及freebsd 8.1下首選的強大編輯器之一。vim的基礎功能如表3-1所示。

《建構高可用Linux伺服器 第3版》—— 3.1 Vim的基礎用法及進階心得
《建構高可用Linux伺服器 第3版》—— 3.1 Vim的基礎用法及進階心得
《建構高可用Linux伺服器 第3版》—— 3.1 Vim的基礎用法及進階心得

另外,freebsd 8.1中預設的vim并不太好用,推薦大家采用vim模闆的形式編輯目前使用者的.vimrc檔案,讓vim可以更友善地為我們工作,模闆檔案如下:

set nobackup

set noswapfile

set nohlsearch

set nonumber

set cindent

set autoindent

set shiftwidth=2

set tabstop=2

set softtabstop=2

set expandtab

set ruler

set mouse=v

syntax on

1.常用設定

下面是一些vim中常用的設定及其具體含義:

set nobackup:不要備份檔案,使用backup備份檔案(原檔案加字尾~)。

set noswapfile:不生成.swap檔案。我在編輯檔案之前總有個習慣,一般會将其原檔案進行.bak備份,然後才很放心地在相關檔案上進行修改。如果操作謹慎的朋友建議不要此項。

set number:顯示行号。

set cindent:設定c風格縮進,可使用nocindent取消設定。

set autoindent:設定自動縮進,每行縮進與上一行相等,可使用noautoindent取消設定。

set shiftwidth=2:設定縮進為兩個空格。

set tabstop=2:設定制表符為兩個空格。

set softtabstop=2:設定軟制表符為兩個空格。

set expandtab:縮進和(軟)制表符使用空格替代,可用noexpandtab取消設定。

set ruler:顯示光标所在行列号。

set mouse=v:如果我們用set mouse=a啟動所有模式,屏蔽了滑鼠的右鍵功能,那麼可以用此文法讓其在vim可視化模式下也能使用滑鼠右鍵複制功能。

syntax on:啟動文法高亮。

下面是其中涉及的名詞術語的相關解釋:

cindent

使用c語言的縮進方式,根據特殊字元如“{”、“}”、“:”和語句是否結束等資訊自動調整縮進。在編輯c/c++等類型檔案時自動設定。

softtabstop

軟制表符寬度,設定為非零數值後使用tab鍵和backspace鍵時光标移動的格數等于該數值,但實際插入的字元仍受tabstop和expandtab控制。

我們在按照如上模闆檔案配置了vim後應該會發現vim比以前好用多了。我目前将其模闆檔案應用于線上freebsd、centos及debian系統中。當然了,這些也隻是vim的基礎配置,朋友們可以根據自身的習慣配置更個性化的vim。

2.日常系統維護工作中的vim使用心得

1)freebsd 8.1下的vim與centos 5.8下的vim是不一樣的,建議優化各使用者下的.vimrc檔案。我現在的習慣做法就是随身帶.vimrc配置模闆,哪台機器上有我的賬戶,我就直接導入到那台機器的/home/andrewy的賬戶下,這樣用起來就得心應手了。

2)以上用法僅僅滿足system administrator的基礎工作,如果是開發人員,強烈建議繼續深入研究vim的進階文法及插件。特别是php或java開發人員,用vim的基本功能配合插件編輯程式代碼會是件很輕松的事情。

3)如果習慣圖形界面使用ms的朋友,可以下載下傳一個gvim來學習及工作。

4)在加深vim學習的同時,也建議加強對sed的了解和學習,盡量用vim+sed的方式來完成日常中的編輯工作,例如shell、python和perl腳本,以及和系統相關的配置檔案。

5)盡量用h、j、k、l來進行左下上右操作,這遠遠比你用鍵盤的方向鍵更有效率,但這是大家很容易忽視的一個問題,有的unix機器不支援方向鍵。

6)vim不僅僅是一個編輯器,你完全可以用它來檢視伺服器的配置檔案.conf、.php、.jsp檔案及.sh等程式檔案。如果用得很熟練,也可以檢視日志檔案,注意最後不儲存退出即可。

7)這裡隻介紹兩個有用的插件taglist和ctags(事實上我也基本隻用這兩個)。用過eclipse的人可能會對按住ctrl鍵點選程式中的函數、變量等可自動跳轉到其定義處的功能贊歎不已,其實,這個功能vim也可以實作,用的就是ctags。vim的插件功能非常強大,有興趣的朋友可以深入了解一下。

8)我現在利用gvim輔助excel等系統處理資料時,主要利用了正則替換、列模式等功能。比如把“2006-6-30”替換為“2006.6.30”或“2006.06.30”。

9)我現在用得較多的gvim主要用來編輯shell檔案和處理文本文檔(比如我自己的電子文檔),感覺效果非常理想。

10)c檔案也是可以用vim來編輯的,當然,用vim和gvim來編輯python、java和php代碼也是完全可行的。