我正在尝试配置
nmap <C-F2> :set iminsert=1 imsearch=1<cr>
imap <C-F2> <C-O><C-F2>
以更改vim语言。它在命令和插入模式下效果很好。 但这在搜索模式下不起作用。 为了实现它,我写了一个函数
function! Call_F2()
set iminsert=1
set imsearch=1
return ""
endfunction
并使用a
进行映射cmap <C-F2> <C-R>=Call_F2()<cr>
所以我键入/并按C-F2,但是设置不适用于当前的搜索模式。现在,我必须退出并重新进入搜索模式才能看到应用的更改。
问题是:如何在激活的搜索模式下立即更改设置“ iminsert”和“ imsearch”?
?(我知道我可以使用快捷键C- ^,它可以工作,但是我想将语言映射到他们自己的快捷键)
答案 0 :(得分:1)
我无法像您一样使用<C-F2>
(不确定原因),但是使用<F2>
可以起作用:
:cmap <F2> <esc>:set iminsert=1 imsearch=1<cr>/<up>
限制:以<up>
结尾,它避免了在我按<F2>
时清除当前搜索行,但是如果当前搜索行为空,则会带回前一条,并且如果该搜索是查找不存在的字符串。
我不确定如何检测搜索行的当前状态是否为空,因为我从<esc>
开始,它已退出搜索模式以进行更改。
当在文本中找不到当前搜索字符串时,它的行为也很差,使您退出搜索模式,因为它找不到该字符串。
总而言之,这种解决方案并不是很好,但是我还是想发布它,因为它可能会成为开发更好解决方案的灵感。
答案 1 :(得分:1)
非常感谢Joanis!我已经改善了她/他的解决方案:
const login = async (userId, password) => {
// ...
if (response.status === 201) {
// ...
await refresh(token);
}
};
const refresh = async refreshToken => {
const response = await fetch(refreshUrl, {
method: "POST",
mode: "cors",
headers: {
"Content-Type": "application/json",
Authorization: `JWT ${refreshToken}`
}
});
// ...
};
我注意到的唯一副作用:光标总是跳到搜索模式的末尾。