Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 编辑时是否有视觉闪光效果?_Vim_Vi - Fatal编程技术网

Vim 编辑时是否有视觉闪光效果?

Vim 编辑时是否有视觉闪光效果?,vim,vi,Vim,Vi,我们正在寻找的是在正常模式下对vim编辑的受影响区域进行短暂的视觉闪烁。例如,在编辑时 if (true) { //line to be deleted } 如果我们在//要删除的行上执行dd,则在删除之前,此受影响的区域应闪烁,我们可以使用Vd执行同样的操作。我们所看到的效果与使用dd的Vd的效果相同。这适用于所有编辑操作,如c、y等 我们试着用nnoremap dd Vd对它进行映射,以测试一行,但没有成功。甚至不确定我们是否应该像这样绘制地图 谷歌搜索没有发现任何令人满意的结果。

我们正在寻找的是在正常模式下对vim编辑的受影响区域进行短暂的视觉闪烁。例如,在编辑时

if (true) {
    //line to be deleted
}
如果我们在
//要删除的行上执行
dd
,则在删除之前,此受影响的区域应闪烁,我们可以使用
Vd
执行同样的操作。我们所看到的效果与使用
dd
Vd
的效果相同。这适用于所有编辑操作,如
c
y

我们试着用
nnoremap dd Vd
对它进行映射,以测试一行,但没有成功。甚至不确定我们是否应该像这样绘制地图


谷歌搜索没有发现任何令人满意的结果。有没有已知的插件?任何可以插入vim的代码都将非常棒

在我给出的示例中,有许多地方需要调整,但它们可能是解决问题的良好开端

您可以使用
:redraw
:sleep
在函数执行期间绘制一段时间的选择

下面是一个带有
dd
的示例:

nmap <silent> dd :call Com_dd()<cr>

function! Com_dd() range
    " Enter visual mode:
    normal! V

    " Select multiple lines, when there's a range:
    let morelines = a:lastline - a:firstline
    if morelines != 0
        exe "normal! ".morelines."j"
    endif

    " Redraw the screen so we can see the selection:
    redraw

    " Sleeps 200ms:
    sleep 200 m

    " Delete the selected lines:
    normal! d
endf
最后一个示例不处理范围,因此
3cw
将不起作用(但
c3w
将起作用)

有关映射运算符的帮助,请参见
:hg@

但是它会导致一些新的问题:例如,
不再使用这些命令。 另一个例子是:标准的
cw
命令不会删除单词后面的任何空格,但我的示例会删除


您可能会找到一些解决这些新问题的方法,但我现在没有。

Vd有什么问题吗?
?除了一块额外的石头,没有别的。每次为每个编辑命令键入
v/v
都会变得相当繁重。我的意思是你可以
nnoremap y v
nnoremap d v
,等等。。然而,这会破坏其他东西。如果你不使用其他应该对你有用的东西,也许你可以看看的代码。谢谢,这似乎是一个很好的起点谢谢@yolenoyer。我会评估并回复你
nmap <silent> c :set opfunc=Com_c<cr>g@

function! Com_c(type)
    let curpos = getpos('.')

    if a:0  " Invoked from Visual mode, use gv command.
        silent exe "normal! gv"
    elseif a:type == 'line'
        silent exe "normal! '[V']"
    else
        silent exe "normal! `[v`]"
    endif

    redraw

    sleep 200 m

    normal! d
    startinsert
    call setpos('.', curpos)
endf