vim-非矩形可视块

问题描述

有没有办法在下面的代码中选择第二列, 原来是非矩形的。 我尝试了\“ CTRLv 3jE \”,但这不起作用。
int var_one = 1;
int var_two = 2;
int var_three = 3;
int var_very_long = 4;
    

解决方法

        您可以使用Align插件之一来对齐您的列,选择并复制它,然后撤消对齐(或保持对齐)     ,        基于这些评论,我认为要编写的自定义函数 将任务传递给awk。也可以用一些正则表达式来完成,将每个 在空格上排成一行,但是awk应该更容易。这是我的第一次尝试:
function! ExtractColToRegister(reg,...) range
    let input = join(getline(a:firstline,a:lastline),\"\\n\")
    if a:1 | let column = a:1
    else   | let column = 1 | endif
    exec \"let @\". a:reg . \" = system(\\\"awk \'{ print $\" .
       \\ column . \" }\'\\\",input)\"
endfunction
如果您已经在编写Vim,那么应该很容易理解它。 脚本:-)但是请让我知道它的某些部分是否不清楚,以及是否存在 还有一些需要改进的地方。 基本上,该函数的作用是将特定的列保存到寄存器中。如果 您可以直观地选择问题中给出的示例代码,然后:
:\'<,\'>call ExtractColToRegister(\"a\",2)
现在注册一个将包含:
var_one
var_two
var_three
var_very_long
您可以轻松地在其他地方
\"ap
。请注意,如果 参数被省略。 创建自定义命令“要注册的列”使该过程变得更加简单 在Vim脚本之外使用:
:command! -range -nargs=+ CTR <line1>,<line2>call ExtractColToRegister(<f-args>)
    ,        使用http://vim.wikia.com/wiki/Copy_the_search_results_into_clipboard中的CopyMatches函数 然后选择行并执行类似的操作
:\'<,\'>CopyMatches .*=