[英]Select first word from each line in multiple lines with Vim
我想復制多行的第一個單詞。
代碼示例:
apiKey := fmt.Sprintf("&apiKey=%s", args.ApiKey)
maxCount := fmt.Sprintf("&maxCount=%d", args.MaxCount)
id := fmt.Sprintf("&id=%s", args.Id)
userid := fmt.Sprintf("&userid=%s", args.Userid)
requestFields := fmt.Sprintf("&requestFields=%s", args.RequestFields)
我想在我的剪貼板中有這個:
apiKey
maxCount
id
userid
requestFields
你可以每首字為空寄存器(比方說,追加q
使用)
:'<,'>norm! "Qyiw
也就是說,在視覺選擇的每一行中,執行"Qyiw
normal
命令序列"Qyiw
將(第一個)“內部字”附加到q
寄存器。
您需要在cpoptions
中添加>
以便在 yanks ( :set cpoptions+=>
) 之間添加換行符,否則單詞將連接在一行中。
如果你想快速清空寄存器,你可以在正常模式下使用qqq
(或qaq
清空寄存器a
)。
注意:未命名的寄存器 ( ""
) 也會在操作結束時包含您想要的內容,因此您不需要"qp
粘貼它, p
就可以了。”
我認為選擇的答案非常好,將匹配項附加到寄存器的想法在其他情況下也非常有用。
也就是說,完成此操作的另一種方法可能是先對齊右側,進行復制,然后撤消對齊。 您可以使用tabular 、 Align或easy-align 等工具。
使用表格,標記區域並執行:Tab/:
將導致:
apiKey : = fmt.Sprintf("&apiKey=%s", args.ApiKey)
maxCount : = fmt.Sprintf("&maxCount=%d", args.MaxCount)
id : = fmt.Sprintf("&id=%s", args.Id)
userid : = fmt.Sprintf("&userid=%s", args.Userid)
requestFields : = fmt.Sprintf("&requestFields=%s", args.RequestFields)
您現在可以使用視覺塊模式選擇第一部分,然后使用u
撤消對齊。
依靠外cut
程序:
:'<,'>!cut -d' ' -f1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.