簡體   English   中英

使用 Vim 從多行中的每一行中選擇第一個單詞

[英]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

我嘗試使用 ctrl-v 和 e 之后,但它復制到圖像上: 在此處輸入圖片說明

你可以每首字為空寄存器(比方說,追加q使用)

:'<,'>norm! "Qyiw

也就是說,在視覺選擇的每一行中,執行"Qyiw normal命令序列"Qyiw將(第一個)“內部字”附加到q寄存器。

您需要在cpoptions中添加>以便在 yanks ( :set cpoptions+=> ) 之間添加換行符,否則單詞將連接在一行中。

如果你想快速清空寄存器,你可以在正常模式下使用qqq (或qaq清空寄存器a )。

注意:未命名的寄存器 ( "" ) 也會在操作結束時包含您想要的內容,因此您不需要"qp粘貼它, p就可以了。”

我認為選擇的答案非常好,將匹配項附加到寄存器的想法在其他情況下也非常有用。

也就是說,完成此操作的另一種方法可能是先對齊右側,進行復制,然后撤消對齊。 您可以使用tabularAligneasy-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM