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