1. 程式人生 > >學習筆記(八)——vim 編輯器

學習筆記(八)——vim 編輯器

1.vim 編輯器:

vim vi 的加強版。與 vim 相似的編輯器還有nano emacs。安裝 vim

[[email protected]~]# yum install –y vim-enhanced  //直接vim也可以

[[email protected]~]# vim +10 /etc/init.d/iptables  //進入後游標在第十行

下面分別介紹一下vim 的三種模式——檢視模式,底行模式,編輯模式和各模式下的常用操作:

1.1 檢視模式/一般模式:

1 移動游標,h j k l 四個鍵分別對應左、下、上、右,在前面加上數字,如5h ,可以一次性向左移動 5 個字元;

2G 游標跳轉到尾行, gg 游標跳轉到首行。n(這裡指數字) + G游標跳轉到第 n 行;

3 ^ 游標跳轉到所在行首個非空格字元, B ^ 作用相同, 0 游標跳轉到所在行首個字元(包括空格);

4 x 向後刪除一個字元, X 向前刪除一個字元(Delete鍵下效果相同), n + x / X 向後/向前刪除 n 個字元;

5 dd 刪除游標所在行, n + dd 刪除包括游標所在行及下方共 n 行, dw 刪除游標所在處一個單詞,同樣可以結合數字鍵使用。D 刪除游標所在處及其後面所有

注:這裡所說的刪除,其實是剪下到了剪下板,可以通過 p 鍵進行貼上。

6 v 進入游標選擇狀態(可視模式),

V 以行作為單位(可視行模式)。選擇後可以對選中內容進行刪除複製等操作;

7 yy 複製游標所在行, n + yy 複製包括游標所在行及其下方共 n 行, p 從當前游標處向下貼上, 可以貼上 x/X dd dw 剪下的內容, n + p 貼上 n 次。P 從當前游標處向上貼上。

8 e 游標按單詞依次向後移, E 游標移動到行尾, b 游標按單詞依次向前移, B 游標移動到行首;

更加詳細的使用說明如圖1

wKioL1UUDImAAtQnAAeLuCj4S2k695.jpg

圖-1 vi/vim鍵點陣圖

不必全部掌握,酌情使用適合自己的快捷鍵即可。

1.2 編輯模式:

1 i 在當前游標處開始編輯, I 在當前游標所在行第一個符號(該符號不包含空格)處開始編輯;

2 a 在當前游標下一個字元處開始編輯,A 在當前游標所在行的最後一個字元(該字元包含空格)處開始編輯;

3 o 在當前游標所在行下方插入一個空行並開始編輯, O  在當前游標所在行上方插入一個空行並開始編輯;

4 s 刪除當前游標所在處的字元並開始編輯, S 刪除當前游標所在行所有字元並開始編輯。

1.3 底行模式:

使用底行模式前,先用:(半形冒號)或 / 進入底行模式。

1)搜尋: / 向當前游標之下搜尋內容, ? 向光標之上搜索內容,n 下一個, N 上一個(對於 / ,下一個就是下一個,而對於 下一個是向上一個搜尋),搜尋後會出現高亮,如果使用完搜尋功能後想要去除匹配結果的高亮顯示,使用 nohl(no highlight 的縮寫)   

2)替換: 1,$s/root/ROOT/g ,使用 % 可以代替 1,$ 表示從首行到尾行進行匹配, g 表示替換每行中匹配到的全部內容,不使用 g 則只替換每行中匹配到的第一個內容,當然,使用 3,5s  則替換第三行到第五行;

3 跳轉游標::n(這裡 n 為數字) 游標跳轉到第 n 行;

4)編輯結束後的操作::q 不儲存退出,修改內容將失效。 :w 儲存,儲存完成後並不會退出。:wq 儲存並退出。 :x :wq 一樣為儲存退出,兩者的區別在於,即便沒有做修改, :wq 也會影響三個時間(atime mtiime ctime), :x 則不影響三個時間。

注:可以在 :w :wq 後面加路徑和檔名稱,將其直接儲存到相應位置的相應檔案中,如果檔案不存在,則自動建立檔案:

:wq/tmp/learn/newfile.log

