Vim 文本對象指南 (2)

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: #{}"

這些文本對象同樣可以通過 aBiB 來操作, 但是并不如使用 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>

這個文本對象也可以被用來快速操作單個標記及其屬性.

參考:
[1] Vim Text Objects: The Definitive Guide

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容