2012/08/26

Linux 編輯器


編輯器

linux上的編輯器有很多種

  1. emacs
  2. gedit
  3. nano
  • 大致分成兩類:
  1. 命令列模式Command line editors
  2. 圖形介面Graphical editors

VI(VIM)

  • 官方網站 http://www.vim.org/
  • vi 為 標準unix的文字編輯器,可以使用 vi 或 vim 執行
  • gvim 是圖形介面版的 vim
  1. 應用程式+程式設計 = Vi improved
  2. 在套件 vim-x11 裡
  • 優點:
  1. 速度快
  2. 簡單
  3. 可靠
  • 缺點:
  1. 難學:按鍵太繁雜

VI MODE

  • VIM 的模式共有六種(但通常只有用三種)
  1. 命令模式(Command mode): 預設值,您一進入 vim 就是處於這常態模式,只能下按鍵指令,不能輸入編輯文字。 通常可以用來移動游標、剪貼文字及改變模式。
  2. 插入模式(Insert mode): 按 「i」 就會進入插入模式,此時才可以鍵入文字,寫您的文章,按 Esc 又會回到正常模式。 通常用來修改文字。
  3. Ex模式(Ex mode): 按冒號「:」就會進入命令列模式,左下角會有一個冒號:出現可下指令。按 Esc 回命令列模式。通常用來儲存及離開。
  • 隨時使用 Esc 可離開目前模式回到命令模式(預設值)
  • 最多連續兩個 EscEsc 總是可以回到命令模式(預設值)
Vim mode.png

基本操作

進入和離開 vim

[lcc09@localhost ~]$ vi
:q!
# 不儲存離開,如果在其他模式請按ESC切到命令模式。

開檔案

  • vim filename
  1. 檔案如果存在則打開
  2. 如果不存在則建立一個新的
[lcc09@localhost ~]$ vi hello.sh

插入模式(Insert mode)

  • 「i」插入模式,從游標後面開始插入文字
  • 除了i外還有AIoO也可以進入。
  1. 「A」append to end of line
  2. 「I」insert a beginning of line
  3. 「o」insert new a line(below)
  4. 「O」insert new line(above)

Ex模式(Ex mode)

  • 輸入提示符號「:」即可進入Ex模式(Ex mode)
  •  :w writes (saves) the file to disk
  •  :wq writes and quits
  •  :q! quits, even if changes are lost

命令模式(Command mode)

  • 預設模式 of vim
  • Keys describe movement and text manipulation commands
  • Commands repeat when preceded by a number
  • Example
    • Right Arrow moves right one character
    • 5, Right Arrow moves right five characters
  • Moving Around
  • 移動 by 字元: Arrow Keys, h, j, k, l
    • Non-arrow keys useful for remote connections to older systems
  • Move by 單字: w, b
  • Move by 句子: ), (
  • Move by 段落: }, {
  • Jump to line x: xG or :x
  • Jump to end: G
  • Search and Replace
  • Search as in less
    • /, n, N
  • Search/Replace as in sed
    • Affects current line by default
    • Use x,y ranges or % for every line
      1.  :1,5s/cat/dog/
      2.  :%s/cat/dog/gi
  • 還有更多....當vim下方沒有任何提示時,為此模式。通常vim一啟動就是此模式。
  1. x, X 在一行字當中,x 為向後刪除一個字元X為向前刪除一個字元
  2. nx n 為數字,連續向後刪除 n 個字元。舉例來說,我要連續刪除 10 個字元, 『10x』。
  3. dd 刪除游標所在的那一整列(常用)
  4. ndd n 為數字。刪除游標所在的向下 n 列,例如 20dd 則是刪除 20 列 (常用)
  5. d1G 刪除游標所在到第一行的所有資料
  6. dG 刪除游標所在到最後一行的所有資料
  7. d$ 刪除游標所在處,到該行的最後一個字元
  8. d0 那個是數字的 0 ,刪除游標所在處,到該行的最前面一個字元
  9. yy 複製游標所在的那一行(常用)
  10. nyy n 為數字。複製游標所在的向下 n 列,例如 20yy 則是複製 20 列(常用)
  11. y1G 複製游標所在列到第一列的所有資料
  12. yG 複製游標所在列到最後一列的所有資料
  13. y0 複製游標所在的那個字元到該行行首的所有資料
  14. y$ 複製游標所在的那個字元到該行行尾的所有資料
  15. p, P p 為將已複製的資料在游標下一行貼上,P 則為貼在游標上一行
  16. J 將游標所在列與下一列的資料結合成同一列
  17. c 重複刪除多個資料,例如向下刪除 10 行,[ 10cj ]
  18. u 復原前一個動作
  19. . 重複前一個動作

vim 圖解鍵盤

  • vi / vim 圖解鍵盤指令
Vi-vim-cheat-sheet.png

設定vi and vim

  • Configuring on the fly
  1.  :set or :set all
  • 設定檔存放地區
  1. ~/.vimrc or ~/.exrc
  • A few common configuration items
  1.  :set paste 支援貼上模式
  2.  :set number
  3.  :set autoindent
  4.  :set textwidth=65 (vim only)
  5.  :set wrapmargin=15
  6.  :set ignorecase
  • Run :help option-list for a complete list

線上help

  • vi/vim built-in help
  1.  :help
  2.  :help topic
  3. Use :q to exit help
  • vimtutor command

用vim打俄羅斯方塊

[lcc09@localhost ~]$ wget http://www.vim.org/scripts/download_script.php?src_id=650
[lcc09@localhost ~]$ mkdir -p .vim/plugin
[lcc09@localhost ~]$ cp tetris.vim .vim/plugin
  • start and play
install details Source it! Press :source TeTrIs.vim
To start the game, press te.
(If you don't know what is , you should press \te, 
and type :help Leader to learn about what the heck leader is)
Controls:
h: left
l: right
j: down
i,k: rotate
: drop
 or q: quit
(if you have more or other keys, which help you to learn VIM, 
please send me the mail)
p: pause game To restore, press te in any window! 
  • 沒圖沒真相
Vim te.jpg

補充資料

張貼留言