:w/tmp/learn/newfile.log

2.擴充套件學習:tee命令檢視單詞在文字中出現次數

2.1  tee 命令:

tee 命令用於從標準輸入中讀取內容,之後執行兩個操作——寫入標準輸出(即顯示到顯示器上)並寫入執行檔案中,比如現在有如下需求,不使用輸入重定向,將 /etc/passwd 中含有 root 的存入 ~/root.log 檔案中:

[[email protected]~]# grep root /etc/passwd | tee root.log

等同於

[[email protected]~]# cat /etc/passwd | grep root | tee root.log

注:積累一下 grep 直接作用於檔案的這種用法,在對檔案全部內容進行匹配時,使用 grep root/etc/passwd 代替管道用法的 cat /etc/passwd | grep root ,更加方便簡潔。

注:此時如果在 ~/ 目錄下不存在 root.log 檔案,則會生成並將匹配結果寫入其中,如果在 ~/ 目錄下存在 root.log 檔案,則會覆蓋其中的內容,如果想要在已有檔案中追加內容,使用 tee 命令的 –a 引數:

[[email protected]~]# grep root /etc/passwd | tee –o root.log

2.2 檢視文字中同一個單詞的出現個數:

這裡使用檢視 /etc/passwd檔案中 root 單詞出現的個數作為例子,介紹兩種方法:

方法一: vim 底行模式

[[email protected]~]# vim /etc/passwd

:%s/root/&/gn

4 matches on 2lines

注:如果不使用 n ,則結果為

4 substitutionson 2 lines

可以看出來使用 n 只匹配而不替換,不使用 n 則匹配完成後就替換。

方法二: grep 命令配合–o 引數

[[email protected]~]# grep –o root /etc/passwd | wc –l  //等同於

[[email protected]~]# cat /etc/passwd | grep –o root | wc –l

-o  引數只輸出文件中匹配到的內容,其中每一個獨佔一行,所以可以使用 wc –l 統計行數得知其出現次數。

   參考資料:http://www.aminglinux.com/bbs/thread-7643-1-1.html

相關推薦

學習筆記——vim 編輯

1.vim 編輯器:vim 是 vi 的加強版。與 vim 相似的編輯器還有nano, emacs。安裝 vim:[[email protected]~]# yum install –y vim-enhanced  //直接vim也可以[[email pr

Cesium學習筆記:Demo學習(差值)

這個Demo是官方Demo中的Interpolation(差值器),不過我更喜歡叫它轉圈的飛機o( ̄ε ̄*) 這個Demo看上去就是一個飛機在繞著一個圈在飛,你可以通過切換差值器看效果 話說這個Demo困擾了我好久,我一直以為這個飛機飛行是自己畫出來

Flume NG 學習筆記Interceptors攔截測試

攔截器主要是對事件的header資訊資訊操作,要麼直接忽略他,要麼修改他的資料 一、Event Serializers file_roll sink 和hdfs sink 都支援EventSerializer介面 1.1、Body Text Serializer Body

機器學習筆記非線性變換

nbsp 線性 logs 等於 線性模型 images http 自己 空間 一、非線性問題 對於線性不可分的數據資料,用線性模型分類,Ein會很大,相應的Ein=Eout的情況下,Eout也會很大,導致模型表現不好,此時應用非線性模型進行分類,例如: 分類器模型是一個圓

匯編入門學習筆記 —— 轉移指令

無條件轉移 fse ear tom 內存 star space off 編譯器 瘋狂的暑假學習之 匯編入門學習筆記 (八)—— 轉移指令 參考: 《匯編語言》 王爽 第9章 能夠改動ip或者同一時候改動cs和ip的指令統稱

TypeScript學習筆記:裝飾Decorators

標註 時裝 als cal () 操作 enume 筆記 文檔 裝飾器簡介 裝飾器(Decorators)為我們在類的聲明及成員上通過元編程語法添加標註提供了一種方式。 需要註意的是:裝飾器是一項實驗性特性,在未來的版本中可能會發生改變。 若要啟用實驗性的裝飾器特性

myBatis學習筆記10——使用攔截實現分頁查詢

