基本工作模式
- Insert
- Normal
- Visual
- Select
其模式切換方法
語法標記Syntax Highlight support
編碼支授(encode support)
:h encoding.txt
Key mapping(快捷鍵)
:h help.txt
文字物件(text object)
分頁支援 Tab Papges)
:h tabpage.txt
程式折疊(Folds)
File Type
格式化(Format)
而在我的Vim,我則是另外找個別人包裝好的
http://c9s.blogspot.tw/2007/09/enhanced-gvim-package-for-win32.html
在其中,已有了
Features:
- The NERD Tree ( Plugin )
- The NERD Commenter ( Plugin )
- Vcscommand ( Plugin )
- Slippery Snippets ( Plugin )
- Taglist + Ctag (win32)
- Monaco Font
- Bitstream Sans Mono Font
- A lot of Colorschemes
- Context Menu ( associated with files )
Usage:
- \e to open the NERD Tree Explorer
- \t to open the Taglist Window
再去介紹各個Plugin的使用
The NERD Tree ( Plugin )
" ----------------------------
" 基本操作
o: 開檔/資料匣/書籤
x: 關資料匣
O: 開資料匣包含子資料匣
X: 關資料匣包含子資料匣
D: 刪除書籤
" ----------------------------
" 巡訪樹快速鍵
P: 到根目錄
p: 到母節點
K: 到第一個兄節點
J: 到最後一個兄節點
Ctrl+j: 到下一個兄節點
Ctrl+k: 到上個兄節點
" ----------------------------
" 檔案系統
C: 改變根目錄至所選資料匣
u: 改變根目錄至上一層的根目錄
U: 改變根目錄至上一層的根目錄且原來的目錄開著
cd: 改變工作目錄到現在所選目錄
" ----------------------------
" 書籤指令
:Bookmark <name>
:BookmarkToRoot <name>
:RevealBookmark <name>
:OpenBookmark <name>
:ClearBookmarks [<name>]
:ClearAllBookmarks
The NERD Commenter ( Plugin ), 加註解
在Normal或者Visual 模式下:
- ,ca,在可选的注释方式之间切换,比如C/C++ 的块注释/* */和行注释//
- ,cc,注释当前行
- ,cA,在当前行尾添加注释符,并进入Insert模式
- ,cu,取消注释
- Normal模式下,几乎所有命令前面都可以指定行数
- Visual模式下执行命令,会对选中的特定区块进行注释/反注释
Vcscommand ( Plugin )
用來比較兩個檔案間的差別.
Slippery Snippets ( Plugin )
其中<<i>>, <<count>> 及<<>>等,都是可以依序用Tab 做跳轉
在輸入for後, Tab
*不要按Esc鍵. 每個<<>>均是直接輸入後. 用Tab跳轉
Taglist + Ctag (win32)
在這版本中,已整合進去.
我們只需以\t, 即可開啓。
而其切換, Ctrl+ww
使用方式
- Monaco Font- Bitstream Sans Mono Font
則是用來對
Programmer 專用最佳字型 - Monaco font
字漂亮,0OlI 很好分辨
=====================================
:imap jj <Esc>
而接下來,則是我自己想要新增的Plugins部份
需要開啓多個檔案,同原本gvim中的Buffers的選單內容
'/bs', 分割出一个水平窗口打开bufexplorer
'/bv', 分割出一个垂直窗口打开bufexplorer
常用命令, 在bufexplorer界面中输入,
enter: 打开所选选缓冲文件
t: 在一个新标签中打开所选
D: 从缓冲列表中删除所选文件项.
d: 彻底关闭所选文件
Registers in Vim let you run actions or commands on text stored within them. To access a register, you type "a before a command, where a is the name of a register. If you want to copy the current line into register k, you can type
折疊功能
手動產生折疊的指令是 zf、zF
zfap ,zf^ 將游標所在處的那個段落折疊成一行。
zf7G 自游標所在處至全文第 7 行折疊起來。
5zF 將游標所在處起算 5 行的內容折疊起來。
zo 將游標所在處的折疊打開。open。
zc 將游標所在處已打開的內容再度折疊起來
" 用空格键来开关折叠
supertab
目前我使用的組合是
自動補完: supertab
有相關的套件: snipmat
Ack.vim
===================================
vimrc file
1: " Colorscheme
2: "--------------------------------------------------- 3: colors zenburn4: "set guifont=Monaco:h10
5: set guifont=Bitstream\ Vera\ Sans\ Mono:h10 6: language mes en 7: lang en 8: set langmenu=en_US.UTF-8 9: winsize 120 35 10: winpos 10 20 11: 12: 13: syntax on 14: set nocp "no compatible 15: set number 16: set ai 17: set si 18: set incsearch 19: set showcmd 20: set shiftwidth=4 21: set tabstop=4 22: set noeb novb ruler 23: set ignorecase 24: set backspace=indent,eol,start 25: set history=60 26: set wildmenu 27: 28: 29: " encoding
30: set fileencodings=utf-8,big5,euc-jp,utf-bom,iso8859-1 31: set encoding=utf-8 32: set termencoding=utf-8 33: set fileencoding=utf-8 34: 35: 36: 37: filetype on 38: filetype plugin on 39: 40: 41: imap <F2> <C-R>=strftime("%c")<CR>
42: 43: nmap ,te :tabedit<SPACE> 44: nmap ,tx :tabedit .<CR> 45: nmap ,th :tab help<CR> 46: nmap ,tn :tabnew<CR> 47: 48: 49: " ctags 50: let Tlist_Ctags_Cmd = $VIM . '/ctags/ctags.exe'51: nmap <;leader>t :TlistToggle<CR>
52: 53: " snippet
54: set runtimepath+=$VIM\snippets\after 55: set runtimepath+=$VIM\snippets56: let g:snip_start_tag = "«"
57: let g:snip_end_tag = "»"
58: 59: " vcscommand 60: set runtimepath+=$VIM\vcscommand 61: 62: " nerd tree
63: nmap <leader>e :NERDTreeToggle<CR> 64: 65: " paste66: set pastetoggle=<;leader>p
67: 68: " 与windows共享剪贴板
69: set clipboard+=unnamed 70: " 不要备份文件(根据自己需要取舍) 71: set nobackup72: " 不要生成swap文件,当buffer被丢弃的时候隐藏它
73: setlocal noswapfile 74: set bufhidden=hide 75: " 在状态行上显示光标所在位置的行号和列号 76: set ruler77: set rulerformat=%20(%2*%<;%f%=\ %m%r\ %3l\ %c\ %p%%%)
78: """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
79: " 搜索和匹配80: """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
81: " 高亮显示匹配的括号 82: set showmatch83: " 匹配括号高亮的时间(单位是十分之一秒)
84: set matchtime=1 85: " 在搜索的时候忽略大小写 86: set ignorecase87: " 用空格键来开关折叠
88: set foldenable 89: set foldmethod=manual 90: nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>91: """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
92: " Autocommands
93: """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
94: " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
95: 96: if has("autocmd")
97: autocmd FileType xml,html,css,js,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby,markdown,sh,md set number 98: autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o--> 99: autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o 100: autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100 101: autocmd FileType html,htmldjango,jinjahtml,eruby,mako let b:closetag_html_style=1 102: autocmd FileType html,xhtml,xml,htmldjango,jinjahtml,eruby,mako source ~/.vim/bundle/closetag.vim/plugin/closetag.vim 103: autocmd BufReadPost *104: \ if line("'\"") >; 0 && line("'\"") <= line("$") |
105: \ exe " normal g`\"" |
106: \ endif107: endif "has("autocmd")
108: 109: " F5编译和运行C程序,F6编译和运行C++程序
110: " 请注意,下述代码在windows下使用会报错111: " 需要去掉./这两个字符
112: " C的编译和运行113: map <;F5> :call CompileRunGcc()<CR>
114: func! CompileRunGcc()
115: exec "w"
116: exec "!gcc % -o %<"
117: exec "! %<"
118: endfunc
119: " C++的编译和运行
120: map <F6> :call CompileRunGpp()<CR> 121: func! CompileRunGpp()122: exec "w"
123: exec "!g++ % -o %<;"
124: exec "! %<"
125: endfunc
126: 127: let g:SuperTabDefaultCompletionType = "context"
128: let g:snips_trigger_key='<;F3>'
129: :imap jj <;Esc>
130: