Vim入門教程vimtutor1.7總結

vimtutor命令可以打開教程文檔

原文特別提示 ???

特別提示:切記您要在使用中學習,而不是在記憶中學習

Vim模式

  • 正常模式(Normal Mode):默認模式,可以使用基礎命令進行操作
  • 命令模式(Command Mode)::起手,可以使用比正常模式更加復雜的命令進行操作
  • 插入模式(Insert Mode):主要用于編寫文檔
  • 可視模式(Visual Mode):模擬鼠標選中內容
  • 替換模式(Replace Mode):用于替換字符

默認規則

  • Crtl組合鍵無需區分大小寫
  • <key>表示某個按鍵
  • 所有的:命令都需要以<Enter>結束
  • 未特別說明的操作均在正常模式下執行
  • operator [number] motion操作符 [數字] 移動命令表示對numbermotion所掃過的區域進行operator操作,number可選,例如d4wc2e

Lesson 1

vim file_name:編輯文件
hjkl:分別用于向左、向下、向上、向右移動光標,方向鍵hjkl具有相同功能,3j表示光標向下移動3行
:q!:放棄所有修改并強制退出編輯器
x:用于將光標所在位置字符刪除,3x表示刪除光標位置及其之后的共3個字符
i:切換為插入模式
A:用于向該行末尾追加內容,會自動轉為編輯模式并將光標置于光標所在行末尾
:wq:用于保存并退出編輯器
<Esc>:將切換為正常模式,并撤銷一個不想輸入或部分完整的命令
數字 + 方向鍵或hjkl:將光標向某個方向移動n次

Lesson 2

w:從當前光標當前位置直到下一個單詞起始處,不包括它的第一個字符
e:從當前光標當前位置直到單詞末尾,包括最后一個字符
0:從當前光標當前位置移動到行首
$:從當前光標當前位置直到當前行末

2w:光標向后移動到第二個單詞首字符
3e:光標向后移動到第三個單詞末尾
4$:光標向后移動到第四行行尾

dw:將光標所在位置的單詞刪除
d2w:刪除兩個單詞
d$:將光標所在位置及該位置至所在行末尾的所有字符刪除
de:將光標所在位置及該位置至所在單詞末尾的所有字符刪除
d0:將光標所在位置及該位置至所在行首字符的所有字符刪除

dd:刪除整行
2dd:刪除兩行

U:撤銷上次對某一行的修改(不包括整行刪除、整行插入),U會撤銷U本身,U只能撤銷最新一次修改
u:撤銷上一次編輯命令,包括U但不包括uCtrl r
Ctrl r:重做上一次命令,包括U但不包括uCtrl r

Lesson 3

粘貼
p:將最后一次刪除的內容粘貼至光標之后,若為d$等非完整行內容,以字符為單位直接粘貼在光標之后,若為dd等完整行內容,以行為單位向下粘貼在新的行

替換
rc:c為任意字符,r會替換光標所在位置字符,c為指定的替換后的內容

修改
cw:刪除光標至單詞末尾字符,并切換為插入模式
c$:刪除光標至行末尾字符
c4l:刪除光標及其右邊緊鄰的共計4個字符,并切換為插入模式

Lesson 4

光標移動
gg:光標跳轉至第一行
G:光標跳轉至最后一行
5G:光標跳轉至第5行

文件狀態
Ctrl G:在最下方顯示文件狀態信息以及當前光標所在位置

查找
/str:自上而下查找字符串,str為要搜索的任意字符串
/str\c:自上而下查找字符串,str為要搜索的任意字符串,查找時忽略大小寫
?str:自下而上查找字符串,str為要搜索的任意字符串
n:查找下一個滿足條件的字符串
N:查找上一個滿足條件的字符串
Ctrl O:返回到上一個查找位置
Ctrl I:返回下一個查找位置
%:配對括號查找,對光標所在位置的()[]{}使用該命令可以將光標跳到與之配對括號的的位置,可以用于在程序調試時查找不配對括號

替換
:s/old/new:將光標所在行的第一個old字符串替換為new
:s/old/new/g:將光標所在行所有的old字符串替換為new
:n1,n2/old/new/g:將[n1, n2]間的所有的old字符串替換為new
%s/old/new/g:將整個文件中所有的old字符串替換為new
:%s/old/new/gc:將整個文件中的old字符串替換為new,且每次替換前要確認(confirm)是否進行替換

Lesson 5

執行外部命令
:!command:在VIM內執行外部命令需要以:!為開頭,command為任意外部命令,包括帶命令行參數的命令,支持空命令:!

保存
:w filename:保存為filename文件。filename為文件名,若省略文件名則保存文件到當前
v motion :w FILENAME:部分保存,使用v切換為可視模式,以光標所在位置為起始位置,使用光標移動選擇要保存的部分內容,直到下次使用:會觸發:'<,'>,繼續輸入w filename可以保存為filename文件

可視模式
v:進入可視模式,移動光標可以選中內容,可以對選中的高亮內容進行操作,如d可以刪除選中內容,c可以刪除選中內容并切換為插入模式

