【Vim】實用命令列

來源:互聯網
上載者:User

標籤:java   使用   io   strong   檔案   ar   代碼   amp   

在vim中高亮關鍵字
  • syntax enable 可以高亮關鍵字:一般後面還要在跟一個syntax on開啟文法高亮
  • syntax clear 清除關鍵字高亮

在secureCRT不是xterminal模式的時候,試了一下,沒起作用啊,如果是xterminal模式的時候是會起作用的

在vim中尋找
  • / 後面跟要尋找的字串:從當前游標位置向上搜尋
  • ? 後面跟要尋找的字串:從當前游標位置向下搜尋
  • n 找下一個
  • N 找上一個
清除並重畫螢幕
  • [Ctrl+l]按鍵組合
vim快速鍵定製
  • 對於鍵盤符號,可以使用:help key-notation查看協助
定製編輯環境

set命令用來定製編輯環境。

  • set showmode 當vi處在輸入模式下時顯示提示資訊
  • set sm 即時顯示配對的)或}
  • set ts=n 把定位字元設定為n(預設為8)
  • set ai 下一行從前一行的縮排位置開始
  • set number 在編輯器中顯示行號
  • set nonu 取消在編輯器中的行號顯示
  • set hlsearch 高亮顯示搜尋到的字串
  • set incsearch 輸入字串就馬上顯示匹配點
  • set ruler 尺規,用於顯示光線標位置的行號和列號,逗號分隔。每個視窗都有自己的尺規。如果視窗有狀態行,尺規在那裡顯示。否則,它顯示在螢幕的最後一行上。
  • set cindent:cindent控制縮排量是通過shiftwidth選項的值,而不是通過tabstops的值,shiftwidth的預設值是8
  • set shiftwidth:改變shiftwidth的值
  • set helplang=cn :vim協助文檔無法顯示中文時,加入這句試試
  • set encoding=utf-8
  • colo murphy:有的時候使用vim開啟檔案時,顯示的顏色不適合閱讀,可以使用這條命令將配色改成這種黑底

我在gvim中使用了上面的方法進行了設定,但是貌似沒有起到作用,不知道是我使用得不對還是另有原因

移動游標
  • h 游標左移
  • l(或空格鍵) 游標右移
  • k(或[Ctrl+p]) 游標上移
  • j(或[Ctrl+n]) 游標下移
  • [Ctrl+f] 向前翻頁
  • [Ctrl+b] 向後翻頁
  • [Ctrl+d] 向前翻半頁
  • [Ctrl+u] 向後翻半頁
  • 1G 跳到檔案首
  • 40G 跳到第40行
  • G 跳到檔案尾
  • [Ctrl+g] 顯示當前行號及檔案的百分比
  • Ctrl +E scroll down
  • Ctrl +Y scroll up
在一行內移動游標

B、E和W命令的作用與b、e和w的作用一樣,只是後者忽略了標點符號。

  • b 向後移動到單詞首
  • e 向前移動到單詞尾
  • w 向前移動到單詞首
  • 0或| 移動到行首
  • 30| 移動到第30列
  • ^ 移動到本行的第一個單詞的首字元
  • $ 移動到行尾
  • : num 跳轉到指定行號
插入文本
  • i 在游標的左側插入字元
  • 20i-[Esc] 插入20個連字號
  • I 在行首插入字元
  • a 在游標的右側添加文本
  • A 在行尾添加文本
  • o 在當前行下面插入一空行
  • O 在當前行上面插入一空行
選擇文本
  • ve:選擇整個單詞
  • yw:複製游標所在的單詞
  • 5yl:複製5個字元的輸入
刪除和移動文本
  • x 刪除游標所在的字元
  • 6x 刪除游標位置的字元以及右側的5個字元
  • X 刪除前一個字元
  • dd 刪除當前行
  • 4dd 刪除4行
  • dw 刪除一個單詞
  • d0 刪除到行首
  • d$ 刪除到行尾
  • d 刪除一個地區(只用於vim)
  • p 把被剪下的文本粘貼到下面(整行)或右側(部分行)
  • P 把被剪下的文本粘貼到上面(整行)或左側(部分行)
  • add 把當前行粘貼到緩衝區a裡
  • ap 把緩衝區a裡的內容粘貼到當前位置
  • J 把當前行於下一行合并為一行
  • xp 調換兩個字元的位置(其實它是刪除一個字元,然後再又粘貼一個字元)
