vim note(6)--vim的一个较全的介绍(转)
vim的配置文件
~/.vimrc??? ?? 用戶的默認(rèn)配置文件 ~/.vim/plugin/ ??用戶的默認(rèn)腳本文件的存放文件夾 ~/.vim/ftplugin/?用戶的默認(rèn)文件類型相關(guān)腳本文件的存放文件夾
?vim提供的編程支持
文本信息(行號(hào)、文件名稱等) 代碼縮進(jìn) 語(yǔ)法高亮 高速定位 標(biāo)記位置 全文搜索 補(bǔ)全 多文件編輯 多窗體編輯 函數(shù)列表 文件列表 函數(shù)跳轉(zhuǎn) 語(yǔ)法錯(cuò)誤 字符集的編碼 二進(jìn)制查看
等等...
初試vim
在終端以root啟動(dòng) 輸入vim命令 顯示vim首頁(yè)
:r filename 讀入一個(gè)文件內(nèi)容,并寫入到當(dāng)前編輯器中
按i進(jìn)入插入模式
編輯完后:w保存
編輯完后按esc退出插入模式 進(jìn)入正常模式
然后輸入:sh進(jìn)入shell
編譯執(zhí)行
文本信息配置
set nu(寫入配置文件.vimrc中)?顯示行號(hào)。 ctrl-g(正常模式下使用命令)?顯示文件信息和當(dāng)前行。 statusline.vim(插件)?添加底部狀態(tài)欄。
代碼縮進(jìn)配置
filetype on(寫入配置文件.vimrc中)?使vim對(duì)文件類型敏感。 autocmd FileType c,cpp,h :setlocal cindent cinoptions=:0,g0,t0(寫入配置文件.vimrc中)?設(shè)置c縮進(jìn)風(fēng)格。詳細(xì)詳情參見:h cinoptions-values。 autocmd FileType c,cpp,h :setlocal et sta sw=4 sts=4 tabstop=4(寫入配置文件.vimrc中)?設(shè)置一次縮進(jìn)的距離是4個(gè)空格。 =(正常模式或者可視模式下使用命令)?依照縮進(jìn)風(fēng)格排版代碼。 <(可視模式下使用命令)?向左縮進(jìn)一級(jí)。 >(可視模式下使用命令)?向右縮進(jìn)一級(jí)。
語(yǔ)法高亮
filetype plugin on(寫入配置文件.vimrc中)?通常安裝的vim中已經(jīng)增加了各種語(yǔ)言的語(yǔ)法高亮插件。我們僅僅須要打開文件類型相關(guān)的插件就能夠了。
高速定位
gd(正常模式下使用命令)?跳轉(zhuǎn)到局部變量定義處。 gD(正常模式下使用命令)?跳轉(zhuǎn)到全局標(biāo)量定義處。 *(正常模式下使用命令)?搜索并跳到下一個(gè)光標(biāo)所在的單詞。 g*(正常模式下使用命令)?功能接近*,可是查找的目標(biāo)不帶\<和\>單詞分界符號(hào)。
#(正常模式下使用命令)?搜索并跳到上一個(gè)光標(biāo)所在的單詞。 g#(正常模式下使用命令)?功能接近#,可是查找的目標(biāo)不帶\<和\>單詞分界符號(hào)。
標(biāo)記位置
m{a-zA-Z0-9} (正常模式下使用命令)?在當(dāng)前位置制作一個(gè)標(biāo)記,標(biāo)記名字能夠使用a-z或者A-Z之間的隨意字符,比如輸入ma,就是將當(dāng)前位置標(biāo)記為a標(biāo)記。注意a-z為單文件標(biāo)記,不可跨文件使用。而A-Z0-9為全局標(biāo)記,能夠跨文件使用。
‘{a-zA-Z0-9} (正常模式下使用命令)?跳轉(zhuǎn)到本文件的標(biāo)記上。
:marks [{a-zA-z0-9}] (正常模式下使用命令)?查看指定標(biāo)記的內(nèi)容,不寫標(biāo)記號(hào)則查看全部。
:delm {a-zA-z0-9} (正常模式下使用命令)?刪除一個(gè)標(biāo)記。
全文搜索
:vimgrep(正常模式下使用命令)?全文搜索,功能同grep命令。可是支持在vim進(jìn)行多文件跳轉(zhuǎn)定位。
用法:vimgrep 正則表達(dá)式 文件。
文件支持通配符。比如*.c代表全部的.c文件。
假設(shè)希望遞歸搜索,能夠使用**/*,表示搜索全部的文件。 :cl?列舉結(jié)果 :cc(正常模式下使用命令)?當(dāng)前結(jié)果 :cn(正常模式下使用命令)?下一個(gè)結(jié)果 :cp(正常模式下使用命令)?上一個(gè)結(jié)果 :cw(正常模式下使用命令)?又一次打開搜索結(jié)果窗體
多文件編輯
vim f1 f2 …… fn(在shell下使用命令)?打開多個(gè)文件。 :e 文件名稱(正常模式下使用命令)?在vim中打開新文件。
:ls(正常模式下使用命令)?全部打開文件列表。 :bn(正常模式下使用命令)?到下一個(gè)文件。 :bp(正常模式下使用命令)?到上一個(gè)文件。 :b# 或 ctrl-6(正常模式下使用命令)?到近期的前一個(gè)文件。 set? autowriteall(寫入配置文件.vimrc中)?假設(shè)討厭每次打開新文件,vim喋喋不休的要求你保存。那么能夠設(shè)置自己主動(dòng)保存。
多窗體編輯 :sp? 文件名稱(正常模式下使用命令)?橫向拆分窗體(多行窗體)。
:vsp 文件名稱(正常模式下使用命令)?縱向拆分窗體(多列窗體)。 ctrl-w h(正常模式下使用命令)?將光標(biāo)移動(dòng)到左一個(gè)窗體。 ctrl-w j(正常模式下使用命令)?將光標(biāo)移動(dòng)到下一個(gè)窗體。 ctrl-w k(正常模式下使用命令)?將光標(biāo)移動(dòng)到上一個(gè)窗體。 ctrl-w l(正常模式下使用命令)?將光標(biāo)移動(dòng)到右一個(gè)窗體。
ctrl-w +(正常模式下使用命令)?當(dāng)前窗體尺寸變大。 ctrl-w -(正常模式下使用命令)?當(dāng)前窗體尺寸變小。 ctrl-w o(正常模式下使用命令)?僅僅顯示當(dāng)前窗體。
函數(shù)列表 taglist.vim(插件)?列表插件。 let Tlist_Use_Right_Window = 1(寫入配置文件.vimrc中)?假設(shè)希望列表在右側(cè)顯示,則增加這個(gè)配置,默認(rèn)是左側(cè)。 :Tlist(正常模式下使用命令)?顯示函數(shù)列表。 d(在taglist窗體下使用)?從列表中刪除文件。 +(在taglist窗體下使用)?展開文件。 -(在taglist窗體下使用)?折疊文件。
=(在taglist窗體下使用)?折疊全部文件。 x(在taglist窗體下使用)?顯示或隱藏正常窗體。
文件列表 NERD_tree.vim(插件)?橫向拆分窗體(多行窗體)。
let NERDTreeWinPos = 'right'(寫入配置文件.vimrc中)?假設(shè)希望文件樹在右側(cè)顯示。則增加這個(gè)配置,默認(rèn)是左側(cè)。 :NERDTree(正常模式下使用命令)?顯示文件列表。
函數(shù)跳轉(zhuǎn) ctags(軟件,須要另外安裝)?生成多種語(yǔ)言tag文件的軟件。
Ctags –R *.c(在shell下使用命令)?生成當(dāng)前路徑全部.c文件的tag。-R代表遞歸。 :ta 標(biāo)記 或 [g] ctrl-]?列舉標(biāo)簽(多個(gè)標(biāo)簽)或者跳轉(zhuǎn)到標(biāo)簽(單個(gè)標(biāo)簽)。
ctrl-t?返回上一級(jí)。
:tags?列出標(biāo)簽棧。
語(yǔ)法錯(cuò)誤 :make(正常模式下使用命令)?運(yùn)行外部make命令。而且顯示全部的編譯警告和錯(cuò)誤,而且能夠在vim中定位。 :cl?列舉結(jié)果 :cc(正常模式下使用命令)?當(dāng)前結(jié)果 :cn(正常模式下使用命令)?下一個(gè)結(jié)果 :cp(正常模式下使用命令)?上一個(gè)結(jié)果 :cw(正常模式下使用命令)?又一次打開搜索結(jié)果窗體
二進(jìn)制文件查看 (鑒于有同學(xué)理解出現(xiàn)分歧 將二進(jìn)制查看更新為二進(jìn)制文件查看)
:范圍!xxd(正常模式下使用命令)?把指定范圍的部分轉(zhuǎn)化為二進(jìn)制文件閱讀方式。
:范圍!xxd -r(正常模式下使用命令)?把指定范圍的部分轉(zhuǎn)回字符閱讀方式。
字符集的編碼 let &termencoding=&encoding set fileencodings=utf-8,gbk,cp936(寫入配置文件.vimrc中) ?增加多種字符編碼支持。
:set fileencoding(正常模式下使用命令)?設(shè)定文件字符編碼。
補(bǔ)充
ctrl-p(插入模式下使用命令)?跳出補(bǔ)全菜單。 ctrl-n(在跳出補(bǔ)全菜單后)?下一個(gè)結(jié)果。 ctrl-p(在跳出補(bǔ)全菜單后)?上一個(gè)結(jié)果。 ctrl-y(在跳出補(bǔ)全菜單后)?選擇當(dāng)前結(jié)果。 ctrl-x ctrl-f(插入模式下使用命令)?文件名稱補(bǔ)全。 ctrl-x ctrl-i(插入模式下使用命令)?包括的頭文件。 ctrl-x ctrl-](插入模式下使用命令)?ctags(將在下文中介紹)符號(hào)補(bǔ)全。
ctrl-x ctrl-o(插入模式下使用命令)?omni補(bǔ)全,須要設(shè)置omnifunc變量。
vim其它命令 (參考vi(vim)教程)
打開文件、保存、關(guān)閉文件:
vi filename ? ? ? //打開filename文件 :w?????? ???? //保存文件 :w vpser.net? //保存至vpser.net文件 :q???????? ??//退出編輯器。假設(shè)文件已改動(dòng)請(qǐng)使用以下的命令 :q!?????? ?//退出編輯器。且不保存 :wq ? ? ???? ?? ?//退出編輯器。且保存文件
插入文本或行:
a ? ? ?//在當(dāng)前光標(biāo)位置的右邊加入文本 i ? ? ??//在當(dāng)前光標(biāo)位置的左邊加入文本 A ? ? //在當(dāng)前行的末尾位置加入文本 I ? ? ?//在當(dāng)前行的開始處加入文本(非空字符的行首) O ? ? //在當(dāng)前行的上面新建一行 o ? ? //在當(dāng)前行的以下新建一行 R ? ?//替換(覆蓋)當(dāng)前光標(biāo)位置及后面的若干文本 J ? ?//合并光標(biāo)所在行及下一行為一行(依舊在命令模式)
移動(dòng)光標(biāo):
使用上下左右方向鍵
命令模式下:h?? 向左、j?? 向下 、k?? 向上、l? 向右。 空格鍵 向右、Backspace? 向左、Enter? 移動(dòng)到下一行首、-? 移動(dòng)到上一行首。
刪除:
x ? ? ? ? //刪除當(dāng)前字符 nx??????? //刪除從光標(biāo)開始的n個(gè)字符 dd ? ? ?//刪除當(dāng)前行 ndd ? //向下刪除當(dāng)前行在內(nèi)的n行 u ? ? ? //撤銷上一步操作 U ? ? ?//撤銷對(duì)當(dāng)前行的全部操作
搜索:
/vpser ? ? //向光標(biāo)下搜索vpser字符串 ?vpser????//向光標(biāo)上搜索vpser字符串 n ? ? ? ? ? //向下搜索前一個(gè)搜素動(dòng)作 N ? ? ? ?? ?//向上搜索前一個(gè)搜索動(dòng)作
跳轉(zhuǎn):
n+ ? ? ? ?//向下跳n行 n- ? ? ? ? //向上跳n行 nG ? ? ? ?//跳到行號(hào)為n的行 G ? ? ? ? ? //跳至文件的底部
設(shè)置行號(hào):
:set ?nu ? ? //顯示行號(hào) :set nonu ? ?//取消顯示行號(hào)
復(fù)制:
yy ? ?//將當(dāng)前行拷貝到緩存區(qū)。也能夠用 "ayy 復(fù)制,"a 為緩沖區(qū),a也能夠替換為a到z的隨意字母,能夠完畢多個(gè)復(fù)制任務(wù)。 nyy ? //將當(dāng)前行向下n行拷貝到緩沖區(qū)。也能夠用 "anyy 復(fù)制。"a 為緩沖區(qū),a也能夠替換為a到z的隨意字母,能夠完畢多個(gè)復(fù)制任務(wù)。 yw ? ?//復(fù)制從光標(biāo)開始到詞尾的字符。 nyw ? //復(fù)制從光標(biāo)開始的n個(gè)單詞。 y^ ? ? ?//復(fù)制從光標(biāo)到行首的內(nèi)容。?
y$ ? ? ?//復(fù)制從光標(biāo)到行尾的內(nèi)容。 p ? ? ? ?//粘貼剪切板里的內(nèi)容在光標(biāo)后,假設(shè)使用了前面的自己定義緩沖區(qū),建議使用"ap 進(jìn)行粘貼。
P ? ? ? ?//粘貼剪切板里的內(nèi)容在光標(biāo)前,假設(shè)使用了前面的自己定義緩沖區(qū),建議使用"aP 進(jìn)行粘貼。
替換:
:s/old/new ? ? ?//用new替換行中首次出現(xiàn)的old :s/old/new/g ? ? ? ??//用new替換行中全部的old :n,m?s/old/new/g ? ? //用new替換從n到m行里全部的old :%s/old/new/g ? ? ?//用new替換當(dāng)前文件中全部的old
編輯其它資源:
:e otherfilename ? ?//編輯文件名稱為otherfilename的文件。
改動(dòng)文件格式:
:set fileformat=unix ? //將文件改動(dòng)為unix格式,如win以下的文本文件在linux下會(huì)出現(xiàn)^M。
客串答案
c傳遞參數(shù)都是值傳遞的,指針的一個(gè)作用是為了解決實(shí)現(xiàn)類似引用的效果,另外,使用指針能夠直接操作內(nèi)存!
孫鶴同學(xué)的解釋:
每一個(gè)線程有固定大小的棧,通常主線程的棧默認(rèn)通常是8M,用指針去引用內(nèi)存,往往是在使用堆內(nèi)存,棧是有限的,而且受生存期影響,所以用堆的情況要比用棧很多其它,有些東西生存期非常長(zhǎng),超過一個(gè)函數(shù)的調(diào)用。那么就須要用堆內(nèi)存。
?本篇到此 希望對(duì)大家有幫助
?
?
?
?
下載地址:http://www.vim.org/scripts/script.php?
script_id=273 “Tag List" 插件是一個(gè)為VIM編寫的源碼瀏覽插件,須要ctags的支撐 ,直接能夠在左邊列出函數(shù)列表,全局參數(shù)列表,宏。(能夠排序) 1、下載taglist.zip文件,解壓到$HOME/.vim文件夾下,或者$HOME/vimfiles或$VIM/vimfiles文件夾下。在這一步后,你應(yīng)該有這兩個(gè)文件(文件夾結(jié)構(gòu)應(yīng)該被保留) ?????????plugin/taglist.vim?- taglist 插件文件 ?????????doc/taglist.txt????-? 文檔(幫助)文件 2. 進(jìn)入 $HOME/.vim/doc 或者 $HOME/vimfiles/doc 或者 $VIM/vimfiles/doc? ??? 文件夾, 執(zhí)行Vim,在命令行模式下執(zhí)行 ":helptags?." 命令處理taglist幫助文件,假設(shè)沒有這上步,你將不能得到taglist幫助提示 3、假設(shè)ctags工具不在你的PATH搜索路徑中,你須要在$HOME/.vimrc中設(shè)置Tlist_Ctags_Cmd 變量指出ctags的路徑。 4、假設(shè)你執(zhí)行的是terminal/console版本號(hào)的VIM,以及terminal 不支持改變窗體的寬度,你須要在$/HOME/.vimrc設(shè)置??? 'Tlist_Inc_Winwidth'? 變量為0, 5、重新啟動(dòng)vim 6、你能夠在vim的命令行模式中使用 ":TlistToggle" 命令打開/關(guān)閉taglist窗體。你能夠使用 ":help taglist" 命令得到很多其它的關(guān)于使用taglist插件的信息
?
?
NERDTree的安裝和使用2009-09-03 12:47| NERDTree來自: http://www.vim.org/scripts/script.php?script_id=1658 A。安裝。 1,解壓后,拷貝plugin/NERD_tree.vim文件到~/.vim/plugin下。拷貝doc/NERD_tree.txt文件到~/.vim/doc下 2,打開vim,載入文檔。 :helptags ~/.vim/doc/NERD_tree.txt 以后查看幫助僅僅要 :h NERD_tree.txt 就可以。 B。經(jīng)常使用使用。 1。標(biāo)簽。 1 - 1。打開一個(gè)文件夾。 :NERDTree ~/share/abc 1 - 2。標(biāo)記它。 :Bookmark your_mark_name_of_abc 1 - 3。打開這個(gè)標(biāo)簽。 :NERDTree your_mark_name_of_abc? 效果同 1 - 1。 2,高速幫助光標(biāo)在NERDTree的文件夾工作區(qū)時(shí)候,按? 鍵。 |
?
去除高亮
方法一::nohlsearch 方法二:/awertgvcxz (查找一個(gè)肯定不存在的字符串) 設(shè)置了高亮搜索(:set hlsearch)以后,能夠通過 :set nohlsearch 永久地關(guān)閉高亮 顯示,也能夠通過 :nohlsearch 臨時(shí)關(guān)閉高亮顯示。下次搜索時(shí)將自己主動(dòng)恢復(fù)高亮。轉(zhuǎn)自:http://9esuluciano.javaeye.com/blog/137333 怎么改動(dòng)當(dāng)前文件的文件名稱最相近的方法是 :saveas xxx 可是原文件還是存在的
this is the same way to same the file
then you need to delete the original file
轉(zhuǎn)載于:https://www.cnblogs.com/blfshiye/p/5219351.html
總結(jié)
以上是生活随笔為你收集整理的vim note(6)--vim的一个较全的介绍(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 1054 Strategic G
- 下一篇: java中array,arrayList