Vim學習 Step by Step

來源:互聯網
上載者:User

# Step 1

《 V I M  教  程 》摘要(版本 1.5)     

(注釋:本文僅為個人學習摘要,推薦啟動本教程學習,只需vi裡要輸入命令$ vimtutor )

     vim 是一個具有很多命令的功能非常強大的編輯器。限於篇幅,在本教程當中
     就不詳細介紹了。本教程的設計目標是講述一些必要的基本命令,而掌握好這
     些命令,您就能夠很容易將vim當作一個通用的萬能編輯器來使用了。

     完成本教程的內容大約需要25-30分鐘,取決於您訓練的時間。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第一講小結

  1. 游標在螢幕文本中的移動既可以用方向鍵,也可以使用 hjkl 字母鍵。
  h (左移) j (下行)       k (上行)     l (右移)

  2. 欲進入vim編輯器(從命令列提示符),請輸入∶vim 檔案名稱 <斷行符號>

  3. 欲退出vim編輯器,請輸入以下命令放棄所有修改∶

 <ESC>   :q!  <斷行符號>

     或者輸入以下命令儲存所有修改∶

 <ESC>   :wq  <斷行符號>

  4. 在正常模式下刪除游標所在位置的字元,請按∶ x

  5. 在正常模式下要在游標所在位置開始插入文本,請按∶

  i     輸入必要文本 <ESC>

特別提示∶按下 <ESC> 鍵會帶您回到正常模式或者取消一個不期望或者部分完成
的命令。

好了,第一講到此結束。下面接下來繼續第二講的內容。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第二講小結

  1. 欲從當前游標刪除至單字/單詞末尾,請輸入∶dw

  2. 欲從當前游標刪除至當前行末尾,請輸入∶d$

  3. 欲刪除整行,請輸入∶dd

  4. 在正常模式下一個命令的格式是∶

       [number]   command   object     或者     command [number]   object
     其意是∶
       number - 代表的是命令執行的次數
       command - 代表要做的事情,比如 d 代表刪除
       object - 代表要操作的對象,比如 w 代表單字/單詞,$ 代表到行末等等。
  $ (to the end of line), etc.

  5. 欲撤消以前的操作,請輸入∶u (小寫u)
     欲撤消在一行中所做的改動,請輸入∶U (大寫的U)
     欲撤消以前的撤消命令,恢複以前的操作結果,請輸入∶CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第三講小結

  1. 要重新置入已經刪除的常值內容,請輸入小寫字母 p。該操作可以將已刪除
     的常值內容置於游標之後。如果最後一次刪除的是一個整行,那麼該行將置
     於當前游標所在行的下一行。

  2. 要替換游標所在位置的字元,請輸入小寫 r 和要替換掉原位置字元的新字
     符即可。

  3. 更改類命令允許您改變指定的對象,從當前游標所在位置直到對象的末尾。
     比如輸入 cw 可以替換當前游標到單詞的末尾的內容;輸入 c$ 可以替換當
     前游標到行末的內容。

  4. 更改類命令的格式是∶

  [number]   c object       或者 c   [number]   object

下面我們繼續學習下一講。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第四講小結

  1. Ctrl-g 用於顯示當前游標所在位置和檔案狀態資訊。Shift-G 用於將游標跳
     轉至檔案最後一行。先敲入一個行號然後按 Shift-G 則是將游標移動至該行
     號代表的行。

  2. 輸入 / 然後緊隨一個字串是則是在當前所編輯的文檔中向後尋找該字串。
     輸入問號 ? 然後緊隨一個字串是則是在當前所編輯的文檔中向前尋找該字
     符串。完成一次尋找之後按 n 鍵則是重複上一次的命令,可在同一方向上查
     找下一個字串所在;或者按 Shift-N 向相反方向尋找下該字串所在。

  3. 如果游標當前位置是括弧(、)、[、]、{、},按 % 可以將游標移動到配對的
     括弧上。

  4. 在一行內替換頭一個字串 old 為新的字串 new,請輸入  :s/old/new
     在一行內替換所有的字串 old 為新的字串 new,請輸入  :s/old/new/g
     在兩行內替換所有的字串 old 為新的字串 new,請輸入  :#,#s/old/new/g
     在檔案內替換所有的字串 old 為新的字串 new,請輸入  :%s/old/new/g
     進行全文替換時詢問使用者確認每個替換需添加 c 選項,請輸入 :%s/old/new/gc

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第五講小結

  1. :!command 用於執行一個外部命令 command。

     請看一些實際例子∶
   :!dir  -  用於顯示目前的目錄的內容。
   :!rm FILENAME  - 用於刪除名為 FILENAME 的檔案。

  2. :w FILENAME  可將當前 VIM 中正在編輯的檔案儲存到名為 FILENAME 的文
     件中。

  3. :#,#w FILENAME 可將當前編輯檔案第 # 行至第 # 行的內容儲存到檔案
     FILENAME 中。

  4. :r FILENAME 可提取磁碟檔案 FILENAME 並將其插入到當前檔案的游標位置
     後面。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第六講小結

  1. 輸入小寫 o 可以在游標下方開啟新的一行並將游標置於新開的行首,進入
     插入模式。
     輸入大寫的 O 可以在游標上方開啟新的一行並將游標置於新開的行首,進入
     插入模式。

  2. 輸入小寫 a 可以在游標所在位置之後插入文本。
     輸入大寫的 A 可以在游標所在行的行末之後插入文本。

  3. 輸入大寫的 R 將進入替換模式,直至按 <ESC> 鍵退出替換模式而進入正常
     模式。

  4. 輸入 :set xxx 可以設定 xxx 選項。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         第七講∶線上協助命令

        ** 使用線上協助系統 **

  Vim 擁有一個細緻全面的線上協助系統。要啟動該協助系統,請選擇如下三種方
  法之一∶
 - 按下 <HELP> 鍵 (如果鍵盤上有的話)
 - 按下 <F1> 鍵 (如果鍵盤上有的話)
 - 輸入 :help <斷行符號>

  輸入 :q <斷行符號> 可以關閉說明視窗。

  提供一個正確的參數給":help"命令,您可以找到關於該主題的協助。請實驗以
  下參數(可別忘了按斷行符號鍵哦。:)∶

   :help w <斷行符號>
   :help c_<T <斷行符號>
   :help insert-index <斷行符號>
   :help user-manual <斷行符號>

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         第八講∶建立一個啟動指令碼

     ** 啟用vim的功能 **

  Vim的功能特性要比vi多得多,但大部分功能都沒有預設啟用。為了啟動更多的
  功能,您得建立一個vimrc檔案。

  1. 開始編輯vimrc檔案,這取決於您所使用的作業系統∶

     :edit ~/.vimrc  這是Unix系統所使用的命令
     :edit $VIM/_vimrc  這是Windows系統所使用的命令

  2. 接著匯入vimrc範例檔案∶

     :read $VIMRUNTIME/vimrc_example.vim

  3. 儲存檔案,命令為∶

     :write

  在下次您啟動vim的時候,編輯器就會有了文法高亮的功能。您可以繼續把您喜
  歡的其它功能設定添加到這個vimrc檔案中。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  vim 教程到此結束。本教程只是為了簡明地介紹一下vim編輯器,但已足以讓您
  很容易學會使用本編輯器了。毋庸質疑,vim還有很多很多的命令,本教程所介
  紹的還差得遠著呢。所以您要精通的話,還望繼續努力哦。下一步您可以閱讀
  vim手冊,使用的命令是∶
 :help user-manual

 # Step 2

(注釋:本文僅為個人學習摘要,推薦網上下載本文學習)

Vi IMproved 簡介

edyfox@smth.org ( 滇狐)

http://edyfox.codecarver.org

清華大學軟體學院
北京大學Linux 俱樂部

 
Unix 下的全螢幕可視化編輯器

由於其原始碼不可獲得,衍生了許多複製版本

nvi 、elvis 、vile 、VIM...

VIM 即Vi IMproved , vi 複製版本之一

VIM 簡介

目前最流行的vi 複製版本
支援目前絕大部分平台
Windows 、Unix 、Linux 、MacOS 、DOS...
功能強大,擴充性強
Bram Moolenaar 編寫
1991 年11 月完成第一個版本
目前最新穩定版本為6.3
慈善軟體
不強制註冊
即使不通過註冊,也能使用VIM 全部功能

