我正在使用我的脚本测试代理:
$proxy = "http://name:pass@133.245.122.91:80";
$proxy2 = "http://name:pass@133.245.229.241:80";
$proxy3 = "http://name:pass@133.245.113.197:80";
...
$proxy100 = "http://name:pass@133.245.212.197:80";
我通过电子邮件获取新代理,因此可以复制新代理并通过Vim
插入代理而不是旧代理:
"http://name:pass@133.245.122.91:80";
"http://name:pass@133.245.229.241:80";
"http://name:pass@133.245.113.197:80";
...
"http://name:pass@133.245.212.197:80";
正确知道我正在按照本页How do I paste a column of text after a different column of text in Vim?
中的描述进行操作使用视觉块(ctrl-v)剪切字母列。然后转移到 数字列的第一行。移到最后并创建一个空格。 然后粘贴字母列。
我很好奇,如果没有额外的步骤就可以完成,只需从剪贴板粘贴数据?
答案 0 :(得分:5)
简短版:你不能。有很多方法,但它们并不一定简单。更长的版本如下。
Vim有三种标记文本区域的方法:linewise(按 V 时开始此模式),按字符顺序(按 v 时触发)和blockwise (当您按 Ctrl-v 时)。标记的区域被复制到一个寄存器,该寄存器有一个属性," type",它反映了标记,行,字符或块的标记方式。从寄存器粘贴时会发生什么情况取决于此类型。
现在,当您从系统的剪贴板复制时,结果存储在*
寄存器中,并且类型始终设置为linewise。因此,您无法粘贴列模式"无需额外的步骤"。但是,您可以在粘贴之前将*
寄存器的类型设置为blockwise:
call setreg('*', @*, 'b')
因此,替换代理列表将是这样的:
:call setreg('*', @*, 'b')
将*
寄存器的类型设置为blockwise "
;
通过使*
和+
寄存器始终引用相同的值,您可以稍微简化最后一步。为此,请将其添加到您的vimrc:
set clipboard=unnamedplus,autoselect,exclude:cons\\\\|linux
使用此设置,咒语变为:
:call setreg('+', @+, 'b')
如果你有一个可以用Vim打开的文件中的新列表,你就不需要这种舞蹈了:
这仍然涉及使用系统剪贴板,但Vim的第二个副本负责将相关寄存器的类型设置为blockwise。
答案 1 :(得分:0)
我不知道有什么直接的方法可以做到这一点。如果它对您来说非常重要,那么在进行实际编辑之前可能需要进行一些设置,这只会增加您必须执行的键入量(但是您可以向vimrc添加命令以使其永久化)。您可以设置一些键盘宏,或使用以下map命令:
:imap <CR> <Esc>j011lC
现在转到第一个"
符号并按C,然后开始粘贴(仅适用于终端)。无论何时粘贴换行符,地图都会将您移至下一行的第11列。
完成后请记得:iunmap <CR>
。