gpt4 book ai didi

vim: 作为 vim 命令执行光标后行的其余部分

转载 作者:行者123 更新时间:2023-12-01 10:04:05 24 4
gpt4 key购买 nike

有时我发现自己在编写文本时,文件的一部分是由外部程序生成的。例如,考虑一个包含

的 C 源文件
/*
* To regenerate the following data, place the cursor at the beginning
* of the next line after this comment, then run
* ma:r!find /foo -name '*.in' | xargs whatever | some complicated processing
* and merge the result with
* 'a!}sort -u
*/
some
generated
stuff
here

我最终使用鼠标选择第一个命令 (ma:...),粘贴并运行它,等待命令完成,选择 'a!} sort -u 并粘贴并运行它。这很不优雅,因为当我认为它可以全自动时,它只是半自动的。我阅读了有关 :execute 和 friend 的 vim 在线帮助,但看起来这并没有按照我的意愿进行。我正在考虑用适当的命令填充 vim 寄存器,然后执行寄存器内容。到目前为止,在线:help registers 没有给出任何线索。

理想情况下,新评论应该是这样的

/*
* To regenerate the following data, place the cursor on the 'j' on the
* next line in this comment, then execute it with <SHORT-MAGIC-VIM-INCANTATION>
* jjma:r!find /foo -name '*.in' | xargs whatever | ...<CR>'a!}sort -u<CR>
*/

如何实现?

最佳答案

我会让它处理 Ex 命令,而不是正常模式命令(例如您示例中的 ma);通过 :normal ma 很容易执行后者,但是将 Ex 命令输入到正常模式有转义问题(比如,你如何编码必须结束的 Enter Ex 命令?)

这是一个自定义命令:

command! -bar -range ExecuteFromCursor execute 'normal! "zy$' | @z

这是一个映射:

nnoremap <Leader>e "zy$:@z<CR>

关于vim: 作为 vim 命令执行光标后行的其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12638307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com