【VIM】vim 常用命令

文章目錄

      • 插入模式
      • 光標移動
      • 拷貝/粘貼/刪除/撤銷
      • 塊操作
      • 分屏
      • 代碼縮進
      • 命令組合使用
      • 其他
      • PowerVim

前言:本文內容大部分摘抄自酷殼和博客園 ? – ? CoolShell – 陳皓 ? 博客園 – 易先訊

插入模式

  • a → 在光標后插入
  • o → 在當前行后插入一個新行
  • O → 在當前行前插入一個新行
  • cw → 替換從光標所在位置后到一個單詞結尾的字符

光標移動

  • 0 → 數字零,到行頭
  • $ → 到本行行尾
  • gg → 到第一行
  • G → 到最后一行
  • :N → 到第N行
  • w → 到下一個單詞的開頭
  • e → 到下一個單詞的結尾
  • % : 匹配括號移動,包括 (, {, [ (實用)
  • *#: 匹配光標當前所在的單詞,移動光標到下一個(或上一個)匹配單詞(*是下一個,#是上一個) (實用)
  • /pattern:向下查找匹配指定模式的文本,按 n 查找下一個匹配項,按 N 查找上一個匹配項 (實用)
  • fa → 到下一個為a的字符處,你也可以 fs 到下一個為 s 的字符

拷貝/粘貼/刪除/撤銷

  • dd → 刪除當前行,并把刪除的行存到剪貼板里

  • ndd:剪切從光標所在行開始的 n 行

  • d$:剪切從光標所在位置到行末的文本

  • dG:剪切從光標所在行到文件末尾的文本

  • v 進入可視模式,移動光標選擇文本,然后按 d 剪切選中的文本 (實用)

    可視化選擇是一個很有意思的命令,你可以先按v,然后移動光標,你就會看到文本被選擇,然后,你可能d,也可y,也可以變大寫等

  • yy → 拷貝當前行當行于 ddP

  • y 的其他操作通 dd

  • p → 粘貼剪貼板

  • x → 刪當前光標所在的一個字符

  • u → 撤銷操作

  • Ctrl+r → 撤銷 “撤銷操作”,相當于保持不變

塊操作

塊操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

  • 0 → 到行頭
  • <C-v> → 開始塊操作
  • <C-d> → 向下移動 (你也可以使用 hjkl 來移動光標,或是使用%,或是別的)
  • I-- [ESC]I 是插入,插入“--”,按ESC鍵來為每一行生效,可以在行內的任意位置生效。
  • A-- [ESC] → 在每一行的行后插入

分屏

  • :split → 創建分屏 (:vsplit創建垂直分屏)
  • <C-w><dir> : dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一個,其用來切換分屏。

代碼縮進

  • ctrl+v 加入可視化操作,選擇代碼塊,然后:
  • J → 把所有的行連接起來(變成一行)
  • <> → 左右縮進
  • = → 自動給縮進

命令組合使用

你一定要記住光標的移動,因為很多命令都可以和這些移動光標的命令連動。很多命令都可以如下來干:

例如 0y$ 命令意味著:

  • 0 → 先到行頭
  • y → 從這里開始拷貝
  • $ → 拷貝到本行最后一個字符

你可可以輸入 ye,從當前位置拷貝到本單詞的最后一個字符。

你也可以輸入 y2/foo 來拷貝2個 “foo” 之間的字符串。

其他

  • . → (小數點) 可以重復上一次的命令
  • N → 重復某個命令N次
  • gU (變大寫)
  • gu (變小寫)

PowerVim

原生的 vim 比較難用,我們需要對其進行配置,但 Vim 的配置項多且較為復雜,因此在這里我推薦代碼隨想錄的 PowerVim,可以對 Vim 進行一鍵配置。

PowerVim – GitHub

PowerVim – Gitee

PowerVim 相關快捷鍵如下

正常模式下的快捷鍵(非插入模式)

  • ;n // 打開文件目錄樹顯示在屏幕左側
  • ;m // 打開當前函數和變量目錄樹顯示在屏幕右側
  • ;h // 光標移動到左窗口
  • ;l // 光標移動到右窗口
  • ;k // 光標移動到上窗口
  • ;j // 光標移動到下窗口 以上四個快捷鍵特別是打開多個窗口情況下。使用這個快捷鍵組合非常實用
  • ;w // 保存文件
  • ;u // 向上翻半屏
  • ;d // 向下翻半屏
  • ;1 // 光標快速移動到行首
  • ;2 // 光標快速移動到行末
  • ;a // 快速切換.h和cpp文件,寫C++的時候很方便
  • ;e // 打開一個新文件
  • ;z // 切回shell交互命令,輸入fg在切回vim,非常實用
  • ;s // 水平分屏,并打開文件目錄選取想打開的文件,如果想新建文件,;e 就好
  • ;v // 豎直分屏,并打開文件目錄選取想打開的文件,如果想新建文件,;e 就好
  • ;fw // 查找項目內關鍵字,前提是你的系統已經按照了ACK
  • ;ff // 查找項目內文件名
  • ;gt // 跳轉到變量或者函數定義的地方,前提是安裝ctags,并且在在PowerVim輸入 ;tg命令 Jump to the definition of the keyword where the cursor is located, but make sure you have make ctags
  • ;gr // 跳回,對應著;gt
  • ;tg // 對當前目錄打ctag
  • ;y // 保存當前選中的目錄到系統剪切板,前提是vim支持系統剪切板的寄存器
  • ;gg // 按順序光標跳轉各個窗口
  • ;t // 在輸入一個字符,則按照這個字符整體對齊

以下快捷鍵是不用;的,直接在 非插入模式 下輸入

  • tb // 插入表格
  • e // 快速刪除光標所在的詞
  • tabc // 關閉當前tab,可以用:tabnew來打開一個新的tab Close tab, of course you should :tabnew a file first.
  • F1 // 編譯并運行C++文件,自己寫的C++例子的時候一鍵編譯。前提手動在當前目錄建一個bin文件夾,這是用來存放編譯產生的執行文件
  • F1 // 編譯Java文件
  • F2 // 運行Java編譯的class文件,一般如果要編譯并運行Java文件 按F1編譯,在按F2運行
  • gc // 快速注釋選中的塊(是visual模式下選中的塊)
  • gcc // 快速當前行
  • { // 光標向上移動一個代碼塊
  • } // 光標向下移動一個代碼塊
  • di( // 刪除括號里的內容
  • di{ // 刪除花括號里的內容

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83680.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83680.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83680.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

polarctf-web-[簡單rce]

考點&#xff1a; (1)RCE(eval函數) (2)執行函數(passthru函數) (3)/頂級(根)目錄查看 (4)sort排序查看函數 題目來源&#xff1a;Polarctf-web-[簡單rce] 解題&#xff1a; 代碼審計 <?php/*?PolarD&N CTF?*/highlight_file(__FILE__);function no($txt){ # …

HarmonyOs開發之———使用HTTP訪問網絡資源

謝謝關注&#xff01;&#xff01; 前言&#xff1a;上一篇文章主要介紹HarmonyOs開發之———Video組件的使用:HarmonyOs開發之———Video組件的使用_華為 video標簽查看-CSDN博客 HarmonyOS 網絡開發入門&#xff1a;使用 HTTP 訪問網絡資源 HarmonyOS 作為新一代智能終端…

Vue 圖片預覽功能(含縮略圖)

眾所周知&#xff0c;常見的組件庫如Element、Ant Design&#xff0c;自帶的圖片預覽功能都沒有縮略圖&#xff0c;所以 需要單獨封裝一個圖片預覽的服務。 第三方庫&#xff1a;v-viewer 安裝&#xff1a; npm install v-viewer viewerjs 若使用報錯&#xff0c;可安裝指定…

手寫tomcat:基本功能實現(4)

邏輯架構 HTTP 請求與 Socket&#xff1a; 左側的 “HTTP 請求” 箭頭指向 “socket”&#xff0c;表示客戶端發送的 HTTP 請求通過 socket 傳輸到服務器。Socket 負責接收請求&#xff0c;并提取出其中的 請求路徑&#xff08;如 /first&#xff09;和 請求方法&#xff08;如…

jvm安全點(一)openjdk17 c++源碼垃圾回收安全點信號函數處理線程阻塞

1. 信號處理入口?? ??JVM_HANDLE_XXX_SIGNAL?? 是 JVM 處理信號的統一入口&#xff0c;負責處理 SIGSEGV、SIGBUS 等信號。??javaSignalHandler?? 是實際注冊到操作系統的信號處理函數&#xff0c;直接調用 JVM_HANDLE_XXX_SIGNAL。 ??2. 安全點輪詢頁的識別?? …

微信小程序:封裝表格組件并引用

一、效果 封裝表格組件,在父頁面中展示表格組件并顯示數據 二、表格組件 1、創建頁面 創建一個components文件夾,專門用于存儲組件的文件夾 創建Table表格組件 2、視圖層 (1)表頭數據 這里會從父組件中傳遞表頭數據,這里為columns,后續會講解數據由來 循環表頭數組,…

【FMC216】基于 VITA57.1 的 2 路 TLK2711 發送、2 路 TLK2711 接收 FMC 子卡模塊

產品概述 FMC216 是一款基于 VITA57.1 標準規范的 2 路 TLK2711 接收、2 路 TLK2711 發送 FMC 子卡模塊。該板卡支持 2 路 TLK2711 數據的收發&#xff0c;支持線速率 1.6Gbps&#xff0c;經過 TLK2711 高速串行收發器&#xff0c;可以將 1.6Gbps 的高速串行數據解串為 16 位并…

K8S Gateway API 快速開始、胎教級教程

假設有如下三個節點的 K8S 集群&#xff1a; ?? k8s31master 是控制節點 k8s31node1、k8s31node2 是工作節點 容器運行時是 containerd 一、Gateway 是什么 背景和目的 入口&#xff08;Ingress&#xff09;目前已停止更新。新的功能正在集成至網關 API 中。在 Kubernetes …

時序數據庫IoTDB分布式架構解析與運維指南

一、IoTDB分布式架構概述 分布式系統由一組獨立的計算機組成&#xff0c;通過網絡通信&#xff0c;對外表現為一個統一的整體。IoTDB的原生分布式架構將服務分為兩個核心部分&#xff1a; ?ConfigNode&#xff08;CN&#xff09;?&#xff1a;管理節點&#xff0c;負責管理…

Ubuntu 20.04 LTS 中部署 網頁 + Node.js 應用 + Nginx 跨域配置 的詳細步驟

Ubuntu 20.04 LTS 中部署 網頁 Node.js 應用 Nginx 跨域配置 的詳細步驟 一、準備工作1、連接服務器2、更新系統 二、安裝 Node.js 環境1、安裝 Node.js 官方 PPA&#xff08;用于獲取最新穩定版&#xff09;&#xff1a;2、安裝 Node.js 和 npm&#xff08;LTS 長期支持版本…

3DVR制作的工具或平臺

3DVR&#xff08;三維虛擬現實&#xff09;是利用三維圖像技術和虛擬現實技術&#xff0c;將真實場景進行三維掃描并轉換成計算機可識別的三維模型&#xff0c;使用戶能夠在虛擬空間中自由漫游&#xff0c;體驗身臨其境的感覺。3DVR技術結合了全景拍攝和虛擬現實&#xff0c;提…

垂直智能體:企業AI落地的正確打開方式

在當前AI浪潮中&#xff0c;許多企業急于跟進&#xff0c;推出自己的AI智能體解決方案。然而&#xff0c;市場上大量出現的"萬能型"智能體卻鮮有真正解決實際問題的產品。本文將探討為何企業應該專注于開發垂直領域智能體&#xff0c;而非追求表面上的全能&#xff0…

軟件工程各種圖總結

目錄 1.數據流圖 2.N-S盒圖 3.程序流程圖 4.UML圖 UML用例圖 UML狀態圖 UML時序圖 5.E-R圖 首先要先了解整個軟件生命周期&#xff1a; 通常包含以下五個階段&#xff1a;需求分析-》設計-》編碼 -》測試-》運行和維護。 軟件工程中應用到的圖全部有&#xff1a;系統…

王者榮耀游戲測試場景題

如何測試一個新英雄&#xff1a;方法論與實踐維度 測試一個新英雄不僅僅是“打打打”&#xff0c;而是一套完整的測試流程&#xff0c;包括設計文檔驗證、功能驗證、數值驗證、性能驗證、交互驗證等。可以從以下多個角度展開&#xff1a; &#x1f50d; 1. 方法論維度 ? 測試…

第四天的嘗試

目錄 一、每日一言 二、練習題 三、效果展示 四、下次題目 五、總結 一、每日一言 很抱歉的說一下&#xff0c;我昨天看白色巨塔電視劇&#xff0c;看的入迷了&#xff0c;同時也看出一些道理&#xff0c;學到東西&#xff1b; 但是把昨天的寫事情給忘記了&#xff0c;今天…

多模態大語言模型arxiv論文略讀(七十八)

AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ?? 論文標題&#xff1a;AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ?? 論文作者&#xff1a;Zhen Xing, Qi Dai, Zejia Weng, Zuxuan W…

優化 Spring Boot 應用啟動性能的實踐指南

1. 引言 Spring Boot 以其“開箱即用”的特性深受開發者喜愛,但隨著項目復雜度的增加,應用的啟動時間也可能會變得較長。對于云原生、Serverless 等場景而言,快速啟動是一個非常關鍵的指標。 2. 分析啟動過程 2.1 啟動階段概述 Spring Boot 的啟動流程主要包括以下幾個階…

Ubuntu下配置VScode出現#include錯誤請更新includePath的解決方法

首先Ubuntu新手小白一定要先安裝g&#xff0c;安裝方法是&#xff1a; 在桌面右鍵打開終端&#xff0c;輸入&#xff1a;sudo apt-get install g 安裝好g之后&#xff0c;在vscode終端輸入&#xff1a;g -v -E -x c - 輸出這些路徑&#xff0c;復制 如果還存在顯示cout不存在的…

【背包dp】小結

背包問題總結 一、什么是背包問題&#xff1f; 定義&#xff1a;給定一個容量為 W 的背包和 n 件物品&#xff0c;每件物品有一個重量 w[i] 和價值 v[i]&#xff0c;要求選擇若干物品放入背包&#xff0c;在不超過容量的前提下&#xff0c;使總價值最大。 背包問題本質是&am…

濟南國網數字化培訓班學習筆記-第三組-1-電力通信傳輸網認知

電力通信傳輸網認知 電力通信基本情況 傳輸介質 傳輸介質類型&#xff08;導引與非導引&#xff09; 導引傳輸介質&#xff0c;如電纜、光纖&#xff1b; 非導引傳輸介質&#xff0c;如無線電波&#xff1b; 傳輸介質的選擇影響信號傳輸質量 信號傳輸模式&#xff08;單工…