一些對程式員特別有用的快速鍵
  • [[ = 移動到前一個行首的{字元上,等價於?^{:其實就是尋找上一個函數
  • ]] = 移動到下一個行首的{字元上,等價於/^{:其實就是尋找上一個函數
  • [] = 移動到前一個行首的}字元上,等價於?^} :用起來感覺不是很方便
  • ][ = 移動到下一個行首的}字元上,等價於?^}:用起來感覺不是很方便
  • f = 到前一個空行上
  • g = 到下一個空行上
  • gd = 到當前局部變數的定義處(當前的意思是游標停留其上的單詞).:使用之後所有與當前游標所在的單詞匹配上的單詞都高亮了
  • gD:跳轉到變數定義的地方
  • * = 到與當前單詞相同的下一個單詞上
  • # = 到與當前單詞相同的上一個單詞上
  • ‘‘ = 到上次游標停靠的行
  • %:可以讓游標移動到與他相匹配的括弧上去:這個非常有用
  • >增加縮排,x>表示增加以下x行的縮排
  • <減少縮排,x<表示減少以下x行的縮排
  • syntax enable + syntax on開啟文法高亮
修改文本
  • rch 把游標位置的字元替換為ch
  • R 替換游標右邊的文本
  • s 把游標所在的字元替換為任意個字元
  • S 替換整行內容
  • cw 修改一個單詞
  • c 修改地區裡的文本(vim)
  • ~ 改變所掃描的或地區裡的字母的大小寫
  • !tr‘[a-z]‘‘[A-Z]‘把地區裡的字母轉換為大寫(vim)
  • !tr‘[A-Z]‘‘[a-z]‘把地區裡的字母轉換為小寫(vim)
vim 的tab相關

vim 從 vim7 開始加入了多標籤切換的功能, 相當於多視窗。之前的版本雖然也有多檔案編輯功能, 但是總之不如這個方便啦。

  • :tabnew [++opt選項] [+cmd] 檔案 : 建立對指定檔案新的tab
  • :tabe 在一個新tab中開啟指定的檔案
  • :tabc 關閉當前的tab
  • :tabo 關閉所有其他的tab
  • :tabs 查看所有開啟的tab
  • :tabp 前一個
  • :tabn 後一個

標準模式下:

  • gt , gT 可以直接在tab之間切換
  • :help table:詳細用法請查看相關協助文檔
Vim比較兩個檔案
  • vim -d file1 file2 直接開啟兩個檔案對比
  • vim file1開啟第一個檔案,然後使用vert diffsplit file2開啟第二個檔案進行對比;vert表示垂直分割視窗,預設為水平分割視窗
  • 直接對比兩個檔案的不同:使用diffthis分別在兩個視窗輸入;
  • [c, ]c定位不同點: 分別跳到前一個、後一個不同點;
  • ctrl-w w:視窗跳轉: 跳到下一個視窗
  • ctrl-w h/l: 跳到左側(右側)視窗
  • ctrl-w j/k 跳到上方(下方)視窗
  • dp文檔合并:將差異點的當前文檔內容合并到另外一個文檔(diff put)
  • do 將差異點的另一個文檔內容拷貝到當前文檔
  • zo 臨時展開被摺疊的相同內容
  • zc 重新摺疊
複製文本
  • yy 複製當前行
  • 6yy 複製六行
  • yw 複製單詞
  • y 複製地區(vim)
  • p 把複製的文本粘貼到右邊或下面
  • P 把複製的文本粘貼到左邊或上面
  • "ayy 把當前行複製到緩衝區a裡
  • "ap 恢複緩衝區a裡的內容
