2011-04-20 81 views
38

我將一些代碼從一個文件的一部分複製到vim中的另一部分,我發現每行都有行號,格式不見了,如何將正確的格式設置爲原點?複製時如何清除Vim中的行號?

這樣的:

  40   root /opt/release/current/public; 
67    41   passenger_enabled on; 
68    42 
+0

你是什麼意思的格式? Vim根本無法使用格式化文本。 – 2011-04-20 09:39:10

+0

對不起,格式表示空格和行號 – why 2011-04-20 09:54:57

回答

55

如果你有行號,我敢肯定你不使用Vim的抽出/放操作(這將從未複製linenumbers,摺疊列,圖標等),因爲就編輯緩衝區而言,它們不存在。我猜你是在一個終端模擬器中工作,並使用鼠標將東西複製到剪貼板,這可能會選擇屏幕上的「無關」空間(包括末尾的虛擬空間,行號,摺疊標記等) )

您可能有運氣才能像你希望它變得鼠標的動作設定

:se mouse+=a 

。否則,執行選擇與V<movement>...Ýyyank,其對應於 '複製')

然後在目的地使用p(放在光標),或P(放前光標)

讓我知道這是否幫助,或者您需要更多的信息

+21

yank +粘貼操作在vim中運行良好,但粘貼到另一個編輯器或遠程終端又如何? – Rohit 2015-04-02 03:40:24

4

看一看,有時設定爲F11的pastetoggle選項。

作爲替代你總是可以寫上你要複製到一個臨時文件 (ma,轉到結束線,然後使用:'a,.w tempfile)的部分,然後讀入第二個文件。

有關進一步調查,你可能想看看autoindent選項。

28

在Esc鍵模式,鍵入:se nonu

這是爲了去除行號的最簡單的方法,你就可以沒有行號要複製的文本。

+0

Esc模式?現在有一個我以前沒有探索過的Vim模式(我認爲你可能意思是'Ex'模式,雖然建議的命令建議你真的開始'正常'模式) – sehe 2012-11-13 07:56:15

+8

他意味着「正常模式」。如果您處於插入模式(或任何其他模式),請按Esc鍵返回正常模式。 – Asenar 2013-10-24 07:43:32

3

以前輸入的所有解決方案都非常好。但是,有時候你在遠程服務器上使用vim(所以你不能使用"+y複製到剪貼板)。終端通常支持複製粘貼操作。

我使用vim輸出可視選擇到一個新的外殼,我可以使用終端功能複製文本:

:'<,'>w ! bash -c cat 

然後我可以很容易地複製該輸出。在VIM粘貼

相同的模式:

:r ! bash -c cat 

然後我粘貼,並使用按Ctrl +d發送EOF貓。此方法還可以避免重新粘貼您粘貼的文本(注意:您可以使用:set pi!禁用自動縮進)。

0

我將下面的命令映射到一個鍵。
它刪除複製行號周圍的空白。
它忽略行文本和任何後面的空行。

:1,$s/^\s*[0-9]\+\s//\|1,$s/^\s*[0-9]\+\n/\r/<cr> 
1

在Windows VIM GUI::set nu,然後按住Ctrl鍵 - 而 突出用鼠標所需的文本。這將行號碼 放入緩衝區。

10

如果有人想要更快的方法(在Linux上),我注意到在vim中你可以按住ctrl並拖動你想要複製的區域,你將避免行號並選擇你想要的部分。

步驟

  1. Ctrl鍵並在區域上拖移
  2. 鬆開Ctrl
  3. 副本(或鍵盤快捷鍵或右鍵點擊)
+0

什麼是vim?當我按住ctrl時,我最終點擊右鍵。任何其他的鑰匙,我仍然得到行號。 – 2016-04-03 20:56:54

+0

嗯,你放開CTRL之前,你右鍵點擊?另外,我正在使用Linux。 – 2016-04-05 13:39:47

+1

我喜歡這個答案。在Mac上,您可以選擇(alt)而不是ctrl。突出顯示的區域與小寫v模式下的視覺選擇類似。 – Steve 2016-06-02 15:40:26

3

這樣做的一個永久的解決方案是增加下面的代碼位於您主目錄中的.vimrc文件末尾。

se mouse+=a 

通過增加這一點,你就可以只選擇文本,而不是行號如下圖所示的圖像:

enter image description here


如果你沒有得到你的.vimrc文件你的主目錄(我遇到這個問題),在vi編輯器中輸入命令:scriptnames,它會顯示你的.vimrc文件的位置。 Reference