註冊使用者可以投票選擇想要的功能
個人家庭使用註冊費10 歐元
用於專業領域編輯工作註冊費30 歐元
繳納的註冊費將用於救助烏幹達的可憐兒童

主要用於救助艾滋病肆虐的地區失去父母的孤兒

什麼人適合使用VIM ?

追求編輯效率的程式員
VIM 的作者是程式員
他為程式員開發了許多有用的功能
其它經常處理純文字的人員
中小型企業Web 開發人員
編寫LaTeX 文檔的研究人員
Unix / Linux 系統管理員

 
什麼人不適合使用VIM ?

生活、工作和學習無需和純文字打交道的人
處理其它類型的檔案有專門的工具
打字速度慢於智能感知運行速度的人
VIM 目前暫不支援智能感知
被強大的IDE 慣壞了的人強大順手的IDE 比方便快捷的編輯器更重要

 

主要內容

VIM 簡介

VIM 入門

VIM 基本操作

VIM 快速編輯樣本

編寫自己的.vimrc

 

VIM 進階

屏蔽系統內建的vimrc

Linux 使用者

建立~/.vimrc 檔案

Windows 使用者

在個人主目錄下建立空文字檔_vimrc

注意顯示副檔名問題

 

Linux 下中文處理

編輯時不能輸入中文

:set encoding=cp936

 

菜單顯示是亂碼

:so $VIMRUNTIME/delmenu.vim

 

:so $VIMRUNTIME/menu.vim

 

 

選擇喜歡的字型

通過菜單與對話方塊選擇字型

編輯--> 選擇字型

只有等寬字型可以被選中

適合程式員使用的字型基本原則

Bitstream Vera Sans Mono

 

0Oo 1Il

 

 

:set guifont?

 

記住選中的字型名稱

將顯示結果抄下來備用
寫入.vimrc

VIM 不能自動記住你所做的配置修改

需要手工寫入.vimrc

雙引號開頭的行表示注釋

你現在的.vimrc 也許是這個樣子的:

" Windows 下建議也加上這句set encoding=cp936
" 這兩句只在Linux 下需要so $VIMRUNTIME/delmenu.vim so $VIMRUNTIME/menu.vim
" 設定字型。" 字型名稱可以通過前一節介紹的語句獲得," 如果字型名稱中含有空格," 需要在空格前面加上一個反斜線,如下:set guifont=Courier/ 9
VIM 基本操作

VIM 是一個有模式的編輯器

Normal 模式下按鍵序列對應命令

按i 鍵進入Insert 模式

按: 進入command 模式

 

Insert 模式下可以輸入文本

按ESC 回到Normal 模式

Command 模式下輸入命令

 

有模式導致VIM 快速鍵長度較短

使用hjkl

VIM 支援使用方向鍵移動游標

在insert 狀態下移動游標會比較方便

使用hjkl 移動游標編輯效率更高

 

距離近,按鍵方便,眼睛無需離開螢幕
俄羅斯方塊

http://vim.sf.net/scripts/script.php?script_id=172

vimtutor

vimtutor 是VIM 入門非常好的學習材料

 

Linux 使用者

在終端中輸入vimtutor

啟動字元介面的vimtutor

 

Windows 使用者

在開始菜單中找vimtutor 捷徑

啟動後出現亂碼,重新選擇一個中文字型即可

 

快速編輯樣本

不再詳細VIM 基本操作

時間所限,對VIM 的介紹不可能面面俱到

水平所限,所講內容不可能強過vimtutor

 

介紹幾個VIM 快速編輯樣本

對於老使用者,進一步增強記憶

對於新使用者,堅定學習VIM 的決心

 

尋找替換

準備工作

開啟VIM ,按i ,輸入:

this is a test

 

尋找替換

 

按ESC 回到normal 狀態,輸入:

:%s/ /^M/g

其中^M 使用Ctrl-v.Ctrl-m 的方式輸入

將所有空格替換為斷行符號,文本變為4 行

行的拼接

尋找/n 替換為空白格可以實現拼接

這裡使用j 命令拼接行

按ggVG ,全選

按: ,此時命令列顯示為:

