通过vim映射插入文本很慢

时间:2015-09-16 17:33:12

标签: vim

在我的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

2 个答案:

答案 0 :(得分:1)

您必须拥有多个<leader>c - 映射。 Vim必须等待消除timeoutlen ms的歧义才能确定您是否要输入<leader>cx(其中x是什么)。

您可以使用verbose map <leader>c查看相关的映射。然后删除其他内容或将其扩展为<leader>chh为“Hello”助记符)。

答案 1 :(得分:1)

您可能有另一个共享公共前缀(<leader>c)的映射,因此Vim正在等待您在假设您只是“<leader>c”之前输入任何消除歧义的字符。

您可以通过选择非模糊映射,更改其他映射或将'timeoutlen'从其默认值1000(ms)缩小来避免这种情况。

要找出可能存在冲突的映射,请尝试:map <leader>c并检查输出。