vim的基本使用方法

来源:http://www.cnblogs.com/everyday0error/archive/2016/03/24/5316363.html
-Advertisement-
Play Games

頭記:vim作為被大多數程式員所推崇的編輯器,是源於它的自由靈活以及令人舒服的輸入模式,但對於新手來說無疑是個噩夢(需要記太多的命令), 而作為使用了vim有一段時間的我來說,總結下常用的命令,以備新手快速進入vim,感受它的強大以及令人著迷的處理方式。 以下只介紹常用的使用方式,對於繁重的概念以及 ...


頭記:vim作為被大多數程式員所推崇的編輯器,是源於它的自由靈活以及令人舒服的輸入模式,但對於新手來說無疑是個噩夢(需要記太多的命令),

而作為使用了vim有一段時間的我來說,總結下常用的命令,以備新手快速進入vim,感受它的強大以及令人著迷的處理方式。

以下只介紹常用的使用方式,對於繁重的概念以及高難度的操作留待大家以後的興趣去探索。

初次用vi/vim打開文件既可以使用以下命令:

移動命令:

1.hjkl 四個按鍵對應左下上右,這四個按鍵是用來移動游標(同上下左右方向鍵),可以和數字組合使用如:nh (向左移動n步),其它方向同樣。

2.wb 這兩個按鍵是我最常使用的,分別代表向右向左移動一個單詞的長度。

3.gg 和 G 其中gg是移動到第一行,G移動到最後一行。

4.nG 移動到第n行。

還有很多的移動命令如:H L ...

插入文本:

1.iao 這三個按鍵對應這三種不同的插入方式,i在游標前插入(預設游標為方塊),a則是在游標後插入,o為新起一行併進入插入模式.還有其它的如:O向游標的上面插入新行併進入插入模式.

按esc可以進行移動命令

選擇文本:

1.v 按v進入選取模式從當前游標開始,之後移動游標即可進行選取。

2.V 按V直接選取一行,後續步驟同上。

3.ctrl + v 這個可以說是vi中非常好用的選取器了,可以進行塊選擇,後續同樣可以使用hjkl或者wb來進行塊的選取。

文本的剪貼,複製,粘貼以及撤銷:

1.對上邊選擇的文本可以使用d剪貼,y複製。

2.dd 剪貼當前行也可以使用ndd剪貼從當前開始的n行。

3.yy 複製當前行,也可以使用nyy 同上。

4.p 粘貼剪貼的內容或者複製的內容,一般會保留原格式粘貼,即用dd或者yy則粘貼到下一行,進行文本局部選取粘貼會在當前行。

5.P 向上粘貼,格式同上。

6. u 撤銷上一次操作。ctrl + r 與u操作相反。

相對高級一點的複製和粘貼:(但是非常有用)

vi/vim中內置有很多的寄存器,供分別使用.

1. "ayy 保存當前行在a寄存器中,"anyy 複製n行到a寄存器或者"any 按回車。寄存器從a-z,0-9非常之多。

2. +這兩個寄存器為系統剪貼板,可以複製內容到剪貼板供外邊使用,使用同上如:"+yy。

3."ap 粘貼a寄存器中的內容,其它的也一樣。

搜索模式:

1. / 向下搜索 如: /test 搜索test 可以使用vim中的正則,使用n移動到下一個搜索到的詞,N移動到上一個搜索到的詞。

2. ? 同上,只是使用n是向上搜索,N向下。

加入書簽:

1.m 如:mk在當前行加入標簽k 使用`k(註意是esc下的`)跳到k標記處。

 

命令模式:

可以說命令模式是vim的核心了,至少我現在使用時就是這種感覺。

(後續匹配文本都可以使用vim中的正則進行選定,這裡不介紹,以免增加使用難度,不過建議好好瞭解下正則)

1. :%g/需要匹配的內容/d 這條命令刪除整個文件中匹配到內容的所有行,其中%號代表的是進行全文本匹配,也可以使用{n,m}g//d表示從n開始到m結束,n與m都可以省略,預設即從當前行開始。

2. :s/需要匹配的文本/替換的文本/g 這條命令用來進行替換匹配到的文本,方法同上。

3. :s/\(匹配到的文本\)/插入的內容\0/g 這條命令與前邊命令不同之處在於用()把需要匹配的文本括起來,後邊則可以使用\0進行還原,實現插入操作,如分別括起來多個,則可以使用\1以此類推。

4. :!cd /home 這條命令的意思是調用linux系統下bash中的cd命令,並切換到家目錄,可以使用:!ls -l顯示當前工作目錄下的文件信息。

5. :reg 查看vim中寄存器的內容,可以隨時查看寄存器中的內容。

5 :h 調出幫助文件,非常有用。

文本文件的保存:

1. :w 修改的內容寫入原文件(vim編輯時會生成.swap臨時文件)。

2. :q 退出而不保存。

3. :wq 保存並退出。

4. :w! 強制寫入,退出命令也可以使用。

5. :x 如果有改變則寫入,否則退出。(最常使用)