:'<,'>

 

在其後輸入j ,斷行符號

拼接完畢

 

複製粘貼與重複動作

在normal 狀態下按yy ,複製當前行

按12p ,螢幕上即出現13 行上述字樣

 

12 表示將其後的命令執行12 次

p 表示粘貼到當前行之後

VIM 裡大部分命令都可以加上數字表明執行次數

列操作

選中全文第一列

按gg 跳到開頭

按Ctrl-v 進入列選擇狀態

按G 跳到末尾

 

將每行第一列變為大寫

按U 表示把選中內容變大寫

按u 表示把選中內容變小寫

按~ 表示翻轉原有大小寫

 

列操作

在每行前面加一個星號和一個空格

 

選中第一列

按I 進入插入狀態

輸入* ,按ESC

 

選中前兩列後按x ,可以進行列刪除

 

編程時可以用於批量注釋和批量解注釋
宏的錄製

將所有偶數行的a 改成another

錄製宏

按gg 進入第一行

按qm 進入宏錄製狀態,錄製到寄存器m

按j 進入第二行,按$ 跳到行末

按2b ,游標停在字母a 上

按caw ,輸入another ,按ESC ,按j 進入下一行

按q 結束宏的錄製

 

宏的播放

單次播放

按下@m ,執行m 寄存器中的宏

可以發現第4 行的a 也變成了another

 

 

多次播放

輸入1000@m

可以發現所有偶數行的a 都變成了another

到達檔案底部時宏執行出錯,會自動停止

最終並沒有真的執行1000 次

 

點命令

在每行末尾添加一個驚嘆號

執行次數不多的簡單操作無需使用宏

 

按gg 進入第一行,按A 進入行尾添加狀態

輸入! ,按ESC ,按j 進入第二行

按. 表示重複前一個操作,即行尾添加!

反覆按j.j.j.j.

推薦大家左手滑鼠

 

:%s/$/!/g

 

VIM 入門

21 天學習計劃

多讀文檔,少走彎路

第一周:每天一遍vimtutor

熟悉基本操作,做到隨心所欲

第二周、第三周:通讀使用者手冊

讀使用者手冊的同時修訂出適合自己的.vimrc

目前手冊有中文版譯本可供下載

 

 

.vimrc for Beginners
基本設定

set nocp -設定不相容模式

set ru -開啟狀態列尺規

set hls -搜尋時高亮顯示被找到的文本

set is -遞進搜尋

syntax on -開啟關鍵字上色

set backspace=indent,eol,start

 

set whichwrap=b,s,<,>,[,]

 

h,l,~

編碼設定
一段可以自動猜測編碼的指令碼,很強的

" Encoding settings

if has("multi_byte")
" Set fileencoding priority
if getfsize(expand("%")) > 0

set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
else
set fileencodings=cp936,big5,euc-jp,euc-kr,latin1
endif

" CJK environment detection and corresponding setting

if v:lang =~ "^zh_CN"
" Use cp936 to support GBK, euc-cn == gb2312
set encoding=cp936
set termencoding=cp936
set fileencoding=cp936

elseif v:lang =~ "^zh_TW"
" cp950, big5 or euc-tw
" Are they equal to each other?
set encoding=big5
set termencoding=big5
set fileencoding=big5

編碼設定
續前頁
elseif v:lang =~ "^ko"
" Copied from someone's dotfile, untested
set encoding=euc-kr
set termencoding=euc-kr
set fileencoding=euc-kr

elseif v:lang =~ "^ja_JP"
" Copied from someone's dotfile, unteste
set encoding=euc-jp
set termencoding=euc-jp
set fileencoding=euc-jp

endif
" Detect UTF-8 locale, and replace CJK setting if needed
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"

set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8

endif
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif

.vimrc for Beginners
文本編輯設定

set sw=4 -縮排尺寸4 個空格

set ts=4 -Tab 寬度為4 個字元

 

set et -將所有Tab 替換為空白格

.vimrc for Beginners

C/C++ 編碼設定

set cin -自動縮排

set ai -還是自動縮排

