在VIM中映射一个键

在VIM中映射一个键,vim,Vim,我试过: :map <F2> :.y" :g/<C-R>"/d<CR> :映射:.y:g/“/d 运气不好:( 这样做的目的是将当前行拉入寄存器“ 然后,全局删除与寄存器中的行完全匹配的行。 当我手动操作时,它工作得很好 :vmap <F2> ["]yy<ESC><ESC> :g/<C-R>"/d<CR> :vmap[“]yy:g/”/d 与上面类似-我选择一些单词,不管什么-我做一个选择,然

我试过:

:map <F2> :.y" :g/<C-R>"/d<CR>
:映射:.y:g/“/d
运气不好:(

这样做的目的是将当前行拉入寄存器“ 然后,全局删除与寄存器中的行完全匹配的行。 当我手动操作时,它工作得很好

:vmap <F2> ["]yy<ESC><ESC> :g/<C-R>"/d<CR>
:vmap[“]yy:g/”/d
与上面类似-我选择一些单词,不管什么-我做一个选择,然后把它拉到register“,然后全局删除与register中的内容匹配的行。 当我手动操作时,它工作得很好

:vmap <F2> ["]yy<ESC><ESC> :g/<C-R>"/d<CR>

我做错了什么?

您已将F2重新映射到
:.y:
等。您需要
而不是一个简单的空格。如果您在vim中键入
:.y“
,并且不按ENTER键而是空格,则不会发生任何事情

因此:

更好的是,在不覆盖默认(
)的情况下,注册表为:

:nnoremap <f2> :g/^<c-r><c-o>=escape(getline('.'), '/\*[~$^.')<CR>$/d<cr>
:nnoremap:g/^=escape(getline('.'),'/\*[~$^.')$/d

这将删除所有相同的行。请注意,
'ignorecase'
'smartcase'
很重要。

您可以在第一行中尝试以下操作:

:nnorempa <F2> :silent exe "g/".getline(".")."/d"<CR>
:nnorempa:silent exe“g/”.getline(“.”)/d
对于第二种情况,如果您只想删除以下文字,请执行类似操作:

:vmap <F7> y:silent exe "%s/".@"."//g"<CR>
:vmap y:silent exe“%s/”@.//g
如果要删除匹配行,请执行以下操作:

:vmap <F7> y:silent exe "g/".@"."/d"<CR>
:vmap y:silent exe“g/”@“/d”

首先-确保您使用的是vim:)

这是我想要的映射。当我浏览日志文件中的大量数据时,这将非常有用。选择要消除的区域,然后所有突出显示区域的实例都完成

注意:这不会穿过突出显示的文本并转义任何正则表达式字符。因此/、*、^将使其出错

:map <F2> y:g/<C-R>"/d<CR>
:映射y:g/“/d

:)

好吧-我试着从手册中做一个简单的映射,不起作用..结果是xubuntu,默认情况下不安装vim-但是vi.无论如何-在安装vim并让东西正常工作之后..我现在至少在正确的轨道上:)
vim --version
:map <F2> y:g/<C-R>"/d<CR>