Linux筆記:使用Vim編輯器

来源:http://www.cnblogs.com/jhao/archive/2016/10/24/5991761.html
-Advertisement-
Play Games

Vi編輯器是Unix系統上早先的編輯器,在GNU項目將Vi編輯器移植到開源世界時,他們決定對其作一些改進。 於它不再是以前Unix中的那個原始的Vi編輯器了,開發人員也就將它重命名為Vi improved,或Vim。 為了方便使用,幾乎所有Linux發行版都創建了一個名為vi的別名,指向vim程式。 ...


Vi編輯器是Unix系統上早先的編輯器,在GNU項目將Vi編輯器移植到開源世界時,他們決定對其作一些改進。
於它不再是以前Unix中的那個原始的Vi編輯器了,開發人員也就將它重命名為Vi improved,或Vim。
為了方便使用,幾乎所有Linux發行版都創建了一個名為vi的別名,指向vim程式。

Vim基礎

Vim編輯器在記憶體緩衝區處理數據。只要鍵入vim命令和你要編輯的文件的名字,即可啟動Vim編輯器。
如在啟動Vim時未指定文件名,或者這個文件不存在,Vim會新開一段緩衝區域來編輯;如果命令指定了一個已有的文件的命令,Vim會將文件的整個內容都讀到一塊緩衝區域來準備編輯。

Vim編輯器有兩種操作模式:

  • 普通模式;
  • 插入模式

當打開要編輯的文件時,Vim編輯器會進入普通模式。在普通模式下,Vim編輯器會將按鍵解釋成命令;
在編輯模式中,按下i鍵,進入插入模式。插入模式下,每個按鍵都將輸入到游標位置的緩衝區。按Esc鍵即可退出插入模式;

在普通模式中,可以用方向鍵來在文本區域移動游標,如果是在一個沒有定義方向鍵的終端上,還可以使用如下按鍵移動:

按鍵 游標移動方式(普通模式下)
h 左移一個字元
j 下移一行
k 上移一行
l 右移一個字元

在大的文本文件中一行一行的移動會特別麻煩。幸而Vim提供了一些命令來幫助提高速度:

按鍵 游標移動方式(普通模式下)
PageDown(或Ctrl+F) 下翻一屏數據
PageUp(或Ctrl+B) 上翻一屏數據
G 移動到緩衝區的最後一行
num G 移動到緩衝區的第num
gg 移動緩衝區的第1行

Vim編輯器在普通模式下有個特別的功能叫命令模式。命令模式提供了一個可供輸入額外命令來控制Vim中行為的互動式命令行。要進入命令模式,在普通模式下按下冒號鍵。游標會移動到消息行,冒號出現,等號輸入命令。
在命令模式下有幾個命令來將緩衝區的數據保存到文件中並退出Vim:

命令 描述(命令模式下命令)
q 如果未修改緩衝區的數據,退出
q! 取消所有對緩衝區數據的的修改並退出
w filename 將文件保存到另一個文件filename
wq 將緩衝區數據保存到文件中並退出

編輯數據

在普通模式下,Vim編輯器提供了一些命令來編輯緩衝區中的數據。常用號命令有:

命令 描述(普通模式下命令)
x 刪除當前游標所在位置的字元
dd 刪除當前游標所在行
dw 刪除當前游標所在位置的單詞
d$ 刪除當前游標所在位置至行尾的內容
J 刪除當前游標所在行行尾的換行符
u 撤銷前一個編輯命令
a 在當前游標後追加數據
A 在當前游標所在行行尾追加數據
r char char替換當前游標所在位置的單個字元
R text text覆蓋當前游標所在位置的數據,直到按下ESC鍵

有些編輯命令允許使用數據修飾來指定重覆該命令多少次。比如,命令2x會刪除從游標當前位置開始的兩個字元,命令5dd會刪除從游標當前所在行開始的向下5行。

複製和粘貼

現代編輯器的標準功能之一就是剪切或複製數據,Vim中剪切複製相對容易些。

上面已經有了刪除數據的操作,Vim刪除數據時,實際上它會將數據保存在單獨的一個寄存器中。可以同p命令來取回數據。

簡而言之,用dd刪除一行文本,然後把游標移動到某個要放置該行文本的位置,之後用p命令。p命令會將文本插入到當前游標所在行之後。p命令可以和任何刪除文本的命令一起搭配使用。

