vim版本: 7.4 huge version.
使用中会有 多个 buffer, 一个tab 内会有多个 split window, 会有多个 tab.
可以在一个vim进程中多个buffer间分别进行搜索且不会互相影响吗?
vim版本: 7.4 huge version.
使用中会有 多个 buffer, 一个tab 内会有多个 split window, 会有多个 tab.
可以在一个vim进程中多个buffer间分别进行搜索且不会互相影响吗?
你可以自己写插件的。在 BufLeave 事件记录 @/ 到局部于缓冲区的变量(b:),在 BufEnter 时做相反的操作。by @依云
多年后的今天我还是没有学会 vimscript,但是在 neovim 的帮助下,我终于可以用 lua 来实现这个功能了。由于与之前其他人的思路不一样,补充以下
local api = vim.api
local search_in_win = (function()
local ns = api.nvim_create_namespace("search-in-win")
local last
return function(win_id, pattern)
assert(win_id ~= nil and pattern ~= nil)
if last ~= nil then
vim.fn.matchdelete(ns, win_id)
local same_search = pattern == last
last = nil
if same_search then return end
end
local matches = vim.fn.matchadd("Search", pattern, nil, ns, { window = win_id })
last = pattern
vim.notify(string.format("matched %d result", matches))
end
end)()
do
-- similar to `nmap *`
local win_id = api.nvim_get_current_win()
local keyword = vim.fn.expand("<cword>")
if keyword ~= "" then search_in_win(win_id, keyword) end
end
(由于是从我的配置中摘抄出来的,以上代码仅作参考,实际使用会很多限制;这里几乎都是用的 vim builtin function,用 nvim lua api 也能实现相似功能,不过稍显麻烦,所以这里以前者实现)
Vim 的 tab 只是显示的容器
真正存在的只有 buffer
@依云 给你提了利用BufEnter/BufLeave 事件的建议
那我帮你补完代码
nohlsearch
在autocmd
中无效, 已删除