啟動編輯器
  • vi +100 foo 開啟檔案foo並把游標定位在100行
  • vi +/pat foo 開啟檔案foo並把游標定位在pat第一次出現的行
  • vi +foo 開啟檔案foo,把游標定位在檔案尾
  • vi foo1 foo2 ... 開啟檔案foo1,用n切換到foo2等
  • vi -r foo 把分頁檔裡的內容恢複到緩衝區裡
  • vi -R foo 一隻讀模式開啟foo檔案
儲存與退出
  • :w 儲存檔案並繼續編輯
  • :w bar 同微軟Windows作業系統中的“另存新檔……”
  • :w! bar 同上,但是覆蓋現存的檔案bar
  • :n1,n2w foo 把n1到n2之間的行儲存到檔案foo
  • :n1,n2w>>foo 把n1到n2之間的行添加到foo檔案尾
  • :.w foo 把當前行儲存到檔案foo
  • :$w foo 把最後一行儲存到檔案foo
  • :x 儲存並退出編輯器
  • :wq 同上
  • :q 如果檔案的內容沒有變化則退出編輯器
  • :q! 放棄修改並退出編輯器
vim中瀏覽目錄
  • :E :開啟vim預設路徑的檔案夾
  • :到上級目錄
  • D :刪除檔案(大寫)
  • R :改檔案名稱(大寫)
  • s :對檔案排序(小寫)
  • x :執行檔案
多檔案編輯

如果當前行還沒有儲存(並且 autowrite 未設定),則不能使用:e、:n和:rew命令。命令後面的!使得安全特性無效。

  • :e foo 停止對當前檔案的編輯,開始編輯foo檔案
  • :e! foo 同上,但是取消對當前檔案的修改
  • :e! 裝入當前檔案的最近儲存的內容
  • [Ctrl+^] 返回到最近編輯的檔案
  • :n 編輯下一個檔案(當用vi同時編輯多個檔案時)
  • :set autowrite(aw) 在用:n切換到下一個檔案之前自動儲存當前檔案
  • :rew 返回到檔案清單的第一個檔案(當用vi同時編輯多個檔案時)
  • :r foo 把foo檔案的內容插入當前行的下面
多視窗(vim)
  • :sq 把當前視窗拆分為兩個
  • :new 開啟一個新的空白視窗
  • :[Ctrl+w][Ctrl+w] 在視窗之間切換 Ctrl+w+R 將視窗移到右邊 Ctrl+w+L 將視窗移到左邊
  • :on 把當前視窗變為唯一的視窗
  • :q 退出當前視窗
  • :qa 退出所有視窗
  • :xa 儲存並退出全部視窗
  • [Ctrl]+ 增大視窗尺寸
  • [Ctrl]- 減小視窗尺寸
搜尋與重複

搜尋模式pat可以時一個字串,也可以是一個Regex。vi使用一套專用的字元序列來執行一行內的搜尋。

  • /pat 向前搜尋pat
  • ?pat 向後搜尋pat
  • /printf向前搜尋printf
  • ?[0-0]$ 向後搜尋行尾的數字
  • /^# 向前搜尋行首的#
  • n 按上次搜尋方向重複搜尋
  • N 按與前次搜尋的相反方向重複搜尋
  • :set wrapscan(ws) 繼續搜尋直至達到檔案尾
  • :set ignorecase(ic) 搜尋時不區分大小寫
  • :set magic 保留Regex字元的意義
  • fc 在當前行向前搜尋字元c
  • Fc 在當前行向後搜尋字元c
  • ; 在當前行重複上次向前搜尋
  • , 在當前行重複上次逆向搜尋
  • * :向下尋找游標所在的單詞,類似於/
  • #:向上尋找游標所在的單詞,類似於?
替換

源模式s1也可以是Regex。使用歐冠地址時,"."代表當前行,"$"代表最後一行,"1,$"代表整個檔案。

  • :.s/s1/s2 把當前行中第一次出現的s1替換為s2
  • :1,$s/s1/s2 把整個檔案裡的s1替換為s2
  • :1,$s/echo/printf/g 把全部的echo替換為printf
  • :1,$s/s1/s2/gc 按互動方式把全部s1替換為s2
  • :1,$s/#//g 刪除檔案中所有的“#”
  • :3,10s/^/#/g 在3至10行的行首插入“#”
  • :$s/$/;/ 在最後一行的行尾插入“;”
  • :1,$s/s1/s2/g把所有的s1替換為s2
  • :1,$s/HEAD/<&>/g 把所有的HEAD替換為