提取與合并
:r filename:將filename文件的內容以行為單位粘貼至光標下方
:r !command:將command命令的結果以行為單位粘貼至光標下方,如:r !ls

Lesson 6

插入
o:在光標下方新開一行,并將光標移動至新開行行首,切換模式為插入模式
O:在光標上方新開一行,并將光標移動至新開行行首,切換模式為插入模式
i:保持光標不動,切換至插入模式
a:將光標向后移動一個字符,并切換至插入模式
A:將光標移動至行尾,并切換至插入模式
注:使用<Esc>退出插入模式時光標會在本行向左移動一個字符,若已在第一個字符則不會移動

替換
R:切換至替換模式,替換模式與插入模式類似,區別在于插入模式中每個輸入的字符都會替換光標原本所在位置的字符

復制
y:將內容以字符為單位進行復制,使用p可以粘貼到光標位置之后,例如yw,或者切換至可視模式復制高亮內容

設置
:set ic:set ignorecase:ignore case,設置查找或者替換忽略大小寫
:set noic:not ingore case,設置查找或者替換不忽略大小寫

:set hls:set hlsearch:高亮顯示所有的匹配短語
:set is:set incsearch:增量搜索
注:在選項前加no可以關閉設置

Lesson 7

幫助
<HELP><F1>:help:使用在線幫助系統
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
:help vimrc-intro

補全功能
首先確保VIm不是在以兼容模式運行:set nocp,在命令模式下輸入部分命令:command,例如部分:!ls /root:!dirset number

<TAB>:自動選取一個補全命令
Ctrl D:列出補全備選向

Vim啟動腳本
使用vimrc文件自定義VIm配置,下面是Vim風格的文件編輯方式:

  1. 開始編輯 vimrc 文件
:edit ~/.vimrc          這是 Unix 系統所使用的命令
:edit $VIM/_vimrc       這是 MS-Windows 系統所使用的命令
  1. 將示例文件復制過來

vimrc_example.vim通常位于/usr/share/vim/vimXXX文件夾下

:r $VIMRUNTIME/vimrc_example.vim
  1. 保存文件
:write

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

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

相關文章

阿里云國際版云服務器防火墻怎么設置呢?

入侵防御頁面為您實時展示云防火墻攔截流量的源IP、目的IP、阻斷應用、阻斷來源和阻斷事件詳情等信息。本文介紹了入侵防御頁面展示的信息和相關操作&#xff0c;下面和012一起來了解阿里云國際版云服務器防火墻設置&#xff1a; 前提條件 您需要先在防護配置頁面&#xff0c;開…

vscode debug python 帶參數

兩種方法 第一種&#xff1a; 1&#xff0c;側邊欄選擇運行和調試 2&#xff0c;請先創建一個launch.json文件 3&#xff0c;并選擇配置文件為python文件 此時你的工作目錄下會多一個目錄.vscode和該目錄下一個launch.json文件&#xff0c;該文件則配置了你的debug配置。在…

【報錯】ModuleNotFoundError: No module named ‘websocket‘

1 報錯 ModuleNotFoundError: No module named websocket 2 解決方法 pip install websocket 1 報錯 AttributeError: module websocket has no attribute enableTrace 2 分析 一般是由于websocket的依賴包沒有安裝造成的。websocket.enableTrace()方法是在websocket-cli…

C語言第十課----------------掃雷----------數組的經典練手題

作者前言 &#x1f382; ??????&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; &#x1f382; 作者介紹&#xff1a; &#x1f382;&#x1f382; &#x1f382;…

React構建的JS優化思路

背景 之前個人博客搭建時&#xff0c;發現頁面加載要5s才能完成并顯示 問題 React生成的JS有1.4M&#xff0c;對于個人博客服務器的帶寬來說&#xff0c;壓力較大&#xff0c;因此耗費了5S的時間 優化思路 解決React生成的JS大小&#xff0c;因為我用的是react-router-dom…

ORA-01034: ORACLE not available、ORA-27101: shared memory realm does not exist

發生緣由 學習 Oracle 的使用&#xff0c;結果關機之后重新使用 SQLPlus 發現無法登錄 -- windows server 2003 使用 sqlplus連接oracle報錯 C:\Documents and Settings\Adminstrator> sqlplus system/linxuan ORA-01034:ORACLE not available ORA-27101:shared memory r…

SAP FIORI Launchpad 403 forbidden error

問題&#xff1a; 在前臺輸入/N/UI2/FLP 瀏覽器顯示 403 forbidden 查閱資料得知 相關sicf 的服務未激活 note:3011106 檢查以下所有服務是否已在事務代碼 SICF 中激活&#xff1a; /default_host/sap/bc/ui2/nwbc/ /default_host/sap/bc/ui2/start_up /default_host/sap…

prometheus告警發送組件部署

