运行 ci Vim 中光标下的任何内容
Running ci on whatever is under the cursor in Vim
基本上我想将鼠标悬停在括号或引号之类的东西上,然后当我按下我的键时,命令会自动捕获我光标下的内容 运行 ci 就可以了。
因此,如果我悬停 (,它将 运行 ci( 等
我真的不知道如何捕获光标下的当前字符并将其传递给映射。我找到了一些命令来查找光标下的字符,但我无法在我的重映射中使用它。
非常感谢ci提供帮助。
首先,您可以使用以下方法获取光标下的字符:
let char_under_cursor=getline('.')[col('.')-1]
下一步,要检查 char_under_cursor 是否是 (,[, {,...
之一,您的映射将做 ci*
,您可以考虑使用 <expr> mapping
,这里是一个例子:
nnoremap <expr> <F10> getline('.')[col('.')-1] == '('?'ci(' : '\<None>'
这个映射示例(F10)只是检查光标下的字符是否为(
,如果是,则ci(
,否则,什么都不做。
我想您知道如何检查它了,您可以检查 char 是否与某些正则表达式匹配以涵盖 ],}...
个案例。此外,您可以编写一个包含更复杂逻辑的小函数,并在 <expr>
映射中调用该函数。
祝你好运!
在肯特的帮助下,我设法弄明白了。
这个命令完成了我现在需要的一切。
nnoremap <expr> <leader>f "ci".getline('.')[col('.')-1]
如果您安装并启用插件 wellle/targets.vim,那么您可以简单地使用 ib
文本对象到 select inside any由通常的匹配定界符包围的块。
在您的情况下,(
顶部的 cib
或它内部的任何地方(只要它不在另一个块内)都可以更改该特定块内的内容。
请参阅该插件的自述文件中的 "Any Block"。
您还有一个相应的 iq
引号,它会影响 "
、'
或 `
中的任何一个。该插件在确定哪些引号构成字符串定界符方面也非常聪明,即使您在一行中有多对引号或转义引号也是如此。
基本上我想将鼠标悬停在括号或引号之类的东西上,然后当我按下我的键时,命令会自动捕获我光标下的内容 运行 ci 就可以了。
因此,如果我悬停 (,它将 运行 ci( 等
我真的不知道如何捕获光标下的当前字符并将其传递给映射。我找到了一些命令来查找光标下的字符,但我无法在我的重映射中使用它。 非常感谢ci提供帮助。
首先,您可以使用以下方法获取光标下的字符:
let char_under_cursor=getline('.')[col('.')-1]
下一步,要检查 char_under_cursor 是否是 (,[, {,...
之一,您的映射将做 ci*
,您可以考虑使用 <expr> mapping
,这里是一个例子:
nnoremap <expr> <F10> getline('.')[col('.')-1] == '('?'ci(' : '\<None>'
这个映射示例(F10)只是检查光标下的字符是否为(
,如果是,则ci(
,否则,什么都不做。
我想您知道如何检查它了,您可以检查 char 是否与某些正则表达式匹配以涵盖 ],}...
个案例。此外,您可以编写一个包含更复杂逻辑的小函数,并在 <expr>
映射中调用该函数。
祝你好运!
在肯特的帮助下,我设法弄明白了。
这个命令完成了我现在需要的一切。
nnoremap <expr> <leader>f "ci".getline('.')[col('.')-1]
如果您安装并启用插件 wellle/targets.vim,那么您可以简单地使用 ib
文本对象到 select inside any由通常的匹配定界符包围的块。
在您的情况下,(
顶部的 cib
或它内部的任何地方(只要它不在另一个块内)都可以更改该特定块内的内容。
请参阅该插件的自述文件中的 "Any Block"。
您还有一个相应的 iq
引号,它会影响 "
、'
或 `
中的任何一个。该插件在确定哪些引号构成字符串定界符方面也非常聪明,即使您在一行中有多对引号或转义引号也是如此。