- B站视频 https://www.bilibili.com/video/BV1eP4y1t7pk/
普通模式按键ci"
上面说到英文的"
很方便,那么如果是中文双引号(“”
)怎么办呢?或者其他的符号呢?分享一个通用的方法。这个方法我使用的是lua脚本实现的。
lua脚本内容如下:
local cc = {}
function cc.cc(leftChar, rightChar)
local cursor = vim.api.nvim_win_get_cursor(0)
local line = tonumber(cursor[1])
--光标所在行索引
local index = tonumber(cursor[2])
--lua是从1开始的
index = index + 1
local lineText = vim.api.nvim_buf_get_lines(nil, line - 1, line, true)[1]
--搜索开始位置
local left, llen = string.find(lineText, leftChar)
if left == nil or llen == nil or index == nil then
return
end
--光标左面没有找到就直接退出
if left > index then
return
end
local leftSearch = 1
local llenSearch = 1
--防止死循环
local count = 1
while leftSearch ~= nil do
leftSearch, llenSearch = string.find(lineText, leftChar, llenSearch)
if leftSearch ~= nil then
if leftSearch >= index then
break
end
left = leftSearch
llen = llenSearch
end
count = count + 1
if count > 100 then
break
end
end
--搜索结束位置
local right, _ = string.find(lineText, rightChar, index)
if left == nil or right == nil then
return
end
local str1 = string.sub(lineText, 0, llen)
local str2 = string.sub(lineText, right, #lineText)
local lastStr = str1 .. str2
vim.api.nvim_buf_set_lines(nil, line - 1, line, true, {lastStr})
vim.api.nvim_win_set_cursor(0, {line, llen})
vim.fn.feedkeys("i")
end
return cc
按键配置
nnoremap cc" lua require('cc').cc('“','”')
nnoremap cc[ lua require('cc').cc('【','】')
nnoremap cc> lua require('cc').cc('>','
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?