VIM 編寫 code 很強大的插件

看到一些VIM 編寫代碼的強大的插件:



 function parameter complete, code snippets, and much more

http://www.vim.org/scripts/script.php?script_id=1764  



echofunc.vim : Echo the function declaration in the command line for C/C++

http://www.vim.org/scripts/script.php?script_id=1735



讓你的vim能夠查看函數列表

http://www.fwolf.com/blog/post/253

授權方式:署名,非商業用途,保持一致,轉載時請務必以超鏈接(http://www.fwolf.com/blog/post/253)的形式標明文章原始出處和作者信息及本聲明。

圖形界面下的很多編輯軟件都可以列出當前編輯文件中的函數列表,以便在編輯的時候能夠快速的跳轉。vim雖然沒有直接提供這種功能,但配合適當的工具和設定,可以完美的實現!

首先還是安裝,vim不用裝了,ubuntu中自帶,用到的ctags需要自己安裝一下,不要用舊的那個ctags,新的叫Exuberant Ctags

apt安裝即可:apt-get install exuberant-ctags。

然後按照vim.org上的安裝說明,下載taglist_42.zip,解壓到home目錄下的.vim子目錄中:

~/.vim$ unzip /home/fwolf/taglist_42.zip 
Archive: /home/fwolf/taglist_42.zip 
inflating: plugin/taglist.vim 
inflating: doc/taglist.txt

進入$HOME/.vim/doc目錄,打開vim,運行“:helptags .”命令,注意後面的點不要拉了,這是爲了生成ctags幫助文件的索引,然後才能正常使用幫助。(原來vi幫助中的ctrl+]進入鏈接、ctrl+T返回也是這麼來的)

現在,再啓動vim,tags功能就可以用了: vim中使用ctags的效果截圖

大概用法: 在使用vim的時候,使用:TlistToggle命令切換函數列表的開、關。 

按住ctrl鍵然後按兩下w鍵在正常編輯區域和tags區域中切換。 

在tags區域中,把光標移動到變量、函數名稱上,然後敲回車,就會自動在正常編輯區域中定位到指定內容了,很方便的。

常用的幾項.vimrc設置:

“禁止自動改變當前Vim窗口的大小
 let Tlist_Inc_Winwidth=0 
“把方法列表放在屏幕的右側
 let Tlist_Use_Right_Window=1 
“讓當前不被編輯的文件的方法列表自動摺疊起來, 這樣可以節約一些屏幕空間
 let Tlist_File_Fold_Auto_Close=1


Vim插件-標籤列表窗口插件taglist

TagList插件,是一款基於ctags,在vim代碼窗口旁以分隔窗口形式顯示當前文件的代碼結構概覽,增加代碼瀏覽的便利程度的Vim插件。官方網址:Tag List,當前最新可用版本爲v4.5.

1. 安裝

①下載taglist_45.zip

②解壓
將taglist.zip文件解壓至~/.vim文件夾下(壓縮包中包含有插件文件plugin/taglist.vim和幫助文件doc/taglist.txt)。

③生成幫助
命令行中切換當前路徑至~/.vim/doc文件夾,進入vim後執行命令

:helptags .

也可以在任意文件夾下,進入vim後執行命令

:helptags ~/.vim/doc

④環境檢查

taglist插件依賴於ctags及其所生成的標籤文件,如果用戶路徑設置中未包含ctags命令所在路徑,可以在vim設置文件中配置Tlist_Ctags_Cmd變量,指向ctags命令(而非ctags命令所在路徑)。

檢查Vim是否打開了filetype on選項。

如Vim所在終端/控制檯不支持改變窗口寬度,在Vim配置文件中配置變量Tlist_Inc_Winwidth爲0.

⑤重啓Vim

2. 標籤列表窗口

標籤列表窗口中以目錄樹的形式組織各級標籤:文檔作爲第一級,類別組標籤(如宏標籤組/函數標籤組/變量標籤組等)作爲第二級,而具體的對象標籤則爲第三級(葉子結點)。

如圖所示:

Taglist效果示意圖

3. 基本使用

在Vim中加載代碼文件後,可以使用以下命令控制taglist

  • :TlistOpen 打開並將輸入焦點至於標籤列表窗口
  • :TlistClose 關閉標籤列表窗口
  • :TlistToggle 切換標籤列表窗口狀態(打開←→關閉),標籤列表窗口是否獲得焦點取決於其他配置
  • ctl-w + w 或ctl-w + 方向鍵 窗口切換(taglist本質上是一個vim分隔窗口,因此可以使用ctl-w系列快捷鍵對窗口進行切換操作)
  • 使用鼠標單擊切換當前窗口,或在標籤列表窗口某標籤上雙擊使代碼窗口內窗跳轉至標籤定義
  • 標籤列表窗口內,當光標停留在某個標籤之上時,回車鍵可切換代碼窗口內容至標籤定義; 'o',在分隔窗口中顯示;'t',在vim新標籤窗口中顯示

4. 選項控制變量

