映射VIM关键
问题描述:
我已经试过:映射VIM关键
:map <F2> :.y" :g/<C-R>"/d<CR>
没有运气:(
这里做的事情,抽出当前行到寄存器“ 然后,在全球范围,删除完全匹配的即行。寄存器行 当我做手工它的工作原理花花公子
上述:vmap <F2> ["]yy<ESC><ESC> :g/<C-R>"/d<CR>
类似 - 我选择了几句,不管是谁 - 我做出选择,然后猛拉它重新gister“。然后,我在全球范围内删除与寄存器中的内容匹配的行。 手动操作时它很有用。
我在做什么错?
答
首先的 - 确保你使用vim :)
vim --version
这是我打算的映射。当我浏览日志文件中的大量数据时,这将非常有用。选择你想消除的区域,然后高亮区域的所有实例都完成了。
注意:这确实不经过高亮文本和流出的任何正则表达式字符。所以a /,*,^会把它弄脏。
:map <F2> y:g/<C-R>"/d<CR>
:)
答
你已经重新映射F2到:.y" :
等。您需要<cr>
不是一个简单的空间。如果你在vim中键入:.y"
并且没有按ENTER键而是空格,则什么都不会发生。
所以:
:nnoremap <f2> :.y"<CR>:g/<C-R>"/d<CR>
能做到这一点。
不过,警告,如果你的行包含/\*[~$^.
这可能会失败。你可以使用表达式寄存器,以便就地逃脱:
:nnoremap <f2> :.y"<CR>:g/<c-r>=escape(@", '/\*[~$^.')<cr>/d<cr>
还有更好的,而不会覆盖您的默认("
)寄存器是:
:nnoremap <f2> :g/^<c-r><c-o>=escape(getline('.'), '/\*[~$^.')<CR>$/d<cr>
这将删除所有相同的行。还要注意'ignorecase'
或'smartcase'
的问题。如果你想删除只有一行字
:nnorempa <F2> :silent exe "g/".getline(".")."/d"<CR>
对于第二个,像这样:如果你想删除
:vmap <F7> y:silent exe "%s/"[email protected]"."//g"<CR>
这
嗯 - 我想从做手工做一个简单的地图,就不会工作。原来是Xubuntu,默认不安装VIM - 但六。反正 - 在安装Vim和有东西的工作sorta .......我现在至少在正确的轨道:) – Ziferius 2012-03-01 04:13:20