1. vim 將檔案從dos格式轉換到unix格式
vim file.txt
:set fileformat=unix
:w2. 刪除文字中的^m
三種行尾格式如下:
unix : \n
dos : \r\n
mac : \r
這意味著,如果你試圖把乙個檔案從一種系統移到另一種系統,那麼你就有換行符方面的麻煩。
因為ms-dos及windows是回車+換行來表示換行,因此在linux下用vim檢視在windows下寫的**,行尾後「^m」符號。
在vim中解決這個問題,很簡單,在vim中利用替換功能就可以將「^m」都刪掉,鍵入如下替換命令列:
:%s/^m//g
注意:上述命令列中的「^m」符,不是「^」再加上「m」,而是由「ctrl+v」、「ctrl+m」鍵生成的,或者ctrl+v,再按回車。
或者使用這個命令:
:% s/\r//g
3. vim中將tab轉換成空格
在vim中,有時需要將tab轉換成space。使用ret命令(replace tab)。
[range]ret[ab]! [new-tabstop]
舉例:將第一行到檔案尾的tab轉換成space,每個tab用4個space替代。
:set expandtab
:%ret! 4
如果沒有給定4,則用當前的tab寬度設定替換為space。
:set tabstop=4 設定tab寬度為4個字元
:set shiftwidth=4 設定自動縮排為4個字元
:set expandtab 用space替代tab的輸入
:set noexpandtab 不用space替代tab的輸入
4. 刪除指定行每行固定的前幾個字元
例如,從第3行到第10行,每行的前3個字元刪除
:3, 10s/^...//
5. gvim的配置
6. 顯示歷史命令
q: 進入命令歷史編輯
7. visual模式下的拷貝,複製和貼上
參考:進入vim中visual模式,visual模式進入,可以有三種方式:
(1)在普通模式(normal)下,直接按鍵 v 就可以進入預設visual模式,可以使用j/k/h/l 進行文字選擇
對於選中的文字進行如下按鍵:
(1.1)d ------ 剪下操作
(1.2)y -------複製操作
(1.3)p -------貼上操作
(1.4)^ --------選中當前行,游標位置到行首(或者使用鍵盤的home鍵)
(1.5)$ --------選中當前行,游標位置到行尾(或者使用鍵盤的end鍵)
(2)visual line模式 按鍵v可以進入
按鍵v之後,進入visual line模式,使用 j/k鍵可以選中一行或者多行
(3)visual block模式,按鍵ctrl + v可以進入
按鍵ctrl+v之後,進入visual block模式,使用 j/k/h/l鍵可以選中一塊
注:在塊模式下,可以進行多列的同時修改,修改方法是:
首先進入塊模式 ctrl+ v
使用按鍵j/k/h/l進行選中多列
按鍵shift + i 進行 塊模式下的插入
輸入字元之後,按鍵esc,完成多行的插入
8. vim tab 設定為4個空格
在.vimrc中新增以下**後,重啟vim即可實現按tab產生4個空格:
set ts=4 (注:ts是tabstop的縮寫,設tab寬4個空格)
set expandtab
對於已儲存的檔案,可以使用下面的方法進行空格和tab的替換:
tab替換為空格:
:set ts=4
:set expandtab
:%retab!
空格替換為tab:
:set ts=4
:set noexpandtab
:%retab!
9. vim拷貝格式錯亂問題
有時候,複製文字(尤其是**)到 vim,會出現格式錯亂的問題。看樣子,應該是自動縮排惹得禍。本文不去深究原因,直接給出解決方法。
1. paste 模式
執行如下命令,進入 paste 模式:
:set
paste
進入 paste 模式後,按 i 鍵進入插入模式,然後再粘帖,文字格式不會錯亂了。但粘帖後還需要按 進入普通模式並執行如下命令結束 paste 模式:
:set
nopaste
顯然,這樣非常麻煩。下面我們進行改進。
2. 快捷鍵一
我們可以利用設定快捷鍵來簡化上面的兩個命令。在 ~/.vimrc 中加入如下兩行:
map
<
f10>
:set
paste
<
cr>
map
<
f11>
:set
nopaste
<
cr>
這樣,在普通模式下按 f10 (你也可以用自己喜歡的按鍵)就會進入 paste 模式,按 i 進入插入模式後粘帖,然後按 回到普通模式,再按 f11 結束 paste 模式。
這樣雖然方便了,但占用了兩個按鍵。下面我們繼續改進。
3. 快捷鍵二
在 ~/.vimrc 中加入如下內容:
setpastetoggle
=<
f11>
這樣就可以把上面的 f10 和 f11 合併為乙個快捷鍵來切換 paste 模式了。
還有更好的辦法麼?當然!
4. vim 暫存器一
關於 vim 暫存器的詳細資訊請執行命令 「:help registers」 檢視。
對於「剪下板」這個概念,linux 下有兩個東西:乙個叫做選擇緩衝區(x11 selection buffer),另乙個才是剪下板(clipboard)。滑鼠或鍵盤選擇內容時,內容實時進入緩衝區,然後按中鍵將內容插入游標所在位置;滑鼠或鍵盤選擇內容後,按ctrl-c(或shift-ctrl-c)或選單中的「複製」,內容進入剪下板,然後按ctrl-v(或shift-ctrl-v)或選單中的「粘帖」將內容插入游標所在位置。關於這兩者的詳細資訊,請自行搜尋,此處不深究。
vim 的暫存器 「* 對應系統緩衝區, 暫存器 「+ 對應系統剪下板。
如果你是把選擇的內容(在系統緩衝區中)粘帖到 vim ,只需在普通模式下執行如下命令:
"*p
對應的,如果你是把複製的內容(在系統剪下板中)粘帖到 vim,只需在普通模式下執行如下命令:
"+p
怎麼樣?格式沒有錯亂了吧?
這樣雖然簡便很多了,但還是需要輸入三個字母,並且這三個字母都得使用右手小拇指輸入,甚至其中的兩個字母還需要 shift 鍵配合!
還有更簡單的辦法。
5. vim 暫存器二
在 ~/.vimrc 裡加入如下內容:
setclipboard
=unnamed
然後只需在普通模式下按 p 即可把系統緩衝區中的內容粘帖到 vim 中,就像粘帖用 yy 命令得到的內容一樣,並且格式不錯亂。
如果把上面的一行換成如下內容:
setclipboard
=unnamedplus
普通模式下按 p 粘帖的內容就是系統剪下板裡的內容了。
這已經足夠簡便了。在搜尋此問題的過程中,我還看到了另外一些辦法。
6. 快捷鍵三
在 ~/.vimrc 裡加入如下內容:
inoremap
insert
>
<
esc>:
setl paste
<
cr>
gir>+<
esc>:
setl nopaste
<
cr>gi
這樣,你就可以在插入模式下使用 shift-insert 快捷鍵在粘帖系統剪貼簿中的內容了。
把上面一行替換成如下內容同樣可以達到相同的效果:
inoremap
insert
>
<
esc>
"+p`]a
注意,這可是在插入模式下哦!比起第 5 節提到的方法,這種方法省去了一次 按鍵進入普通模式和一次 i 按鍵重新回到插入模式。
至此,你需要做的只是:
VIM使用總結
一 關於如何搭建成ide可以參考下面兩篇文章 2.vi vim使用高階 目錄 add 把vim打造成ide 整理,修訂 對si比較熟悉的,可以看看下面這篇,有si和vim功能的對比 從source insight到vim 二 新建乙個工程需要執行的操作 1.cscope rbq 生成cscope.i...
Vim使用總結
前言vim是乙個超級牛的編輯器,可以說是專為程式設計師設計的編輯器,強大的有些不可思議 不過其學習曲線稍顯陡峭,前兩天在網上找到乙個小圖表,比較全,如果對錶中所列的命令學習熟悉以後,處理日常的文字就已經足夠,所以貼出來,大家參考參考。vim的牛b之處不在於其功能之繁多,更不在於其學習曲線之陡峭,而在...
Vim使用總結
一般模式 切換到命令模式按shift 組合鍵,切換到插入模式按鍵i i a a r r s s中之一 插入模式 切換到一般模式按esc鍵 命令模式 鍵入相應命令按enter鍵後即處於一般模式 檢視模式 一般模式下鍵入v或v進入檢視模式,退出按esc 顯示行號在命令模式 螢幕下方出現 下,鍵入set ...