在Vim配置文件中,可通過"let"語句設定以下變量控制taglist:

  • Tlist_GainFocus_On_ToggleOpen : 爲1則使用TlistToggle打開標籤列表窗口後會獲焦點至於標籤列表窗口;爲0則taglist打開後焦點仍保持在代碼窗口
  • Tlist_Auto_Open : 爲1則Vim啓動後自動打開標籤列表窗口
  • Tlist_Close_On_Select : 選擇標籤或文件後是否自動關閉標籤列表窗口
  • Tlist_Exit_OnlyWindow : Vim當前僅打開標籤列表窗口時,是否自動退出Vim
  • Tlist_Use_SingleClick : 是否將默認雙擊標答打開定義的方式更改爲單擊後打開標籤
  • Tlist_Auto_Highlight_Tag : 是否高亮顯示當前標籤。命令":TlistHighlightTag"也可達到同樣效果
  • Tlist_Highlight_Tag_On_BufEnter : 默認情況下,Vim打開/切換至一個新的緩衝區/文件後,標籤列表窗口會自動將當前代碼窗口對應的標籤高亮顯示。TlistHighlight_Tag_On_BufEnter置爲0可禁止以上行爲
  • Tlist_Process_File_Always : 爲1則即使標籤列表窗口未打開,taglist仍然會在後臺處理vim所打開文件的標籤
  • Tlist_Auto_Update : 打開/禁止taglist在打開新文件或修改文件後自動更新標籤。禁止自動更新後,taglist僅在使用:TlistUpdate,:TlistAddFiles,或:TlistAddFilesRecursive命令後更新標籤
  • Tlist_File_Fold_Auto_Close : 自動關閉標籤列表窗口中非激活文件/緩衝區所在文檔標籤樹,僅顯示當前緩衝區標籤樹
  • Tlist_Sort_Type : 標籤排序依據,可以爲"name"(按標籤名排序)或"order"(按標籤在文件中出現的順序,默認值)
  • Tlist_Use_Horiz_Window : 標籤列表窗口使用水平分割樣式
  • Tlist_Use_Right_Window : 標籤列表窗口顯示在右側(使用垂直分割樣式時)
  • Tlist_WinWidth : 設定水平分割時標籤列表窗口的寬度
  • Tlist_WinHeight : 設定垂直分割時標籤列表窗口的高度
  • Tlist_Inc_Winwidth : 顯示標籤列表窗口時允許/禁止擴展Vim窗口寬度
  • Tlist_Compact_Format : 減少標籤列表窗口中的空白行
  • Tlist_Enable_Fold_Column : 是否不顯示Vim目錄列
  • Tlist_Display_Prototype : 是否在標籤列表窗口用標籤原型替代標籤名
  • Tlist_Display_Tag_Scope : 在標籤名後是否顯示標籤有效範圍
  • Tlist_Show_Menu : 在圖型界面Vim中,是否以下拉菜單方式顯示當前文件中的標籤
  • Tlist_Max_Submenu_Item : 子菜單項上限值。如子菜單項超出此上限將會被分隔到多個子菜單中。缺省值爲25
  • Tlist_Max_Tag_Length : 標籤菜單中標籤長度上限

5. 標籤列表窗口快捷鍵

taglist快捷鍵:

  • <CR> : 代碼窗口跳轉到標籤列表窗口中光標所在標籤定義處
  • o : 在新建代碼窗口中跳轉到標籤列表窗口中光標所在標籤定義處
  • P : 跳轉至上一個窗口的標籤處
  • p : 代碼窗口中內容跳轉至標籤定義處,光標保持在標籤列表窗口中
  • t : 在Vim新標籤窗口中跳轉至標籤定義處。如文件已經在Vim標籤窗口中打開,則跳轉至此標籤窗口
  • Ctrl-t : 在Vim新標籤窗口處跳轉至標籤定義處
  •  : 顯示光標當前所在標籤原型。對文件標籤,顯示文件的全路徑名,文件類型和標籤數量。對標籤類型(指如variable/function等類別),顯示標籤類型和擁有標籤的數量;對函數/變量等普通標籤,顯示其定義的原型
  • u : 更新標籤列表窗口中的標籤信息
  • s : 切換標籤排序類型(按名稱序或出現順序)
  • d : 移除當前標籤所在文件的所有標籤
  • x : 擴展/收縮標籤列表窗口
  • + : 展開摺疊節點*
  • - : 摺疊結點*
  • * : 展開所有結點
  • = : 摺疊所有節點
  • [[ : 跳轉至上一個文件標籤的頭部
  • <Backspace> : 跳轉至上一個文件標籤頭部
  • ]] : 跳轉至下一個文件標籤頭部
  • <Tab> : 跳轉至下一個文件標籤頭部
  • q : 關閉標籤列表窗口
  • F1 : 顯示幫助**

*ubuntu10.10+Vim7.2+Taglist4.5環境下,'+'似乎也是將節點摺疊起來,而非展開。左右方向鍵'←'和'→'可以展開節點。

**同上環境中,F1給出的是Gnome幫助手冊而非Taglist幫助。

