Vim命令行模式下无需norm命令实现寄存器读写的方法咨询
Vim命令行模式无norm的缓冲区读写操作
问题1:将寄存器'a'的内容插入到第5行第6个位置
使用替换命令即可实现,无需依赖normal命令:
:5,5s/\%6c/\=@a/
5,5限定仅操作第5行\%6c精确匹配该行第6个字符的位置\=@a表示将匹配位置替换为寄存器'a'的内容,完成插入效果
问题2:将第3行第4列到第5行第2列的内容存入寄存器'b'
通过Vim内置的字符串处理函数和寄存器操作函数实现,执行以下命令:
:call setreg('b', join(map(range(3,5), {ln -> strpart(getline(ln), ln==3 ? 3 : 0, ln==3 ? len(getline(ln))-3 : 2)}), "\n"))
range(3,5)遍历目标行范围(第3至第5行)- 针对不同行做字符截取:
- 第3行:从第4个字符(Vim字符串索引从0开始,对应索引3)截取到行尾
- 第4、5行:从开头截取前2个字符
join(..., "\n")把各行截取的内容拼接成带换行符的完整文本setreg('b', ...)将最终文本存入寄存器'b'
内容的提问来源于stack exchange,提问作者Ivan Dimitrov
相关产品推荐
相关产品推荐

