摘要:本文還是介紹一些基本內容關于插件使用可以查看完整配置如果想要在里擁有高效編輯的能力必然要掌握超過單個字符編輯的能力不然就可能出現像之前看到過的一個笑話在你剛開始使用的時候做過什么令你難忘的事情答使用跳轉到行也就是說要掌握詞句子段落級別的編
本文還是介紹一些基本內容, 關于插件使用, 可以查看完整配置 space-vim.
如果想要在 Vim 里擁有高效編輯的能力, 必然要掌握超過單個字符編輯的能力, 不然就可能出現像之前看到過的一個笑話 :
在你剛開始使用 Vim 的時候做過什么令你 “難忘” 的事情? 答: 使用
j 跳轉到 5000 行 :).
也就是說, 要掌握詞 (word), 句子 (sentense), 段落 (paragraph) 級別的編輯能力. 在 Vim 里, 這樣的概念叫做 文本對象 (text objects) . 詳見 Vim 的 help :h text-objects. 另外, 這些概念對于只是對英文表現比較好, 因為英文可以按照空格劃分詞, 但是中文并不可以.
本文的內容實際很多來自 Vim 的 help. 如果開始知道不懂的時候去查看 Vim 的 help, 基本上也就真正知道如何學習 Vim 了.
對于普通文本文件和常見程序語言結構, Vim 都提供了文本對象. 你可以通過 Vim script 定義新的文本對象.
一個編輯命令的結構在 Vim 中, 編輯命令 (editing commands) 有著如下的結構:
<數字> <操作符> <文本對象或移動命令>
number: 數字用于在文本對象或移動操作上進行多次執行, 比如說, 向后 3 個單詞, 向前 2 個段落. 數字是可選的, 可以出現命令(command) 的前面,也可以放在命令的后面.
If the motion includes a count and the operator also had a count before it, the two counts are multiplied. For example: "2d3w" deletes six words.
如果是 motion 和下面所提到的 operator 都有數字修飾, 那么效果是兩個數字相乘. 比如, 2d3w 是刪除 6 個單詞.
operator: 操作符, 比如, change, delete (刪除), yank (復制). 操作符也是可選的. 但是如果沒有操作符的話, 那么就只剩一個移動命令, 而非一個編輯命令了.
見 :h operator, Vim 默認提供的 operator 有:
text object 或者 motion 可以是一個文本對象, 比如, 一個單詞, 一個句子, 一個段落, 或者是一個移動, 比如, 向下移動一行, 向后翻一頁, 到一行末尾.
:h text-objects :
:h motion :
一個編輯命令(editing command) 等于一個操作符加上一個文本對象或者移動, 比如, 刪除一個單詞, 改變一個句子, 復制一個段落.
普通文本對象an editing command = an operator + a text object/motion
Vim 為普通文本文件提供了三種類型的文本對象: 詞(word), 句子(sentence), 段落(paragraph).
詞aw - a word (包含在周圍的空格)
iw - inner word (不包括周圍的空格)
Lorem ipsum dolor sit amet...
daw
Lorem dolor sit amet...
以 a 開頭的文本對象包含周圍的空格, 以 i 開頭的文本對象不包含. 這個原則對所有的文本對象都適用.
w 看起來與 aw 效果差不多. 區別在于光標位置. 比如, 如果用 dw 來刪除一個詞, 光標必須在詞的開頭. 如果在除了開頭的其他位置使用 dw, 只能刪除部分單詞. 但是, daw 允許光標在一個詞的任何位置刪除整個單詞.
如果你已經懂得了 word 的 w 與 aw 的區別, 下面句子與段落就已經掌握了, 道理是一樣的, 只是將 w 換成了 s 與 p.
句子as -- a sentence
is -- inner sentence
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
cis
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
注意, "inner" 文本對象不包含尾部的空格.
段落ap -- a paragraph
ip -- inner paragraph
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
dap
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.移動命令 vs. 文本對象命令
一個使用移動的命令, 比如, cw, 是從光標處開始生效.
一個使用文本對象的命令, 比如, ciw, 如果光標在何處, Vim 都將在整個文本對象上生效.
是一個移動命令還是一個文本對象命令, 區別在于是否有 a (around) 或者 i (inner) 這樣的限制. 對于每個類型的文本對象都是如此. 盡管使用文本對象的方式需要多輸入一個字符, 但是這可以節省你的時間將光標移動到 "正確" 的位置.
參考:
[1] Vim Text Objects: The Definitive Guide
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24950.html
摘要:接文本對象指南關于插件使用可以查看完整配置編程語言的文本對象基于常見編程語言結構提供了幾個常見的文本對象其實都是一對兒符號,主要可以分為成對的標點符號,比如單引號,雙引號,反引號。而非文本對象操作時,會從當前光標處開始生效。 接 Vim 文本對象指南 (1), 關于插件使用, 可以查看完整配置 space-vim. 編程語言的文本對象 Vim 基于常見編程語言結構提供了幾個常見的文本...
摘要:原文地址實戰指南五文本替換在編輯代碼時,有時候你希望對變量或者函數重命名。提供了強大的替換功能,比其他普通編輯器的更好用。事實上你打不用如此麻煩,只需下面簡單的替換即可本文列出了常用的文本編輯中全局替換的方法。 原文地址:Vim實戰指南(五):文本替換 Introduction 在編輯代碼時,有時候你希望對變量或者函數重命名。vi提供了強大的替換功能,比其他普通編輯器的ctrl+r更好...
摘要:原文地址實戰指南一基礎編輯命令和作為兩大神級文本編輯器各有利弊,本實戰指南不加討論的介紹本實戰指南不是教你按照的鍵位圖來編輯文本,而是從實戰的角度,教你如何快速的用來開發你的程序,節省你的開發時間。 原文地址:Vim實戰指南(一):基礎編輯命令 Introduction Vim和Emacs作為兩大神級文本編輯器各有利弊,本實戰指南不加討論的介紹Vim.本實戰指南不是教你按照Vim的鍵位...
摘要:原文地址實戰指南四命令是下的一個文本編輯器。你已經見過中的,沒錯,這些就是來自于命令。當你希望顯示某行,輸入命令,顯示器上才會顯示那行。而控制這個顯示器顯示文本的命令行工具,就是。 原文地址:Vim實戰指南(四):ex命令 Introduction ex是Unix下的一個文本編輯器。至于為什么突然講到這個,那是因為vi就是ex的visual mode。你已經見過vi中的:w, :q!,...
閱讀 811·2023-04-25 20:18
閱讀 2092·2021-11-22 13:54
閱讀 2527·2021-09-26 09:55
閱讀 3857·2021-09-22 15:28
閱讀 2969·2021-09-03 10:34
閱讀 1710·2021-07-28 00:15
閱讀 1629·2019-08-30 14:25
閱讀 1281·2019-08-29 17:16