6. taglist命令

taglist在Vim中提供了以下擴展命令:

  • :TlistAddFiles {files(s)} [file(s)...] 添加一或多個指定文件(的標籤項)到標籤列表窗口中。文件名錶達式中可使用通配符(*);如文件名中帶有空格,需要使用反斜槓對空格進行轉義("\ ")
  • :TlistAddFilesRecursive {directory} [{pattern}] 遍歷指定路徑{directory},將與模式{pattern}相匹配的文件加入標籤列表窗口。如未指定pattern,則使用缺省值'*'。如路徑中包含空格,需使用反斜槓'\'轉義("\ ")
  • :TlistClose 關閉標籤列表窗口
  • :TlistDebug [filename] 記錄taglist插件的調試信息。如指定了filename,則調試信息將被寫入此指定文件(如文件已存在,內容將被覆蓋);如未指定filename,則調試信息寫入腳本的局部變量中
  • :TlistLock 鎖定標籤列表,並且不處理新打開的文件
  • :TlistMessage 僅當調試信息寫入腳本局部變量時有效,顯示記錄的調試信息
  • :TlistOpen 打開並跳轉至標籤列表窗口
  • :TlistSessionSave {filename} 將當前打開文件及其標籤信息寫入指定文件
  • :TlistSessionLoad {filename} 從指定文件載入所保存的會話信息
  • :TlistShowPrototype [filename] [linenumber] 顯示指定文件中指定代碼行或之前的標籤的原型。如未指定文件名/行號,則使用當前文件名/當前行號
  • :TlistShowTag [filename] [linenumber] 顯示指定文件中指定代碼行或之前標籤名稱。如未指定文件名/行號,則使用當前文件名/當前行號
  • :TlistHighlightTag 加亮顯示標籤窗口中的當前標籤
  • :TlistToggle 在打開和關閉狀態間切換標籤窗口的狀態。標籤窗口切換至打開狀態後仍然光標保持在代碼窗口中
  • :TlistUndebug 停止記錄taglist插件調試信息
  • :TlistUnlock 解鎖標籤列表,並處理新打開的文件
  • :TlistUpdate 更新當前緩衝區的標籤信息

7. 全局函數

taglist插件爲Vim提供了一些全局函數,可供其他插件使用:

  • Tlist_Update_File_Tags({filename}, {filetype}) 以指定文件類型更新指定文件的標籤信息。如taglist插件此前未處理過指定文件,則會調用ctags對文件進行分析
  • Tlist_Get_Tag_Prototype_By_Line([{filename}, {linenumber}]) 獲取指定文件中指定行號或之前標籤的原型信息。如未指定文件名/行號,則使用當前緩衝區對應文件/當前行號
  • Tlist_Get_Tagname_By_Line ([{filename}, {linenumber}]) 獲取指定文件中指定行號或之前標籤的名稱信息。如未指定文件名/行號,則使用當前緩衝區對應文件/當前行號
  • Tlist_Set_App({appname}) 設置正在控制taglist的插件名稱

8. 其他

更多幫助,可參考Taglist Manual,或在Vim中執行以下命令獲取

:help taglist.txt




http://www.cnblogs.com/dubing/archive/2011/12/16/2290421.html

【linux+C】神器 vim

2011-12-16 16:48 by 熬夜的蟲子, 2439 閱讀, 20 評論, 收藏編輯

前篇回顧

  上篇介紹了linux下C編程基本環境配置以及相關工具使用選擇。

  不過10個大牛9個用vim,那麼咱們就來玩vim。linux下玩c就別依靠圖形界面。好吧告別Ide,命令行纔是c的王道。

  本篇文章感謝名爲孫鶴同學的技術支持 感謝有愛的c大牛們

  本文中多處使用vim插件(孫鶴提供),這些插件大多是在http://www.vim.org/處下載。


 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命令,但是支持在vim進行多文件跳轉定位。
使用方法: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喋喋不休的要求你保存,那麼可以設置自動保存。


http://fghjk.blog.51cto.com/4359709/804336

打開多個文件:
1.vim還沒有啓動的時候:
在終端裏輸入 
vim file1 file2 ... filen便可以打開所有想要打開的文件
2.vim已經啓動
輸入
:open file
可以再打開一個文件,並且此時vim裏會顯示出file文件的內容。

同時顯示多個文件:
:split
:vsplit

在文件之間切換:
1.文件間切換
Ctrl+6—下一個文件
:bn—下一個文件
:bp—上一個文件
對於用(v)split在多個窗格中打開的文件,這種方法只會在當前窗格中切換不同的文件。
2.在窗格間切換的方法
Ctrl+w+方向鍵——切換到前/下/上/後一個窗格
Ctrl+w+h/j/k/l ——同上
Ctrl+ww——依次向後切換到下一個窗格中



多窗口編輯
: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。


其他參考鏈接:

http://blog.csdn.net/sabalol/article/details/3426635

http://hi.baidu.com/howard1980/blog/item/3399e42668751b0a908f9d5f.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章