標籤:

Vim 怎麼方便的修改變數名?

直接用字元串替換的方法有可能把包含原變數名的變數誤傷到了

比如把 foo 替換為 bar,那 foobar 這個變數就成了 barbar,而且注釋也會被替換掉。

那怎麼方便的替換變數名呢?難道還要用正則表達式?那麼一長串命令再加上正則表達式實在不是讓人開心的選擇…

====================

我猜想題主的意思應該是問 Vim 有沒有像 Sublime Text 官網裡演示的那個功能,即變數名的同步修改。比如說在一個函數當中有一個參數名叫length,我在函數的第一行把length後面的nth去掉,那整個函數里出現的length變數都會同步變成len. 這個用 Vim 可以實現嗎?


代碼重構請用 IDE 。


不用IDE的話,

代碼很多,可以考慮sed, awk。

代碼不多的話,可用vim插件:

ctrlfs

vim-multiple-cursors


那不然發明正則表達式幹嘛- =

好吧,感覺vim的正則表達式某些地方怪怪的


替換的時候加上gc就有確認提示了哎

%s/xx/yy/gc


正則替換時加上C確認下是否替換!


zecy說的對,refactor必須要用IDE。

之前一個cocos2dx的代碼,庫從2.x版本升級到3.0,需要修改一堆東西。

我作了個死,打算徒手vim改。

好吧,到現在那份demo都沒正常跑起來過。(那個時候還太年輕,不會git


簡單的匹配下就可以了

:%s/&/bar/g

用vim,簡單的正則還是非常有必要學習的


問題問的不太清楚,是修改一個函數中的變數名,還是一個文件中的變數名,或是若干文件中的變數(或函數)名?

以修改一個文件中的變數為例,我通常用的方法:

  1. 移到到變數名稱上,然後按下命令 *,該命令會查找游標下單詞
  2. 用以下命令在整個文件中替換: :%s//new_name/g

如果是替換一個函數中的變數名,可以用v命令選中函數,然後替換;如果是替換若干文件中的變數(或函數)名,需要先選定args列表,然後用 argdo %s//new_name/g | w 來修改加保存。


推薦閱讀:

vim 用YCM 插件怎樣自動補全庫里的函數名和類名?
對於非編程的文本編輯,Emacs和Vim各有什麼優勢?
vim和exvim的區別?
如何用 Vim 重構代碼?
Mac OS X Lion 下 Vi 怎麼回到行首/行尾以及 page up/page down 呢?

TAG:編程 | Vim |