2006年8月19日星期六

vim配置及常用的记不住的命令

vi的一些配置和命令老是记不住,放在这里。先找了一篇类似的文章放在这里,以后会以此为基础不断更改,逐渐消化掉。
我的locale:
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

我的vim版本:vim-7.0.174
我的.vimrc:

"中文问题
"输入中文
set encoding=utf8
"文件存储编码
set fileencoding=utf-8
set fileencodings=utf-8
set termencoding=utf-8
set enc=utf-8
"编程语法
syntax on
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
"set number
set cindent
set autoindent

# 自動判斷 big5 或 utf-8 會自動換編碼(Linux 設以下設定)
兩種方法:
1.
" 檔案存檔會存成utf-8編碼
"set fileencoding=utf-8
"
" 以下四個設下去. vim 編出來都是 utf-8 編碼的.
set fileencoding=utf-8
set fileencodings=big5,utf-8
set termencoding=big5
set enc=utf-8
" iconv -f big5 -t utf8 file.big5

2.
if has("multi_byte")
let $LANG="zh_TW.UTF-8"
set encoding=utf-8
setglobal fileencoding=big5
set fileencoding=big5
set bomb
set termencoding=big5
set fileencodings=utf-8,big5,euc-jp,gbk,euc-kr,utf-bom,iso8859-1
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif

其它還有非常多功能.. 就下面再說囉.. :)

開啟顏色
syntax on
syntax off 關閉

" 將註解由深藍色變綠色
" hi Comment ctermfg=Green
" 搜尋到的字加 hilight
set hlsearch

" 將註解由深藍色變淺藍色
highlight Comment ctermfg=darkcyan
highlight Search term=reverse ctermbg=4 ctermfg=7
highlight Normal ctermbg=black ctermfg=white

一個tab鍵空四格, 以空白代替(按兩個 tab 就等於是 tab)
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4

自動縮排
:set cindent
:set autoindent
:set cindent 取消
:set noautoindent 取消
:set noci 取消

數字行數
:set number (:set nu)
:set nonumber (:set nonu)

搜尋後不出現彩色make
:nohl

字首加字
:1,$s/^/#/g 在全部行首加上 #
:1,$s/\home\//g 將從頭到尾有/home/ 的字刪掉

字串取代
:1,$s/mysql_query\(\$sql\);/mysql_query(\$sql\) or die\(mysql_error\(\)\):/g
第一行取代到最後一行 1,$

編輯備份檔
vi -r filename

編輯一次兩個視窗
:new
Ctrl + w 切換視窗(Ctrl+w兩次, 或 Ctrl+w+ 上下鍵)
:e [tab]或filename開檔案編輯

編輯遠端ftp
:e ftp://url/filename

不自動換行
:set nowrap (一行太長會自動換到下一行)

輸入顏色
^[ 是 ESCAPE 鍵,
在 vi中, 先按 Ctrl-V 再按ESC就會出現了

shell 模式本來都是使用 bash.
若要改用 vi 來當預設的環境的話.
則在 .bashrc 最上面加入 set -o vi 即可.
(esc i 則進入 insert 模式, j.k 可以用上一次指令, 下一次指令)


若想要讓其它檔名可以支援 .php 的顏色設定
mkdir ~/.vim
vi filetype.vim
內容如下:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.ros setfiletype php
augroup END
這樣子就可以把 .ros 用 .php 的顏色設定

  • 使用拼写检查功能

    Vim 7 内置了一项与 Microsoft Word 类似的拼写检查功能,使用该功能可以检查出所拼写词语的错误。在默认情况下,这项功能是没有开启的。若是使用 GVim 的话,可通过“Tools -> Spelling -> Spell check on”菜单命令开启。Vim 一旦发现拼写错误的词语,则以红色的波浪线标记。而使用以下命令可以执行拼写检查功能的相关操作:

    • :set spell-开启拼写检查功能
    • :set nospell-关闭拼写检查功能
    • ]s-移到下一个拼写错误的单词
    • [s-作用与上一命令类似,但它是从相反方向进行搜索
    • z=-显示一个有关拼写错误单词的列表,可从中选择
    • zg-告诉拼写检查器该单词是拼写正确的
    • zw-与上一命令相反,告诉拼写检查器该单词是拼写错误的
  • 使用括弧高亮显示功能

    此特性在编码时非常具有帮助。对于如“{”、“}”之类的配对括弧,Vim 7 将高亮显示它们。如果不喜欢,可以使用“:NoMatchParen”命令禁用该功能。

  • 使用自动补完功能

    这是一个非常酷的特性。当你在写代码的时候,可以使用该功能帮助你自动完成标记、关键字等等。此功能支持 C、(X)HTML(包含 CSS)、JavaScript、PHP、Python、Ruby、SQL、XML 等语言。在插入模式中,连续按“[Ctrl+x] [Ctrl+o]”组合键可以打开该功能。你可以从弹出的列表框中进行选择。

  • 使用分页(tabs)功能

    此功能可让 Vim 同时打开多个文档进行编辑。其命令如下:

    • :tabe /path/to/file.txt-在一个新的 tab 页中打开文件
    • :tabnew-新建一个 tab 页
    • :tabs-查看 tab 页列表,通过“>”显示当前窗口、“+”显示可修改的缓冲区
    • :tabc-关闭当前的 tab 页
    • :tab split-在当前缓冲区使用新的 tab 页打开文件
    • :tabn-切换到下一个 tab 页
    • :tabp-切换到上一个 tab 页
    • :tabr[ewind]-转到第一个 tab 页
    • :tabf[irst]-与上一命令作用相同
  • 使用撤销分支功能

    可以使用 :undolist 命令查看缓冲区存在的撤销分支列表。而通过 :undo <> 命令则能够移到撤销的某个分支。



参见:
Vim 中文文档
Tsung's Blog: vi 設定