一、前言 要實現Prometheus的告警發送需要通過alertmanager組件&#xff0c;當prometheus觸發告警策略時&#xff0c;會將告警信息發送給alertmanager&#xff0c;然后alertmanager根據配置的策略發送到郵件或者釘釘中&#xff0c;發送到釘釘需要安裝額外的prometheus-webhook…

模擬實現消息隊列(以 RabbitMQ 為藍本)

目錄 1. 需求分析1.1 介紹一些核心概念核心概念1核心概念2 1.2 消息隊列服務器&#xff08;Broker Server&#xff09;要提供的核心 API1.3 交換機類型1.3.1 類型介紹1.3.2 轉發規則&#xff1a; 1.4 持久化1.5 關于網絡通信1.5.1 客戶端與服務器提供的對應方法1.5.2 客戶端額外…

一站式FlinkSpark平臺解決方案——StreamX

隨著Flink&Spark生態的不斷完善&#xff0c;越來越多的企業選擇這兩款組件&#xff0c;或者其中之一作為離線&實時的大數據開發工具&#xff0c;但是在使用他們進行大數據的開發中我們會遇到一些問題&#xff0c;比如&#xff1a; 任務運行監控怎么處理&#xff1f;使…

【LangChain概念】了解語言鏈?:第2部分

一、說明 在LangChain的幫助下創建LLM應用程序可以幫助我們輕松地鏈接所有內容。LangChain 是一個創新的框架&#xff0c;它正在徹底改變我們開發由語言模型驅動的應用程序的方式。通過結合先進的原則&#xff0c;LangChain正在重新定義通過傳統API可以實現的極限。 在上一篇博…

一文讀懂!一年耗能堪比2個三峽電站的大數據中心,背后竟隱藏著這些秘密......

全國大數據中心1年的能耗規模相當于2個三峽電站一整年的發電量&#xff0c;這是為什么&#xff1f; 大數據中心每耗費1度電&#xff0c;只有一半用在了“計算”上面&#xff0c;其他的都應用在散熱、照明等方面到底是怎么回事&#xff1f; 為什么說在算力上每投入1元&#xff0…

【二】數據庫系統

數據庫系統的分層抽象DBMS 數據的三個層次從 數據 到 數據的結構----模式數據庫系統的三級模式&#xff08;三級視圖&#xff09;數據庫系統的兩層映像數據庫系統的兩個獨立性數據庫系統的標準結構 數據模型從 模式 到 模式的結構----數據模型三大經典數據模型 數據庫的演變與發…

【系統軟件03】centos7安裝和使用node-v18.16.0(centos7升級glibc 2.28)

【系統軟件03】centos7安裝和使用node-v18.16.0&#xff08;centos7升級glibc 2.28&#xff09; 前言&#xff1a;本文是解決node 18.16.0的依賴問題&#xff0c;具體的node安裝流程&#xff0c;可以參考我的另外一篇文章。一、下載node v18.16.0二、下載glibc2.28&#xff08;…

uniapp使用阿里矢量庫

然后解壓復制全部到你的項目文件 最后只要這幾個 然后引入 最后在你需要的頁面使用

LeetCode 2813. Maximum Elegance of a K-Length Subsequence【反悔貪心】2582

本文屬于「征服LeetCode」系列文章之一&#xff0c;這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖&#xff0c;本系列將至少持續到刷完所有無鎖題之日為止&#xff1b;由于LeetCode還在不斷地創建新題&#xff0c;本系列的終止日期可能是永遠。在這一系列刷題文章…

JavaWeb中Json傳參的條件

JavaWeb中我們常用json進行參數傳遞 對應的注釋為RequestBody 但是json傳參是有條件的 最主要是你指定的實體類和對應的json參數能否匹配 1.屬性和對應的json參數名稱對應 2.對應實體類實現了Serializable接口&#xff0c;可以進行序列化和反序列化&#xff0c;這個才是實體類轉…

黑馬項目一階段面試58題 Web14題(二)

八、內連接和外連接查詢有什么區別 內連接 獲取兩表的交集部分 外連接 獲取某表的所有數據&#xff0c;以及兩表的交集數據 九、事務管理的作用&#xff0c;四大特性 作用 保證多個增刪改的操作&#xff0c;要么同時成功&#xff0c;要么同時失敗 四大特性 1.原子性 事…

Ajax同源策略及跨域問題

Ajax同源策略及跨域問題 同源策略ajax跨域問題什么是跨域&#xff1f;為什么不允許跨域&#xff1f;跨域解決方案1、CORS2、express自帶的中間件cors3、JSONP原生JSONPjQuery發送JSONP 4、使用vscode的Live Server插件 同源策略 同源策略&#xff08;Same-Origin Policy&#…

Kotlin入門:程序的邏輯控制——03

一、程序的邏輯控制 程序的執行語句主要分為3種&#xff1a;順序語句、條件語句和循環語句。 二、if條件語句 if表達式在Kotlin中用于根據條件執行不同的代碼塊。它有兩種形式&#xff1a;普通if和帶返回值的if。 普通if語句&#xff1a; 普通的if語句由關鍵字if、一個布爾表達…