這裏的a link我發現在這個問題的計算器。Vim中命令cw和ciw有什麼區別?
但我仍然不明白沒有一個具體的例子,「改變內心的詞」和「改變的詞」之間的區別是什麼。
我在我的vim中測試了這兩個命令,最後發現沒有區別,請給我一個例子來幫助我理解,謝謝!
這裏的a link我發現在這個問題的計算器。Vim中命令cw和ciw有什麼區別?
但我仍然不明白沒有一個具體的例子,「改變內心的詞」和「改變的詞」之間的區別是什麼。
我在我的vim中測試了這兩個命令,最後發現沒有區別,請給我一個例子來幫助我理解,謝謝!
下面是一個例子:
foo bar baz
^
打字CW和CIW會給在這種情況下相同的結果(與位於「酒吧」的「B」的光標)。 考慮一下:
foo bar baz
^
cw
將產生
foo b baz
^
其中ciw
將產生
foo baz
^
所以它改變了整個單詞,不管光標的位置。非常有用,我喜歡這個命令。 非常有用的也是caw
(或aw
)命令:
foo bar baz
^
-> caw
foo baz
^
aw
還包含的空間中。用v
(visual)命令試試這些命令,看看它們都做了什麼。此外,閱讀motion.txt
,部分6
給我提供這麼多額外信息非常友好,非常感謝,我現在明白吧!這就像一個魔法! –
someword
^ (cursor)
CW從光標到字的結束
some_
^ (cursor)
變化。留下這個詞的開頭。
相比
someword
^ (cursor)
CIW
_
^ (cursor)
改變整個單詞從開始到結束。
以上的答案解決如何他們的行爲不同,我想和大家分享一些想法上爲什麼他們的行爲不同。
首先,Vim的世界,w
和iw
有不同的語義,都可以看作是target
(見下文):
w
在cw
指Motion
對象iw
在ciw
指到TextObject
其次,在Vim編輯中,操作(c/change
在你的情況,並y/yank
,d/delete
,=/indenting
,>/shifting
等)和目標(在你的情況w
和iw
)可以幫助你實現你想要用更少的按鍵做的比較使用visual selection
+ operator
什麼。
TextObject定義目標範圍(開始和結束位置)。
Motion基本上用於移動光標,因此它只定義了最終目標位置(目標移動)。
一些很好的材料爲:
:h motion.txt
部分4,5'ciw' textobject是'iw'不''w'代表** i ** nner ** w ** ord –
感謝您的糾正;) – Xlee
您的回答讓我更清楚地瞭解這兩個命令是如何工作的,以及它們似乎很容易使用,但我從來沒有想過要找到這些命令的理論,這些命令在以前似乎很容易使用,在您的善意幫助下,我想我將更多地瞭解將來的任何事情,而不僅僅是工作!感謝你所做的一切!你激勵了我。 –
提個醒,cw
默認情況下,有一個有點 '不規範' 行爲它的行爲完全像ce
:它只能運行到當前單詞的結尾(如e
,ce
,de
,ye
)而不是在下一個詞的開始之前包括空白(例如w
,dw
,yw
)。
因此,我建議將這些映射到你的vimrc
:
" Have `cw` adhere to its actual movement `w`, instead of duplicating `ce`.
nnoremap cw dwi
nnoremap cW dWi
和習慣通常使用ce
。打字çê實際上是更有效和小於尷尬Ç瓦特如果你形成你的無名指,而不是中指按壓Ë的習慣,當談到之後Ç 。
如果你寧願讓cw
其默認分配複製ce
,那麼你可以用一個額外的按鍵訪問它的「適當」的功能:dwi
(或vwc
)。
(請注意,我發現dwi
更效率比cw
因爲按鍵的位置輸入,儘管額外的密鑰。)
第二映射的說明:W
( Shift + w)適用於vim所謂的「WORDS」,它計算每個非空白字符,例如標點符號,作爲WORD的一部分;而w
適用於「單詞」,它只包含不間斷的字母,數字和下劃線序列(默認情況下)。
注意:[vi/vim知識](https://vi.stackexchange.com)有一個初始的SE網站 – chb