VIM常用命令——快速入門,行走江湖

来源:http://www.cnblogs.com/novahere/archive/2017/06/25/7076602.html
-Advertisement-
Play Games

VIM詳細命令有很多,我們選用一些常用的入門命令,足以對付日常的代碼編輯工作了,如果日後有需要使用其他命令,再來查詢也不遲。 vim一般有3種編輯模式,分別是插入模式,正常模式(normal mode),末行模式。 以下主要是在正常模式下的操作,其他模式操作會註明相關模式 1.1 移動游標 h >每 ...


VIM詳細命令有很多,我們選用一些常用的入門命令,足以對付日常的代碼編輯工作了,如果日後有需要使用其他命令,再來查詢也不遲。

vim一般有3種編輯模式,分別是插入模式,正常模式(normal mode),末行模式。

以下主要是在正常模式下的操作,其他模式操作會註明相關模式

 

1.1  移動游標

h------>每次按下向左移動

j------>每次按下向下移動

k------>每次按下向上移動

l------>每次按下向右移動

 

1.2  vim的進入和退出

  按<Esc>鍵,進入正常模式

  然後輸入以下的幾種方式來退出

:q           #不保存並退出vim
:q!          #強制退出
:wq           #保存文件並退出
:x            #相當於:wq

 

1.3  文本編輯之刪除

在正常模式(Normal mode)下,可以按下 x 鍵來刪除游標所在位置的字元。

 

1.4  文本編輯之插入

在正常模式下進入插入模式,可以有以下幾種方法:

可以按下 i 鍵,在游標處插入文本。

按下 a 鍵,在游標後面插入文本。

按下大寫 A 鍵,在游標所在行的最後一個字元後插入文本。

 

1.5  文本編輯之添加

按 A 鍵,在游標所在的行的文本末尾添加

按 a 鍵,在游標所在位置後面添加

 

2.1  刪除類命令

輸入 dw 可以從游標處刪除至一個單詞的末尾。

 

2.2  關於命令和對象

許多改變文本的命令都由一個操作符和一個動作構成。

使用刪除操作符 d 的刪除命令的格式如下:

  d  motion

其中:

  d    -  刪除操作符

  motion   -  操作符的操作對象(在下麵列出)。

一個簡短的動作列表:

  w  -  從當前游標位置到下一個單詞起始處,不包括它的第一個字元。

  e  -  從當前游標位置直到單詞末尾,包括最後一個字元。

  $  -  從當前游標位置直到當前行末。

 

2.3  使用計數制定動作

在動作前輸入數字 n ,會使它重覆 n 次。

輸入 2w 使游標向後移動2個單詞。

輸入 3e 使游標向後移動到第3個單詞的末尾。

輸入 0(數字零) 移動游標到行首。

 

2.4  使用計數以刪除更多

使用操作符時輸入數字 n ,可以使它重覆 n 次。

比如: operation  number(數字)  motion

  d2w  可以刪除2個單詞。

 

2.5  操作整行

輸入 dd 可以刪除一個當前行,並保存到寄存器,作用類似“剪切”操作,可以配合 p 操作使用。

 

2.6  撤消類命令

輸入 u 來撤消最後執行的命令,輸入 U 來撤消對整行的修改。

使用 Ctrl + r ,可以撤消一次之前的撤消命令。

 

3.1  置入類命令

輸入 p 將最後一次“剪切”的內容置入游標之後。

 

3.2  替換類命令

移動游標到要修改的字元位置,輸入 r 和一個字元替換游標所在位置的字元。

 

3.3  更改類命令(c命令,即 “change” 的意思)

要更改文本直到一個單詞的末尾,請輸入 ce 。

 

3.4  使用c更改更多

  c  [number]  motion

動作參數motion也是一樣的,可以是 w ,e ,$d。

 

4.1  定位及文件狀態

輸入 Ctrl + g ,顯示當前編輯文件中當前游標所在行位置以及文件狀態信息。

輸入大寫 G ,則直接跳到文件最後一行。

輸入nG,可以跳到行號為n的那一行。

輸入 gg,可以跳到文件的首行。

 

4.2  搜索類命令

輸入 / 加上一個字元串,可以在當前文件中查找該字元串。要想查找下一該字元串,按 n 鍵,如要反向查找,輸入大寫 N。