條件 iba execute rri itl alias property gen func 1. Page package com.sm.model; import java.util.List; public class Page<T&g

流暢的python和cookbook學習筆記

不可變 pri 列表 改變 如果 book 影響 color print 1.函數的默認參數必須不可變   如果函數的默認參數為可變的對象,那麽默認參數在函數外被修改也會影響到函數本身的。 >>> def spam(a, b=None): # b要為不

Python學習筆記

base 函數式編程 輸出 必須 返回 叠代 use map 作用 一、變量可以指向一個函數   a = abs 二、通過調用指向函數的變量可以執行該函數   a = abs  a(-10) 三、指向函數的變量可以作為參數傳遞給一個函數   def add(x,y,f): 

EF學習筆記:更新關聯數據

tro rop es2017 net sage red ida string entity 學習筆記主目錄鏈接:ASP.NET MVC5 及 EF6 學習筆記 - (目錄整理) 上一篇鏈接:EF學習筆記(七):讀取關聯數據 本篇原文鏈接:Updating Related D

python學習筆記面向對象擴展

archive ive 解釋 alt bound take src pri 執行 原鏈:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html 筆記:今天的內容感覺自己理解不太容易 1 #昨天學習定義m

java學習筆記:繼承

this關鍵字 log implement java學習 方式 show 使用 類型 多繼承 繼承 子類擁有父類非private的屬性,方法。 子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展。 子類可以用自己的方式實現父類的方法。 Java的繼承

Java框架spring Boot學習筆記:Spring相關概念

擴展 靜態 輕量級 想要 spring配置 核心 使用 oot 調用方法 Spring是開源、輕量級、一站式框架。 Spring核心主要兩部分 aop:面向切面編程,擴展功能不是修改源代碼實現 ioc:控制反轉,比如一個類,在類裏面有方法(不是靜態的方法),想要調用類

Ionic3學習筆記使iOS端、Android端 Navbar 透明化

href 添加 down nic ionic navbar str div 學習 本文為原創文章,轉載請標明出處 若要使iOS端 Navbar 透明,只需要給 ion-navbar 添加 transparent 屬性,但是Android端依舊會有一條border在,所以再給

python學習筆記之運算符

技術 ima 學習 表達式 water nag proc 說明 ddc python學習筆記(八)之運算符 算術運算符 比較運算符 邏輯運算符(1)布爾運算(2)復雜的布爾表達式 說明:以上內容摘自《跟老齊學python》python學習筆記(八)之運算符

【大話存儲】學習筆記,數據保護

clip 調度員 系統管 區域 工具 管理軟件 安裝 inf 利用 第一章 數據保護 所謂數據保護是指對當前位置上的數據進行備份,不一定是實時的。這樣帶來的好處是如果發生磁盤損壞或者說被修改了,可以通過備份數據找回 1.1 文件級備份 文件級備份:將磁盤上所有文件通過調用文

day5-Python學習筆記內置函數

lte lis map 真的 數據類型 小白 十進制 list all #函數即變量# len type print input str# print(all([1, 2, 3, 4])) # 判斷可叠代的對象裏面的值是否都為真# print(any([0, 1, 2,

《Qt5 開發與實例第三版學習筆記

nbsp font public insert enter body win parent hbox 1 // 3.3 堆棧窗體 QStackedWidget類 2 //stackdlg.h 3 #ifndef STACKDLG_H 4 #define STACK

Linux學習筆記文件和目錄權限chmod、更改所有者和所屬組chown、umask、隱藏權限

筆記 前三 表示 col color 新建 ttr 執行文件 mar 一、chmod chmod 命令用於修改文件或者文件夾的權限, 之前學習過 ls -l 如圖,第一位-之前已經學習過,代指這是一個文本之後的 rw-r--r--是文件的權限前三位rw-是文件所有者的權限中

Linux學習筆記13——vi和vim編輯

vim編輯vi: Visual Interface 可視化接口vim: VI improved:增強版vi 建議使用!!!全屏編輯器,模式化編輯器 vim模式:在不同的模式下,敲下的東西被解釋的意義是不一樣的。編輯模式(命令模式)輸入模式末行模式 模式轉換:編輯-->輸入:i: 在當前光標所在字符的前