fittencode.nvim
fittencode.nvim copied to clipboard
Feat: 在 action 中支持 charwise 与 blockwise 选区。
在 visual 模式下执行各类 action 时, 发送的字符总是 linewise 的选区. 我写过一个可以简单地获取选区文本的脚本, rangemark.txt
--- 文件名需要先改成 rangemark.lua
RangeMark=require("rangemark")
--- 暂存先前的选区标记 (vmark 指代 '<,'> 标记组合)
local vmark_start=RangeMark:get_vmark()
--- 退出 visual mode,更新标记
vim.api.nvim_feedkeys(string.char(27),"nx",false)
--- 获取更新后的选区标记
local vmark=RangeMark:get_vmark()
--- 复制选区,返回 register
local vreg=vmark:yank()
--- 支持任意选区类型
local content=vreg.regcontents
--- 恢复先前选区标记
vmark_start:set_vmark()
--- 恢复先前选区
--- vmark:select()
这是兼容多个类型选区的参考实现. 使用内置的y
命令获取文本, 可以获取任意类型的选区.
vreg.regcontents 的类型是 string
(单行) 和 string[]
(多行), 使用 table.concat(vreg.regcontents,"\n") 就可得到带换行符的文本.