如果想逆向搜索,輸入 ? 代替 / 。

 

4.3  配對括弧的查找

定位游標在要配對的一處括弧處,輸入 % 可以查找與之配對的另一處括弧 ),],}。

 

4.4  替換命令

輸入 :s/old/new ,可以替換一次該行 old處的字元串 為 new處的字元串。

輸入 :s/old/new/g,可以替換該行所有 old處的字元串 為 new處的字元串。

輸入 :#,#s/old/new/g ,其中#,# 代表的是替換操作的起始行和結束行的行號。

輸入 :%s/old/new/g ,則是替換整個文件中的每個匹配串。

輸入 :%s/old/new/gc ,會找到整個文件中的每個匹配字元串,並且對每個匹配字元串提示是否進行替換。

 

5.1  在 VIM 內執行外部命令的方法

輸入 :! 然後緊接著輸入一個外部命令可以執行該外部命令。

例如, :!ls + 回車,該命令就是列舉處您當前目錄的內容。

 

5.2  關於保存文件的更多信息

要將對文件的改動保存到文件中,請輸入 :w 文件名。

 

5.3  一個具有選擇性的保存命令

通過按下 v 鍵選擇要保存文件的部分內容,然後輸入 :w  文件名,即可將選擇的內容保存到目標文件。

 

5.4  提取和合併文件

要向當前文件中插入另外的文件的內容,請輸入 :r 文件名。

 

6.1  打開類命令

輸入 o ,將在游標的下方打開新的一行併進入插入模式。

輸入大寫 O ,將在游標的上方打開新的一行,併進入插入模式。

 

6.2  另外一個置換類命令的版本

輸入大寫的 R ,可以連續替換多個字元。

 

6.3  複製粘貼文本

使用操作符 y 複製文本,使用 p 粘貼文本。

輸入 yy ,將複製游標所在行。

可以配合動作參數motion使用:

輸入 yw,複製一個單詞。

 


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

-Advertisement-
Play Games
更多相關文章
  • 這篇依然是跟 相關的方法,側重點是操作屬性的方法。 讀Zepto源碼系列文章已經放到了github上,歡迎star: "reading zepto" 源碼版本 本文閱讀的源碼為 "zepto1.2.0" 內部方法 setAttribute 如果屬性值 存在,則調用元素的原生方法 設置對應元素的指定屬 ...
  • 在Android的設計中,資源的訪問或者網路連接,要得到這些服務都需要聲明其訪問許可權,否則將無法正常工作。在Android中這樣的許可權有很多種,這裡將各類訪問許可權一一羅列出來,供大家使用時參考之用。 android.permission.EXPAND_STATUS_BAR 允許一個程式擴展收縮在狀態 ...
  • 網路狀態監測,分為兩種:動態註冊和靜態註冊。無論哪種方式,都會遇到許可權的問題,其實只要在AndroidManifest.xml中加入如下一句代碼: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 用模 ...
  • 前言: App項目開發大部分時候還是以UI頁面為主,這時我們需要調用大量的findViewById以及setOnClickListener等代碼,控制項的少的時候我們還能接受,控制項多起來有時候就會有一種想砸鍵盤的衝動。所以這個時候我們想著可以藉助註解的方式讓我們從這種繁重的工作中脫離出來,也讓代碼變得 ...
  • 1.給mysql創建用戶備份的角色,並且授予角色SELECT, RELOAD, SHOW DATABASES, LOCK TABLES等許可權。 2.在系統中找到存儲空間比較大的硬碟創建備份目錄,並且創建shell腳本 註意:-u和用戶名中間是沒有空格的,-p和密碼也是這樣的。3.添加計劃任務,需要安 ...
  • 最近,利用一些時間對oracle資料庫實時同步工具做了一些調研分析,主要關註了linkedin的databus和阿裡的yugong兩個中間件,其中databus需要在每個待同步的表上增加額外的列和觸發器來實現,方案比較重,本文將著重分析一下阿裡的yugong實現方案及給出分析調研報告。 1.yugo ...
  • 一款用JAVA語言開發的Redis管理及監控工具treeNMS橫空出世了。 ...
  • 今天啟動虛擬機,遇到如下錯誤: RAMDISK: incomplete write (31522 != 32768) write error Kernel panic not syncing : VFS: Unable to mount root fs on unknown block(0,0) 網 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...