Vim中複製命令是y(代表yank)。y命令和d命令有相同的第二字元(如yw表示覆制單詞,y$表示覆制到行尾)。在複製文本後,輸入p命令表示粘貼。

但是這樣複製有個比較煩惱的問題,就是你沒有看見到底複製了什麼,除非粘貼出來才知道。Vim還有個功能解決了這個問題,可視模式會在移動游標時高亮文本,因此可以用可是模式來複制文本,方法如下:

移動游標到要開始複製的位置,按下v鍵,游標所在位置的文本會被高亮顯示,移動游標覆蓋想要複製的文本。覆蓋後按y鍵來激活複製命令。現在寄存器中已經有了要複製的文本,使用p命令到合適的位置粘貼即可。

查找和替換

要查找某個字元串,在命令模式下,鍵入斜杠(/)加查找字元串(比如查找字元串class:/class),按下Enter鍵,游標會跑到消息行。在輸入要查找的文本後,按下Enter鍵,Vim編輯器會有3中回應:

  • 如果游標當前位置之後有你要查找的文本,則游標會跳到該文本出現的第一個位置(按n鍵到達下一個);
  • 如果游標當前位置之後沒有你要查找的文本,則游標會繞過文件末尾,顯示在該文本出現的第一個位置(並用一條消息顯示);
  • 輸入一條錯誤消息,說明在文件中沒有找到要找的文本

替換命令的格式是:

:s/old/new

Vim編輯會跳到old第一次出現的地方並用new來替換,可以對替換命令作一些修改來替換多處要替換的文本:

命令 描述
:s/old/new/g 一行命令替換所有old
:n.ms/old/new/g 替換行號n和m之間的所有old
:%s/old/new/g: 替換整個文件中的old
:%s/old/new/gc: 替換整個文件中的old,但在每次出現時提示

最後

Vim包含了不少高級功能,由於每個Linux發行版都會包含它,所以應該至少瞭解一下Vim編輯器的一些基本用法。


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

-Advertisement-
Play Games
更多相關文章
  • 使用xcode去開發makefile的project(Building Makefile Projects With Xcode)新建工程,template選擇 external Build System添加所有的源碼到工程中。新建一個target,template選擇 external Buil... ...
  • 【函數】Oracle函數系列(1)--字元函數 1 BLOG文檔結構圖 2 前言部分 2.1 導讀和註意事項 各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~: ① 常見字元函數(lower、upper、initcap、concat、subst ...
  • 功能概述 DDL,資料庫定義語言,創建,修改,刪除資料庫,表,視圖,索引,約束條件等 DML,資料庫操縱語言,對資料庫中的數據進行增,刪,改,查 DCL,資料庫定義語言,對資料庫總數據的訪問設置許可權 SQL語言是集DDL,DML,DCL為一體的資料庫語言,學好資料庫首先要掌握下麵9個引導詞 DDL語... ...
  • 邏輯選擇函數,判斷一個條件,根據結果的不同,返回不同的值,這類函數,可以看作是case語句的shorthand。 1,IIF 函數 該函數判斷一個邏輯表達式,如果結果為True,返回一個表達式;如果為False,返回另外一個表達式。 例如:判斷兩個變數的值,返回不同的結果 2,CHOOSE 函數 根 ...
  • 1、連接ORACLE8/8I/9I資料庫(thin模式) <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page import="java.sql.*" %><%@ page contentType=" ...
  • File->New->File->點擊->在編輯處出輸入:文件名.properties 文件的主要功能連接資料庫,例如: driver=oracle.jdbc.OracleDriverurl=jdbc:oracle:thin:@localhost:1521/XEusername=a001passwo ...
  • 環境:centos7 參考:http://blog.csdn.net/lk10207160511/article/details/50364088 步驟如下: 安裝redis: 打開終端 輸入 su 切換到root 用戶 輸入密碼 輸入 cd 進入root目錄 安裝gcc 已經安裝可跳過 安裝指令 ...
  • 1.添加新用戶並分配root許可權:先用root許可權登陸adduser xxx(你設置的用戶名)passwd xxx(省略輸入密碼)放到wheel組中:gpasswd -a xxx wheel切換到xxx用戶:su xxx(此時並沒有許可權)命令前面加上sudo,就有root許可權操作 2.禁止linux ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...