接 Vim 文本對(duì)象 (1), 關(guān)于插件使用, 可以查看完整配置 space-vim.
編程語(yǔ)言的文本對(duì)象
Vim 基于常見編程語(yǔ)言結(jié)構(gòu)提供了幾個(gè)常見的文本對(duì)象. 其實(shí)都是一對(duì)兒符號(hào)蚕泽,主要可以分為:
- 成對(duì)的標(biāo)點(diǎn)符號(hào)黎炉,比如單引號(hào)拐迁,雙引號(hào),反引號(hào)蛤高。
- 成對(duì)的括號(hào)守谓,比如小括號(hào)墙贱,中括號(hào),大括號(hào)却紧。
- 標(biāo)記語(yǔ)言標(biāo)簽桐臊,它們也是成對(duì)的胎撤,比如 HTML 的標(biāo)簽,
<div></div>
断凶。
模式為 操作 + a/i + 符號(hào)
伤提,這樣操作的就是文本對(duì)象。不加 a 或者 i 的話就不是一個(gè)對(duì)文本對(duì)象的操作了认烁。對(duì)文本對(duì)象進(jìn)行操作時(shí)肿男,Vim 不會(huì)考慮你的光標(biāo)位置。而非文本對(duì)象操作時(shí)却嗡,會(huì)從當(dāng)前光標(biāo)處開始生效舶沛。
舉個(gè)例子, ci"
指的是 change inner "
, 改變 ""
所包含的內(nèi)容窗价,也就是刪除 ""
里面的內(nèi)容并進(jìn)入插入模式如庭。
使用 a (around) 時(shí),操作的范圍包括標(biāo)點(diǎn)符號(hào)撼港,括號(hào)坪它,標(biāo)簽本身。使用 i (inner) 時(shí)餐胀,不包括符號(hào)哟楷,括號(hào),標(biāo)簽等否灾。動(dòng)手試一下卖擅,很快就能學(xué)會(huì)了。
字符串 (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 ""'
圓括號(hào)
對(duì)于各種括號(hào), 操作時(shí)使用前括號(hào)或后括號(hào)都可以, 比如 da(
等同于 da)
.
- a) – a parenthesized block
- i) – inner parenthesized block
Project.all(:conditions => { :published => true })
da)
Project.all
方括號(hào)
- a] – a bracketed block
- i] – inner bracketed block
(defn sum [x y]
(+ x y))
di]
(defn sum []
(+ x y))
大括號(hào)
- a} – a brace block
- i} – inner brace block
puts "Name: #{user.name}"
ci}
puts "Name: #{}"
這些文本對(duì)象同樣可以通過(guò) aB
和 iB
來(lái)操作, 但是并不如使用 a}
和 i}
來(lái)的直觀.
%
同樣適用于 {}. 但是也有著 () 和 [] 一樣的限制性.
標(biāo)記語(yǔ)言標(biāo)簽
標(biāo)記語(yǔ)言標(biāo)簽分為兩類: t 和 >, t 所操作的是標(biāo)簽內(nèi)包含的內(nèi)容, 比如 <p>content</p>
墨技,<p>
與 </p>
之間包含的內(nèi)容就是 t 來(lái)操作. <
或 >
的內(nèi)容指的是 <p>
里面的 p. 具體可以看下面的例子惩阶。
- at – a tag block
- it – inner tag block
<h2>Sample Title</h2>
cit
<h2></h2>
因?yàn)椴僮骱蠊鈽?biāo)并不在 <h2>
里面, 所以 cit
替換標(biāo)記里面的內(nèi)容是非常方便的.
- a> – a single tag
- i> – inner single tag
<div id="content"></div>
di>
<></div>
這個(gè)文本對(duì)象也可以被用來(lái)快速操作單個(gè)標(biāo)記及其屬性.