vim常用命令

来源:http://www.cnblogs.com/kevin2chen/archive/2017/04/14/6709968.html
-Advertisement-
Play Games

VIM一般分幾種模式,通過不同模式來區分輸入的到底是文字還是命令:1. Normal mode(common mode,以下簡稱 c-mode):一進入 VIM 就是處於 c-mode,只能輸入指令,不能輸入文字。這些指令可能是游標移動的指令,也可能是編輯指令或尋找替換指令。2. Insert mo ...


VIM一般分幾種模式,通過不同模式來區分輸入的到底是文字還是命令:
1. Normal mode(common mode,以下簡稱 c-mode):
一進入 VIM 就是處於 c-mode,只能輸入指令,不能輸入文字。這些指令可能是游標移動的指令,也可能是編輯指令或尋找替換指令。
2. Insert mode(i-mode):
按 i/a/o 會進入 i-mode,此時可以在編輯區輸入文字,按 Esc 會回到 c-mode。
3. Ed mode(common-line mode,e-mode):
按:進入 e-mode,VIM命令提示區(編輯區最下方)會有一個冒號:出現,可以輸入命令行命令,按 Esc 回 c-mode。
4.replace mode
按R進入替換模式,Esc返回c-mode

tips:在vim中Esc鍵需要經常使用,可以通過修改註冊表將Esc鍵和Caps鍵的功能換一下。


游標在字元間移動
k    上移 
h    左移 (Backspace )
l    右移 (空格鍵 )
j    下移

游標在單詞間移動(游標可以跨行,預設一個單詞由字母,數字和下劃線組成)
E e(end) 先移動到當前單詞結尾,若已經在結尾,則移動到下一個單詞結尾
B b(begin) 倒退到當前單詞的開頭,若已經在開頭,則移動到上一個單詞開頭
W w(word) 移動到下一個單詞開頭,標點符號也算一個單詞
註意:大寫的命令僅以空格作為單詞間的分隔符,其他標點符號作為單詞的一部分。


整行移動
0    移動到當前行首
^   移動到當前行的第一個非blank處
$    移動到當前行行尾
+    移動到下一行開頭(主鍵盤區shift + ”=鍵”,Enter也可以)
-    移動到上一行開頭
n|    移動到當前行的第n列

滾屏(游標跟著代碼走)
Ctrl+f(forward)      往前滾動一整屏
Ctrl+b(backward)      往回滾動一整屏
Ctrl+d(down)        往上滾動半屏
Ctrl+u(up)         往下滾動半屏
Ctrl+e           往後滾動一行
Ctrl+y           往前滾動一行

用z調整行
zt(top)           將游標所在行移動到屏幕頂端
zz             將游標所在行移動到屏幕中間
zb(bottom)         將游標所在行移動到屏幕低端

在屏幕範圍移動游標(不會滾屏)
H(hight)     將游標移動到屏幕頂端的行
M(middle)    移動到屏幕中央的行
L(low)      移動到屏幕底端的行
nH        移動到屏幕頂端往下的第n行
nL        移動到屏幕頂端往上的第n行

