2011-04-23 71 views
1

貼我有如下內容的文件:列拷貝和

sensor_write_reg(client,0x57,0x00); 
    sensor_write_reg(client,0x58,0x00); 
    sensor_write_reg(client,0x59,0x00); 
    sensor_write_reg(client,0xfe,0x00); 
    sensor_write_reg(client,0x46,0x00); 

我想列下面的文字複製到一個新的文件:

struct reg reg_table[] = 
{ 
// paste here 
} 

int a; 
int b; 
int c; 
// ... 

the following content expected: 
struct reg reg_table[] = 
{ 
0xfe,0x01 
0x54,0x11 
0x55,0x03 
0x56,0x00 
0x57,0x00 
0x58,0x00 
0x59,0x00 
0xfe,0x00 
0x46,0x00 
} 

int a; 
int b; 
int c; 
// ... 

在源文件中,我鍵入CTRL + v進入列模式,選擇並複製。 鍵入CTRL + W輸入目標文件,然後鍵入p進行粘貼。 但是,粘貼的內容會覆蓋以下語句。那不是我想要的。

0xfe,0x01 
0x54,0x11} 
0x55,0x03int a; 
0x56,0x00int b; 
0x57,0x00int c; 
0x58,0x00 

是否有任何方式將它粘貼到行模式中,在許多新行中?

回答

3

總是粘貼東西linewise你可以使用:put命令。

:put 

如果你想轉換爲字符或者列塊,你可以使用setreg()功能如本vim tip或使用這個插件,UnconditionalPaste

+0

這很簡單,它確實工作 – pengguang001 2011-04-28 13:35:22

+0

@ soul2003很高興喜歡它。從系統剪貼板,':pu *'粘貼時,我發現它非常有用 – 2011-04-28 14:19:19

0

按行選擇不能進行分段選擇。

您正在複製6行文本,因此您必須將6行文本粘貼。嘗試6O<CR>p

+0

謝謝!如何在光標後插入6個空白行?最好不要離開命令模式。 – pengguang001 2011-04-23 06:24:21

+0

@ soul2003,Vim的命令通常遵循相同的模式:適用於右/下/下方向的命令的小寫字母和適用於左/上/上方向的命令的大寫字母。至少在西方的情況下。例如:'fx'到右邊的下一個'x'字符,而'Fx'到左邊的前一個'x'。這裏我們使用'O'在當前**之前添加一行**,**之後我們應該使用什麼命令來添加一行**?如果你不想離開正常模式,你也可以使用':put ='''或':put!=''''。 ':help:put'。 – romainl 2011-04-23 20:08:02

0

你也可以嘗試一個宏;經過一番艱難的,我發現這一個:

 
y:tabe^MP:%s/^.*\(0x\x\+,0x\x\+\).*$/\1/^MVggy:tabclose!^M^Wjp 

(在^M^W是回車和控制-W)

你的vim的設置將會是......

  • 一個標籤有兩個窗口,horz分割(通過CW S)
  • sensor_write_reg-stuff在上部窗口中,
  • 此處粘貼的源代碼在l ower one。
  • 下面的窗口:一定要行「貼在這裏」
  • 上方的窗口:你想
  • 然後按@q(如果宏保存到q視覺選擇(現在資本V)的線;或者只輸入在飛行中的命令...),並讓神奇的事情發生...

這裏發生了什麼?

  • y
    我們抽出文字
  • :tabe^MP
    和一個空的緩衝區打開一個新標籤,粘貼文本
  • (注意:如果你有一個未命名的緩衝,這將無法工作)
  • :%s/^.(0x\x+,0x\x+).$/\1/
    我們在這裏過濾:只有兩個十六進制數字,用逗號分隔,才能存活。
  • Vggy:tabclose!^M
    抽出一切,關閉緩存(不保存)
  • (現在我們又回到了第一個選項卡,還在窗口的上部)
  • ^Wjp
    移動一個窗口下來,並粘貼。

最後,您可以使用kD來刪除「粘貼在這裏」-line ...

+0

是的,這是我想要的。非常感謝你! – pengguang001 2011-04-25 07:37:30

+0

這個帖子的頂部附近的某個地方,你可能會發現喜歡被點擊的複選標記:) – osti 2011-04-25 08:02:57