用 buffer 中的內容取代游標處的內容

173 views
Skip to first unread message

小畢

unread,
Mar 26, 2012, 1:22:31 PM3/26/12
to vim-t...@googlegroups.com
大家好,

我現在想要用文章中某單字,來取代另一個單字。不是搜尋取代,而是只取代該單字。

舉例:
This is my pen, and that is his book.
而我要把 his 變成 my

我現在的作法有兩種:

第一種作法
1. 先把 my 複製 (yw)
2. 移動到 his 的 h 上 (fh;)
3. 貼上 (P)
4. 刪掉 his (ldw) # 這邊用 de 即可,但是習慣難改XD

第二種作法
1. 先刪除 his (dw)
2. 移動到 my (Fm)
3. 複製 my (yw)
4. 移動到 book 前面並貼上 (fbP)

不管哪種作法都覺得有點麻煩....不曉得有沒有更簡單的作法呢?我心裡想的是,我可以複製 my 之後,移動到 his 的位置,然後可以直接用 buffer 裡面的 my 去取代 his。有辦法嗎?

類似的問題也可能出現在我想要交換 my 跟 his 這兩個單字的時候。(其實是寫 code 會碰到啦,不過用簡單英文句子來解釋比較簡單)

--
小畢/CrBoy
A member of open source communities in Taiwan

賴楚翔 (Chu-Siang Lai)

unread,
Mar 26, 2012, 1:26:03 PM3/26/12
to vim-t...@googlegroups.com
目前都是直接用 sed 來達到這個目的 :P

:%s/his/my/gc

This is my pen, and that is his book.

----
jonny@gmail:~$ cat profile.conf
- 賴楚翔 (凍仁翔)

小畢

unread,
Mar 26, 2012, 1:30:20 PM3/26/12
to vim-t...@googlegroups.com
呀....我忘記說明了,不好意思。

這裡這個只是一個範例啊 orz 由於實際的應用是在一些很長的單字上,可能是變數名稱什麼的,所以用搜尋取代或是自己輸入,是更麻煩的,所以才會選擇用複製的作法。(不然自己手打 my 兩個字母而已不就好了XD)

pingooo

unread,
Mar 26, 2012, 8:29:27 PM3/26/12
to vim-t...@googlegroups.com
我有時會用 register,以下用 "a 為例。

(在 my 的 m 上)  "ayw (把 word yank 到 register a)
fh (移到 his 的 h 上)
dw (砍掉 word)
"aP (貼上 my)

2012/3/27 小畢 <crazys...@gmail.com>

freehaha

unread,
Mar 26, 2012, 8:40:23 PM3/26/12
to vim-t...@googlegroups.com

可以試看看 ye, fh, vep (選起來以後貼上取代)

pingooo

unread,
Mar 26, 2012, 8:48:01 PM3/26/12
to vim-t...@googlegroups.com
vep  ++

太早學 vi 的人錯過太多好東西了!
還好有 vim-taiwan 讓我這老狗可以學新把戲! m(_._)m

2012/3/27 freehaha <free...@gmail.com>

freehaha

unread,
Mar 26, 2012, 8:54:12 PM3/26/12
to vim-t...@googlegroups.com

忘了說, 取代後剛剛選的字會存到 register裡, 再回到 my 做一次 vep 就可以達到交換的功能!

大家一起戶相學習進步吧 =)

bootleq

unread,
Mar 26, 2012, 9:23:12 PM3/26/12
to vim-t...@googlegroups.com
直覺做法應該是用一個 'replace' operator,
不過預設沒有 'replace',所以要兩個 plugin:
例如設定 <Leader>r 給這個操作:
nmap <Leader>r <Plug>(operator-replace)
xmap <Leader>r <Plug>(operator-replace)

就可以用
<Leader>riw
<Leader>re
viw<Leader>r
等等隨便了

取代後,本來的 register 也不會被蓋掉。

CrBoy於 2012年3月27日星期二UTC+8上午1時22分31秒寫道:
CrBoy於 2012年3月27日星期二UTC+8上午1時22分31秒寫道:

小畢

unread,
Mar 26, 2012, 10:55:23 PM3/26/12
to vim-t...@googlegroups.com
這這這.....!!!! 這就是我心裡想要的啊!!!!!

大感謝! <(_ _)> #另外我覺得我好像聽過你...大大是元智的大神對嗎?

freehaha

unread,
Mar 27, 2012, 6:25:18 AM3/27/12
to vim-t...@googlegroups.com

我讀元智沒錯..但不是大神@@"
我會的都是皮毛而以.. 哈

Mosky Liu

unread,
Apr 20, 2012, 2:26:21 PM4/20/12
to vim-t...@googlegroups.com
哦,vep 好棒!

freehaha <free...@gmail.com> 於 2012年3月27日上午8:40 寫道:
Reply all
Reply to author
Forward
0 new messages