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