说我有以下
printf(text goes here);
Run Code Online (Sandbox Code Playgroud)
我在视觉模式下选择“文本在此处”...
如何快速将其更改为
printf("text goes here");
Run Code Online (Sandbox Code Playgroud)
ari*_*nmz 22
你应该多研究一下。哪些 Vim 命令可用于引用/取消引用单词?
引用:
环绕.vim 将是你最简单的答案。如果你真的反对使用它,这里有一些你可以做的例子。不一定是最有效的,但这就是编写环绕.vim 的原因。
- 引用一个词,使用单引号
ciw'Ctrl+r"'
ciw- 删除光标所在的单词,并以插入模式结束。'- 添加第一个引号。Ctrl+r"- 插入"寄存器的内容,也就是最后一次猛拉/删除。'- 添加结束语。- 取消用单引号括起来的单词
di'hPl2x
di'- 删除单引号括起来的单词。hP- 将光标向左移动一个位置(在开头引用的顶部)并将刚刚删除的文本放在引用之前。l- 将光标向右移动一个位置(在开头引用的顶部)。2x- 删除两个引号。- 将单引号改为双引号
va':s/\%V'\%V/"/g
va'- 直观地选择引用的单词和引号。:s/- 开始更换。\%V'\%V- 仅匹配视觉选定区域内的单引号。/"/g- 用双引号替换它们。
Dwi*_*cer 17
命令序列cw""<ESC>P是可以环绕文本并通过剪切单词(字母数字字符串:az、AZ、0-9,包括 _ [下划线]),然后插入文本""并点击转义键(<ESC>要退出插入模式,然后可以在光标前粘贴。因此该命令分解为:
c - 切入注册
w - 正则匹配 \w
"" -"在当前光标位置插入两个字符
<ESC>- 按转义键的 VIM 简写。在这种情况下,返回命令模式
P - 粘贴当前寄存器
但是,如果当前行上有更长的字符串集希望环绕,则需要使用带有捕获组的替换正则表达式命令,例如:
:s/\(\w\+\)/"\1"/g
此命令存储作为组 '1' 捕获的结果匹配正则表达式,并执行替换以将组的内容插入引号内。因此,鉴于文本:
fubar: 1
Run Code Online (Sandbox Code Playgroud)
变成:
"fubar": 1
Run Code Online (Sandbox Code Playgroud)
该VIM介绍帮助文件是任何人最好的资源之一,与一起:help命令。
Joh*_*024 14
这是为了回答您提出的具体问题。您声明您在视觉上选择了一些文本并希望用引号将其括起来。为此,请运行:
:s/\%V\(.*\)\%V/"\1"/
Run Code Online (Sandbox Code Playgroud)
把它分成几部分:
:允许您输入ex命令。
s/old/new/ 是通常的替代命令。
\%V 是一个记录不足的原子,用于标记所选文本的开头
\(.*\) 选择所有内容并将其保存到选择 1 中。
第二个\%V表示所选文本的结束。
替换文本是选择的所有内容,存储在 中\1,用引号括起来:"\1"。
此命令逐行应用。因此,如果所选文本扩展到多行,您可能会得到不需要的结果。
| 归档时间: |
|
| 查看次数: |
32157 次 |
| 最近记录: |