標誌與書籤
  • ma 設定一個標籤a
  • ‘a 移動到標籤a
  • " 在當前標誌與前一個標誌位置之間切換
重做與恢複
  • .重複上次命令
  • u 取消上次的編輯命令(在vim裡取消所有以前的命令)
  • [Ctrl+r] 重做上次取消的操作(只限於vim)
  • U 取消所有對當前行的操作
  • "4p 從緩衝區中恢複第4次最近的刪除操作
縮寫表示
  • :ab name stg 把name縮寫為stg
  • :unab stg 刪除stg縮寫
  • :ab 列出所有的縮寫
映射鍵
  • :map key commands 把key映射到commands
  • :map! key commands 在輸入模式下把key映射到commands
  • :unmap key 取消命令模式下的key映射
  • :unmap! key 取消輸入模式下的key映射
  • :map 顯示命令模式下所有的映射
  • :map! 顯示輸入模式下的所有映射
與UNIX的介面命令
  • :!cmd 執行UNIX的cmd命令
  • :!%把當前檔案作為shell或perl指令碼執行
  • :r !cmd 把cmd命令的結果插入到當前行的下面
  • :r !head -n 3 foo 把foo檔案前三行內容插入到當前行的下面
  • sh 暫時退出UNIX shell 環境
  • [Ctrl+z] 暫停編輯(用fg命令可以返回vi編輯器)
  • :!cc% 編譯正在編輯的C程式
  • :!javac %編譯正在編輯的Java程式
其它
  • 在檔案中要修改部分文本的縮排:在命令模式下,按v去選擇多行,再按shift+>(<)來改變縮排。
  • 也可以使用3再按shift+>(<)來改變縮排(3倍)
外掛程式安裝
  • 普通外掛程式自己將*.vim複製到~/.vim/plugin中即可
  • *.vmb的外掛程式:則首先需要使用vim將外掛程式開啟,然後使用命令:so %進行安裝
  • *.vba的外掛程式:首先使用vim開啟外掛程式,然後使用UseVimBall ~/.vim進行安裝
Vim的摺疊
  • 設定摺疊方式: 可用選項 ‘foldmethod‘ 來設定摺疊方式:set fdm=*
  • 6 種方法來選定摺疊:
    • manual 手工定義摺疊
    • indent 更多的縮排表示更進階別的摺疊
    • expr 用運算式來定義摺疊
    • syntax 用文法高亮來定義摺疊
    • diff 對沒有更改的文本進行摺疊
    • marker 對文中的標誌摺疊

注意,每一種摺疊方式不相容,如不能即用expr又用marker方式,我主要輪流使用indent和marker方式進行摺疊。
使用時,用:set fdm=marker 命令來設定成marker摺疊方式(fdm是foldmethod的縮寫)。
要使每次開啟vim時摺疊都生效,則在.vimrc檔案中添加設定,如添加:set fdm=syntax,就像添加其它的初始化設定一樣。

  • 摺疊命令
    選取了摺疊方式後,我們就可以對某些代碼實施我們需要的摺疊了,由於我使用indent和marker稍微多一些,故以它們的使用為例:
    如果使用了indent方式,vim會自動的對大括弧的中間部分進行摺疊,我們可以直接使用這些現成的摺疊成果。
    在可摺疊處(大括弧中間):
    zc 摺疊
    zC 對所在範圍內所有嵌套的摺疊點進行摺疊
    zo 展開摺疊
    zO 對所在範圍內所有嵌套的摺疊點展開
    [z 到當前開啟的摺疊的開始處。
    ]z 到當前開啟的摺疊的末尾處。
    zj 向下移動。到達下一個摺疊的開始處。關閉的摺疊也被計入。
    zk 向上移動到前一摺疊的結束處。關閉的摺疊也被計入。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.