根據文本移動游標
% : 另一個對應的括弧,包括(, {, [

根據文本塊移動游標(編程時用得不多,編輯時使用)
文本塊也就是句子、段落、小節等
(  移動到當前句子開頭
)  移動到下一個句子開頭
{   移動到當前這一段開頭
}   移動到下一段開頭
[[  移動到當前這一節的開頭
]]  移動到下一節的開頭
其中,VIM以? . !等符號來標記一個句子,空白行來標記一個段落。

根據行號來移動
G    移動到文本末尾
gg   移動到文本開頭
nG    移動到第n行(同:n + enter命令一樣)
Ctrl+g  VIM顯示區顯示當前行的完整信息(從根盤符一直到當前行)
tips:``兩個單反引號可以返回到使用G之前的位置,只能記住一個

插入
字元位置插入
i  在游標之前插入
I  在一行的開頭處插入
a  在游標之後插入
A  在一行的結尾處追加
o  在游標所在位置的下一行打開新行插入
O  在游標所在位置的上一行打開新行插入
r  替換游標所在處一個字元

合併行
J  將下一行內容合併到當前行,中間空一個空格

字元刪除
x  剪切游標所在處字元,不會自動跨行
X  剪切游標前一個字元

單詞刪除
dw  從游標所在字元開始刪除到下一個單詞開頭
de  刪除到本單詞末尾(標點也算一個單詞)
dE  刪除到本單詞末尾(標點不算單詞)
db  刪除到前一個單詞
dB  刪除到前一個單詞包括標點在內

行刪除
dd  剪切本行所有內容
d$  剪切本行游標位置(含)之後的所有內容(同shift D)
d0  剪切本行游標位置(不含)之前的所有內容

搜索

fa  在游標所在行搜索下一個字元a,不跨行
*    往後匹配一個游標當前所在的單詞
#    往前匹配一個游標當前所在的單詞
/xyz  往游標下搜索xyz字元串
?xyz  往游標上搜索xyz字元串
gd   跳到該單詞定義的位置
n    下一個搜素目標
N    上一個搜索目標
:set hls    打開高亮
:set nohls   關閉高亮

標記

ma  將游標當前位置標記為a
'a    單引號加標記號,跳到標記處

複製(y)與粘貼
yw   複製從游標開始(含)到詞尾的字元
yb   複製從游標開始(不含)到詞首的字元
yy   將當前行複製到緩存區
nyy  將當前行向下n行複製到緩衝區
nyw  複製從游標開始的n個單詞(標點符號算一個單詞)
y^   複製從游標到行首的內容(y$到行尾)
p    在游標之後粘貼剪切板里的內容
P    在游標之前粘貼剪切板里的內容
tips:含後不含前(往前不含當前游標所在字元,往後含當前游標所在字元)
另外可以給緩存區做標記,方便以後引用,需要用到雙引號:
"ayy, "byy等,使用時"ap或"bp,粘貼不同的內容。

替換
:s/old/new     用new替換當前行中首次出現的old
:s/old/new/g    用new替換行中所有的old
:n,m s/old/new/g  用new替換從n到m行里所有的old
:%s/old/new/gic   用new替換當前文件里所有的old,c為confirm

修改(c):指先刪除,再進入編輯
通過c指令後面的參數,刪除相應的內容,然後進入編輯模式修改。
C或c$     對當前行游標後面的內容進行修改
c0或 c^   對從游標處到當前行行首的內容進行修改
cc 或S    對當前行進行修改
cw      對游標所在字元到該單詞結束部分進行修改(先刪除再進入編輯狀態)
cfx 或cFx  對從游標到下一個字元 x 之間的文本進行修改
cFx      對從游標到上一個字元 x 之間的文本進行修改
cG      表示對當前行至文本末行內容進行修改
tips:c 命令所刪除的數據都存在緩衝區, 可以粘貼使用。

重覆
.      重覆上一次的命令
N<command>  重覆某個命令N次,esc鍵執行該組合命令,enter鍵表示游標換行。

  10I*<esc>:在一行開頭輸入十個*
  5o###<esc>:在下5行中每一行開頭插入###
  5h:左移5次
  n+:向下跳n行
  n-:向上跳n行
  nx:剪切從游標開始的n個字元
  3dd:刪除3行

撤銷
u  撤銷上一步操作,可執行多次
U  撤銷對當前行的所有操作

visual模式
在可視化模式下,通過高亮顯示,不但可以看到將要被操作的對象,而且可以對選中的文本塊整體進行操作。
v  進入字元可視化模式,文本選擇是以字元為單位。
V  進入行可視化模式,文本選擇是以行為單位。
ctrl-V或ctrl-Q  進入塊可視化模式
gv    再次選中前一次可視化模式時選擇的文本

可視模式下:

o游標移動到塊區的對角,O移動到水平的另一邊。
vi[或vi’或vi}  選中當前游標所在的整個[]或’’或{}內的內容
va[或va’或va}  同上,而且符號本身也會被選中
viw  選中一個單詞

分屏

:sp  同一個文檔垂直分隔成兩個屏幕,可以顯示不同內容

打開/保存/退出/改變文件
:e <path/to/file>   打開一個文件
:w  保存文件
:saveas <path/to/file>  另存為 <path/to/file>
:wq  保存並退出
:q!  退出不保存
:qa!  強行退出所有的正在編輯的文件,就算別的文件有更改。
:bn 和 :bp  可以同時打開很多文件,使用這兩個命令來切換下一個或上一個文件。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • row.Table.Columns.Contains( "fieldname ") ...
  • 寫在開頭:看了一些視頻教程,感覺OD為什麼別人學個破解那麼容易,我就那麼難了呢,可能是沒有那麼多時間吧。 解釋:個人見解:所謂記憶體補丁,即:通過修改運行程式的內容,來達到某種目的的操作。修改使用OpenProcess打開,WriteProcessMemory寫入,CloseHandle關閉。部分需要 ...
  • 在程式設計 之 C#實現《拼圖游戲》 (上)中,上傳了各模塊代碼,在本文中將詳細剖析原理,使讀者更容易理解並學習,程式有諸多問題,歡迎指出,共同學習成長! ...
  • 一、前言 通常我們的項目會包含許多對外的介面,這些介面都需要文檔化,標準的介面描述文檔需要描述介面的地址、參數、返回值、備註等等;像我們以前的做法是寫在word/excel,通常是按模塊劃分,例如一個模塊包含n個介面,就形成一個文檔,然後再用版本控制管理。這樣做的缺點是: 1.不夠直觀,每次打開文檔 ...
  • MVC + Web API + AngularJs 搭建簡單的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage 佈局頁的引用 app.js app-route.js app-service.js demoCon ...
  • jsp
    動態網站的優勢: 1.交互性:即網頁會根據用戶的要求和選擇而動態改變和顯示內容 2.自動更新:即無需改變頁面代碼,便會自動生成新的頁面內容,可以大大節省工作量 3.隨機性:即當不同的時間,不同的人訪問同一個網址時會產生不同的頁面效果 目錄 說明 /bin 存放各種平臺下用於啟動和停止Tomcat的腳 ...
  • 1.動態網頁的優勢? ①交互性:即網頁會根據用戶的要求和選擇而動態改變和顯示內容. ③自動更新:即無需改變頁面代碼,便會自動生成新的頁面內容. ④隨機性:即當不同的時間、不同的人訪問一網址時會產生不同的頁面效果. 4.什麼是動態網頁? 動態網頁是指在伺服器端運行的,使用程式語言設計的互動式網頁, 它 ...
  • 增加動態輸出 整個web應用平臺的關註點在於構建並顯示動態輸出內容。在MVC里,控制器負責構建一些數據並將其傳給視圖。視圖負責渲染成HTML。 從控制器向視圖傳遞數據的一種方式是使用ViewBag 對象,它是一個控制器基類的成員。ViewBag是一個動態對象,你可以給他賦值任意屬性給視圖來渲染用。代... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...