2009-02-27 109 views

回答

275

:%s/$/\*/g

應該工作。因此:%s/$/*/g應該如MrWiggles正確指出。

+9

+1。沒有必要逃避替換tho – tddmonkey 2009-02-27 11:56:13

+3

是的星號。儘管如此,對我來說更具可讀性。 – dirkgently 2009-02-27 11:57:10

+2

我不會爭辯,你有一個很棒的用戶名,所以得到你的榮譽點;-) – tddmonkey 2009-02-27 12:01:57

1
%s/\s*$/\*/g 

這將做到這一點,並確保前導空格被忽略。

1
:%s/\n/*\r/g

你的第一個在其他地方是正確的,但是由於某種原因,Vim必須有不同的換行符處理。

4

一種選擇是:

:g/$/s//*

這會發現每行結束的錨,並用*代替它。我說「替代品」,但實際上,它更像是一個附加詞,因爲錨點是一種特殊的東西,而不是普通的字符。有關更多信息,請參閱Power of g - Examples

35

另外:

:g/$/norm A* 

另外:

gg<Ctrl-v>G$A*<Esc> 
277

甚至比短:搜索命令:

:%norm A* 

這是什麼意思:

%  = for every line 
norm = type the following commands 
A*  = append '*' to the end of current line 
5

...並預先考慮(加年初)與*每一行,

%s/^/*/g 
5

你並不真正需要的g末。因此,它變成了:

:%s/$/* 

或者,如果你只是想在*的結尾,說行14-18:

:14,18s/$/* 

:14,18norm A* 
20

我認爲使用可視塊模式是一種更好,更通用的方法來處理這種類型的事情。這裏有一個例子:

這是第一行。
這是第二個。
第三。

要插入「Hello world。「(空格+剪貼板)在每個這些行的末尾:

  • 在第一行的文字,按下Ctrl-V(或Ctrl-Q如果Ctrl-V鍵 是糊)
  • 。按JJ視覺塊在三個線延伸。
  • 按$視覺塊擴展到行的結尾。按A 然後空間然後鍵入你好世界。+然後Esc鍵。

結果是:

這是第一行。你好,世界。
這是第二個。你好,世界。
第三。你好,世界。

(例如,從http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines

7

如果妳想要在每行的末尾添加世界,你好:

:%s/$/HelloWorld/ 

如果你想爲行的具體數目說做到這一點,從20到30使用:

:20,30s/$/HelloWorld/ 

如果妳想要在每行的開始這樣做,則使用:

:20,30s/^/HelloWorld/ 
相關問題