set cino=:0g0t0(sus

 

set sm -顯示括弧匹配

 

在console 下粘貼的版式問題

“ :set paste” 、“ set nopaste”

“ =” 命令重調格式

 

.vimrc for Beginners

斷行設定

set lbr -不在單詞中間斷行

set fo+=mB -開啟斷行模組對亞洲語言支援

 

其它設定

set selectmode=

 

set mousemodel=popup

 

set keymodel=

 

set selection=inclusive

 

 

.vimrc for Beginners

圖形介面與字元介面分別設定

if (has("gui_running")) -圖形介面設定set nowrap -不折行set guioptions+=b -水平捲軸colo torte -色彩配置

 

else -字元介面設定set wrap -折行colo ron -色彩配置

endif

 

 

主要內容

VIM 簡介

VIM 入門

VIM 進階

VIM 常用外掛程式簡介

在VIM 中編寫程式

在VIM 中編寫LaTeX 文檔

 

外掛程式安裝路徑

$HOME/.vim 或%HOME%/vimfiles

$VIM/vimfiles

$VIMRUNTIME

$HOME/.vim/after 或%HOME%/vimfiles/after

$VIM/vimfiles/after

外掛程式目錄結構

colors

ftplugin

compiler

indent

doc

keymap

plugin

 

etc

ftdetect

syntax

常用外掛程式推薦
排程工具Calendar

 

常用外掛程式推薦
塗鴉外掛程式Sketch

 

常用外掛程式推薦

一系列外掛程式實現的VIM.IDE

視窗管理器+ 檔案瀏覽器(視窗管理器外掛程式)

Tlist + ctags

VIM + ctags + cscope

 

ctags 、cscope 簡介

常用外掛程式推薦

ViKi + Deplate

類似WiKi 的文法

用於製作基於內容的簡單個人首頁

滇狐的個人首頁就是使用ViKi 製作的

 

優點

使用方便,功能比較強大

缺點

 

配置複雜,依賴項太多
在VIM 下編寫程式

正確地編寫Makefile

設定合適的makeprg

例如在有的系統下你也許想用gmake

在Windows 下最好安裝一份tee

能夠看到編譯過程

:set shellpipe=2>&1/|/ tee

 

 

根據編譯器輸出正確設定errorformat

在VIM 下編寫程式

常見編譯器可通過VIM 內建指令碼設定參數

:compiler xxx

功能表項目:工具--> Set compiler

使用:make 編譯器

使用:copen 查看錯誤清單

 

:make
:make clean

copen 小技巧

在多個檔案中搜尋指定字串

將搜尋結果列在一個buffer 中

可以條目跳轉到相應檔案的相應位置

copen 具備這樣的能力

 

需求

在檔案中檢索指定字串的工具

 

在檢索結果給出檔案名稱和行號資訊

合適的errorformat 設定

 

copen 小技巧

設定grep 參數

:set grepprg=grep/ -nH/ $*

建議寫到.vimrc 中

使用grep 命令尋找檔案

:grep "test string 2" *

 

:grep -R "test string 2"

 

:grep "function" *.cpp

 

 

在VIM 下編寫LaTeX 文檔

安裝LaTeX Suite

配置正向、反向搜尋

正向搜尋

在產生的dvi 檔案中尋找原始碼所對應元素

 

反向搜尋

 

在產生的dvi 檔案中尋找元素所對應原始碼的位置。

初學者關於<++> 的困惑

 

是LaTeX Suite 一項非常好用的功能
主要內容

VIM 簡介

VIM 入門

VIM 進階

VIM 使用小結

VIM 是非常強大而方便的文字編輯器

需要通過學習才能夠用好

學習付出的努力是值得的

不要報怨VIM 作為IDE 不夠強大

先想想自己為所謂“強大”的IDE 付了多少錢

開源社區的項目需要所有人為之付出勞動

 

謝謝大家!

感謝大家支援!

Q&A
Happy VIMming~~

#Step 3...

http://blog.csdn.net/iiprogram/archive/2006/03/14/624403.aspx

學習資源

VIM 網站

http://www.vim.org

http://vim.sourceforge.org

中文網站

 

水木社區VIM 版及版面附屬FTP

學習資源
VIM 郵件清單

vim-announce@vim.org

vim@vim.org

vim-dev@vim.org

vim-mac@vim.org

vim-multibyte@vim.org 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.