vi多屏:

1. :sp 以橫屏的模式顯示另外一個文件。:vsp 以豎屏的方式顯示。:ex 切換到其它文件當前文件消失。

2. ctrl+w 在兩個文件切換。

vi合併其它文件:

1. :r path 把path文件追加到游標後。

附上vim替換操作以及正則:

一、正規表達式:
替換命令: s///g 下邊的命令可以組合起來使用
無 : 只對指定範圍內的第一個匹配項進行替換
g : 對指定範圍內的所有匹配項進行替換
c : 在替換前請求用戶確認
e : 忽略執行過程中的錯誤
二、元字元:
. : 匹配任意一個字元
[abc] : 匹配方括弧中的任意一個字元。可以使用-表示字元範圍。
[^abc] : 在方括弧內開頭使用^符號,表示匹配除方括弧中字元之外的任意字元。
\d : 匹配阿拉伯數字,等同於[0-9]
\D : 匹配阿拉伯數字之外的任意字元,等同於[^0-9]
\x : 匹配十六進位數字,等同於[0-9A-Fa-f]
\X : 匹配十六進位數字之外的任意字元,等同於[^[0-9A-Fa-f]
\w : 匹配單詞字母,等同於[0-9A-Za-z]
\W : 匹配單詞字母之外的任意字元,等同於[^0-9A-Za-z]
\t : 匹配<TAB>字元
\s : 匹配空白字元,等同於[ \t]
\S : 匹配非空白字元,等同於[^ \t]
*特別註意:如果需要查找元字元則需要\跳出
表示數量的元字元
* : 匹配0-任意個
\+ : 匹配1-任意個
\? : 匹配0-1個
\{n,m} : 匹配n-m個
\{n} : 匹配n個
\{n,} : 匹配n-任意個
\{,m} : 匹配0-m個
表示位置的符號
$ : 匹配行尾
^ : 匹配行首
\< : 匹配單詞詞首
\> : 匹配單詞詞尾

如有錯誤之處歡迎指出。


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

-Advertisement-
Play Games
更多相關文章
  • 系統信息 關機 (系統的關機、重啟以及登出 ) 文件和目錄 文件搜索 掛載一個文件系統 磁碟空間 用戶和群組 文件的許可權 使用 "+" 設置許可權,使用 "-" 用於取消 文件的特殊屬性 使用 "+" 設置許可權,使用 "-" 用於取消 打包和壓縮文件 RPM 包 - (Fedora, Redhat及類 ...
  • 系統來自:系統媽:http://www.xitongma.com 深度技術GHOST xp系統旗艦增強版 V2016年3月 系統概述 深度技術ghost xp系統旗艦增強版集合微軟JAVA虛擬機IE插件,增強瀏覽網頁時對JAVA程式的支持,添加安裝華文行楷、華文新魏、方正姚體、漢真廣標等常用字體。以 ...
  • 必備基礎: fork() 創建一個與之前完全一樣的進程,這兩個進程執行沒有固定的先後順序,哪個進程先執行要看系統的進程調度策略。 一個進程調用fork()函數後,系統先給新的進程分配資源,例如存儲數據和代碼的空間。然後把原來的進程的所有值都 複製到新的新進程中,只有少數值與原來的進程的值不同。相當於 ...
  • 一、shell 電腦硬體的直接控制者是操作系統的內核(kernel),因為內核的重要性,所以作為用戶的我們是無法直接操作內核的,所以我們需要shell調用應用程式或者雙擊打開安裝的應用軟體與內核之間進行通信。 shell就相當於是一個介面,連接程式與內核;或者可以說shell是一個辦公桌,給工作的 ...
  • 我的內核版本是: 所以接下來就是先安裝內核源碼: 執行後,/usr/src / 目錄就多了兩個文件夾: 這樣源碼就下載下來了,然後將源碼解壓: 解壓之後 /usr/src/linux-3.13.0/文件夾裡面的就是內核源碼了. 然後再對源碼進行編譯. 先進入/usr/src/linux-3.13.0 ...
  • 最近因為一個監控相關的項目,深入研究了一下 windows 的 遠程桌面的相關知識。 1. 如何讓關閉了遠程桌面連接的用戶,對應的 session 立即退出 windows server。 大家使用 mstsc.exe 遠程桌面登錄windows server時,退出時,99.99%的人會直接關閉 ...
  • gdb
    原文鏈接:http://www.orlion.ga/762/ 一、單步執行和跟蹤函數調用 對於以下程式 最後列印出的結果是55和5105,而第二個結果應該是5050。現在用gdb調試下。 在編譯時要加上-g選項生成的目標文件才能用gdb進行調試,-g作用是在目標文件中加入源代碼的信息,比如目標文件第 ...
  • 原文鏈接:http://www.orlion.ga/698/ ab是個什麼就不說了搞lamp的都會知道。主要看一下結果都是什麼意義。 ab 的用法是:ab [options] [http://]hostname[:port]/path 例如:ab -n 5000 -c 200 http://loca ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...