接 Vim 文字物件指南 (1), 關於外掛使用, 可以檢視完整配置 space-vim.
程式語言的文字物件
Vim 基於常見程式語言結構提供了幾個常見的文字物件. 其實都是一對兒符號,主要可以分為:
-
成對的標點符號,比如單引號,雙引號,反引號。
-
成對的括號,比如小括號,中括號,大括號。
-
標記語言標籤,它們也是成對的,比如 HTML 的標籤,
<div></div>
。
模式為 操作 + a/i + 符號
,這樣操作的就是文字物件。不加 a 或者 i 的話就不是一個對文字物件的操作了。對文字物件進行操作時,Vim 不會考慮你的游標位置。而非文字物件操作時,會從當前游標處開始生效。
舉個例子, ci"
指的是 change inner "
, 改變 ""
所包含的內容,也就是刪除 ""
裡面的內容並進入插入模式。
使用 a (around) 時,操作的範圍包括標點符號,括號,標籤本身。使用 i (inner) 時,不包括符號,括號,標籤等。動手試一下,很快就能學會了。
字串 (string)
-
a” – a double quoted string
-
i” – inner double quoted string
-
a’ – a single quoted string
-
i’ – inner single quoted string
-
a` – a back quoted string
-
i` – inner back quoted string
puts `Hello "world"`
ci"
puts `Hello ""`
圓括號
對於各種括號, 操作時使用前括號或後括號都可以, 比如 da(
等同於 da)
.
-
a) – a parenthesized block
-
i) – inner parenthesized block
Project.all(:conditions => { :published => true })
da)
Project.all
方括號
-
a] – a bracketed block
-
i] – inner bracketed block
(defn sum [x y]
(+ x y))
di]
(defn sum []
(+ x y))
大括號
-
a} – a brace block
-
i} – inner brace block
puts "Name: #{user.name}"
ci}
puts "Name: #{}"
這些文字物件同樣可以通過 aB
和 iB
來操作, 但是並不如使用 a}
和 i}
來的直觀.
%
同樣適用於 {}. 但是也有著 () 和 [] 一樣的限制性.
標記語言標籤
標記語言標籤分為兩類: t 和 >, t 所操作的是標籤內包含的內容, 比如 <p>content</p>
,<p>
與 </p>
之間包含的內容就是 t 來操作. <
或 >
的內容指的是 <p>
裡面的 p. 具體可以看下面的例子。
-
at – a tag block
-
it – inner tag block
<h2>Sample Title</h2>
cit
<h2></h2>
因為操作後游標並不在 <h2>
裡面, 所以 cit
替換標記裡面的內容是非常方便的.
-
a> – a single tag
-
i> – inner single tag
<div id="content"></div>
di>
<></div>
這個文字物件也可以被用來快速操作單個標記及其屬性.