在我的using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var scanPath = @"c:\your\path";
var scanPattern = "*.log";
var outfile = "result.log";
var logs = from file in Directory.EnumerateFiles(scanPath, scanPattern)
from line in file.AsLines()
where line.Substring(20, 11) == "140.25.1.37"
select line;
logs.WriteAsLinesTo(outfile);
}
}
public static class Tools
{
public static void WriteAsLinesTo(this IEnumerable<string> lines, string filename)
{
using (var writer = new StreamWriter(filename))
foreach (var line in lines)
writer.WriteLine(line);
}
public static IEnumerable<string> AsLines(this string filename)
{
using (var reader = new StreamReader(filename))
while (!reader.EndOfStream)
yield return reader.ReadLine();
}
}
}
中,我创建了以下映射。基本上我希望VIM在按.vimrc
时插入一些文字。
映射定义如下:
<leader>c
地图的第二部分可以正常工作(它正确地退出插入模式),但实际上从普通模式进入插入模式并插入文本需要大约一秒钟。
我想这可能与我map <leader>c iHELLO WORLD<Esc>;w<CR>
中的设置有关。你可以看一下here。
答案 0 :(得分:1)
您必须拥有多个<leader>c
- 映射。 Vim必须等待消除timeoutlen
ms的歧义才能确定您是否要输入<leader>cx
(其中x
是什么)。
您可以使用verbose map <leader>c
查看相关的映射。然后删除其他内容或将其扩展为<leader>ch
(h
为“Hello”助记符)。
答案 1 :(得分:1)
您可能有另一个共享公共前缀(<leader>c
)的映射,因此Vim正在等待您在假设您只是“<leader>c
”之前输入任何消除歧义的字符。
您可以通过选择非模糊映射,更改其他映射或将'timeoutlen'
从其默认值1000(ms)缩小来避免这种情况。
要找出可能存在冲突的映射,请尝试:map <leader>c
并检查输出。