小编RSW*_*RSW的帖子

在没有鼠标或键盘箭头的情况下滚动浏览Visual Studio Intellisense列表

我是Visual Studio中Intellisense的重度用户.我也是"把手放在键盘上"和"让他们保持在原位"的爱好者,所以我一直在寻找方法让我的双手ASDF   JKL;尽可能地保持在按键上.

每当Intellisense列表在Visual Studio中弹出时,如果列表中有许多单词以与我想要选择的单词相同的字母开头,那么在我的选择中输入前几个字母就无济于事,因为列表不会跳到我的首选选项,直到我输入足够的字符才能最终到达单词中的第一个唯一字符.将右手从JKL;按键上移开并伸出上/下箭头键以手动滚动列表通常会更快.

我宁愿让我的手集中在原位置,最好使用类似JK键向上移动,并在智能感知列表中上下(类似于如何JK上下移动在Vim里...特别是因为我使用里面VsVim视觉工作室).

MSDN文档智能感知只列出了上/下箭头键和滚动(鼠标滚轮PgUp/ PgDn按键等),这样做的选择: 在此输入图像描述


所以这是我的问题(按照优先顺序):

  1. Visual Studio中是否存在任何键盘快捷键,可以在滚动智能感知列表时将双手保持在原位?

  2. 有没有办法自定义地图键盘键(如JK)在智​​能感知列表中进行向上/向下滚动?

  3. 有没有启用此功能的插件?

  4. 有没有其他方法可以实现这一目标?

c# visual-studio-2010 visual-studio visual-studio-2012

38
推荐指数
2
解决办法
5034
查看次数

当我在CSS文件中开始新注释时,如何阻止Visual Studio自动添加注释结束字符

在Visual Studio 2012中,当我想使用/**/字符注释掉CSS文件中的一行或多行时,VS总是*/在我键入起始注释字符后立即自动添加结束注释字符.所以,如果我从这段代码开始:

.appGrid {
    display: -ms-grid;
    -ms-grid-columns: 120px 1fr;
    -ms-grid-rows: 140px 80px 1fr;
}
Run Code Online (Sandbox Code Playgroud)

我想要注释掉这一-ms-grid-rows行,我/*在该行的开头键入.这就是我想看到的:

.appGrid {
    display: -ms-grid;
    -ms-grid-columns: 120px 1fr;
/*    -ms-grid-rows: 140px 80px 1fr;
}
Run Code Online (Sandbox Code Playgroud)

相反,VS在*/我完成输入/*字符后立即添加字符,如下所示:

.appGrid {
    display: -ms-grid;
    -ms-grid-columns: 120px 1fr;
/**/    -ms-grid-rows: 140px 80px 1fr;
}
Run Code Online (Sandbox Code Playgroud)

然后我必须手动删除自动添加*/并重新添加它我真正想要的地方...在这种情况下,在我想要注释掉的行的末尾.

如何阻止VS自动添加*/字符?我在工具>选项> TextEditor> CSS中找不到任何禁用此行为的选项.

作为参考,我使用的是VS2012 Premium.

css comments visual-studio-2012

26
推荐指数
1
解决办法
3012
查看次数

如何捕获或标记由于静态字段初始化的顺序导致的潜在问题

考虑以下C#代码:

using System;
class Program
{
    static string string1 = "AAA";
    static string string2 = string1 + string3;
    static string string3 = "BBB";

    static void Main()
    {
        Console.WriteLine(string2);
    }
}
Run Code Online (Sandbox Code Playgroud)

我今天早些时候写了一些这样的代码,并期望string2包含值AAABBB,但它只包含它AAA.我对静态变量的初始化顺序进行了一些阅读,但在编译过程中,我似乎更喜欢某种类型的警告或错误.

两个问题:

  1. 为什么允许这样的代码成功编译?(如果答案是:"因为那是C#规范的编写方式",那么为什么它是这样编写的?有没有理由我错过了为什么这不优选总是只抛出编译时错误?)

  2. 没有办法获得编译时警告或其他类型的标志,如果我最后无意中再次编写这种代码?

c# visual-studio-2010

16
推荐指数
3
解决办法
221
查看次数

使逐字字符串文字自动缩进以保持与附近代码保持一致

在C#中,我经常使用逐字字符串文字(例如@"Arrr!")来跨越多行来断开长字符串,同时保留布局.例如,我使用它来分解内联SQL,如下所示:

var sqlString = @" 
    SELECT 
        Column1
        , ...
    FROM
        Table1 INNER JOIN ...
    WHERE 
        Column2 = @Value2
        , ...
    ";
Run Code Online (Sandbox Code Playgroud)

...或者打破这样的正则表达式模式:

var regexPattern = @"
    (?<state>\w+)[.]?                       (?#*** Matches state {optionally having a period at the end} ***)
    (\s+|,|,\s+|\s*\u2022\s*)               (?#*** Matches space between state and zip {can include a comma or bullet point} ***)
    (?<zip>(\d{5}-\d{4}\b|\d{5}(?![\w-])))  (?#*** Matches zip code ***)
    ";
Run Code Online (Sandbox Code Playgroud)

 

但是,如果此代码稍后自动缩进,则逐字字符串文字不会自动缩进.当它上方和下方的代码行向右移动时,它会被遗忘.结果是它与其他一切都不一致.例如:

之前:

verbatim = @"               ___
    I likes my                 |
    strings purty              | indented the way …
Run Code Online (Sandbox Code Playgroud)

c# string auto-indent autoformatting visual-studio-2013

11
推荐指数
1
解决办法
962
查看次数

在Visual Studio中复制列标题和查询结果

When I run SQL Server queries from within Visual Studio, I sometimes need to copy the query results to the clipboard for pasting into another document. When I do this, I also want to copy the column headers (column names) along with the query results so that they get pasted with the data. I have always been able to do this with SQL Server Management Studio (SSMS), but I can't figure out how to do this in Visual Studio. It's …

sql sql-server visual-studio-2010 visual-studio visual-studio-2012

7
推荐指数
1
解决办法
1万
查看次数

修改Google新闻以消除不需要的新闻来源

TL; DR

我想写一些代码来过滤掉基于新闻来源在Google新闻上显示哪些文章.


(长版)

我传统上使用Google新闻中的"个性化"选项来限制使用哪些新闻来源(例如,"不显示来自FooNews的文章").但是,个性化选项不会让您完全阻止新闻源...您可以做的最好是告诉它"很少"使用该源(它们不提供"从不"选项):

在此输入图像描述

Firefox是我的首选浏览器,所以我终于坐下来看看我是否可以编写一些代码来解决这个问题,但我想知道我的选择是什么以及可能是最好的选择.这是我到目前为止所做的/学到的:

选项1:过滤传入的数据

我做了一些谷歌搜索,看看是否有可能拦截响应数据并在浏览器中呈现之前过滤掉不需要的新闻源,但无法找到有关如何执行此操作的明确建议.使用Fiddler,我可以看到相当简单的新闻来源列表从谷歌新闻传播到浏览器,我假设页面上的一个谷歌脚本获取新闻源列表并构建HTML格式化它们根据谷歌新闻页面结构(虽然我可能错了).换句话说,我认为我看到的是响应流没有通过页面HTML发送...所有它正在做的是通过新闻源列表发送.如果是真的,那么在它甚至点击页面内格式化脚本之前简单地过滤这个新闻源流将是最简单和最简洁的.

在此输入图像描述

选项2:构造DOM 之前过滤数据

我开始摆弄Mutation Observers,看看我是否可以通过在为页面构建DOM时捕获和删除这些节点来过滤掉不需要的新闻源.我开始使用mutation-summary.js库,但是当它添加到DOM时,我没有为每个新闻文章触发事件,而是只看到一些通知.也许我做错了什么,但我需要在将每篇新闻文章添加到DOM时得到通知,以便有一个有效的过滤器.接下来我会考虑写一些普通的JS变异观察者(跳过图书馆),但是想等一下,看看是否有更好的选择.

选项3:构造DOM 之后过滤数据

我听过其他人建议这种做法:

  1. 使用CSS隐藏整个文档正文
  2. 等到构建DOM
  3. 通过查找不需要的DOM节点并删除它们来进行过滤
  4. 最后,取消隐藏修改后的正文(我猜这个技巧可以防止你在最初构建DOM后修改DOM所引起的页面闪烁)

我写了一些测试代码来尝试这种方法,虽然单调乏味,但并不难.在已经建立的Google新闻页面上研究了DOM的结构之后,我能够编写一些代码来搜索和遍历DOM以删除我不想看到的新闻文章.然而,以这种方式执行它既麻烦又繁琐,因为这会在已删除的DOM节点所在的页面结构中留下"漏洞".随着更多的工作,我可以移动其他剩余的新闻文章来填补这些"漏洞",但我宁愿使用其他方法之一,如果可能的话,因为它们似乎更容易和更清洁...更不用说更快.在构建DOM之后摆弄它需要更长的时间,因为使用CSS隐藏页面直到完成该过程会使用户等待看到任何内容,直到页面被完全加载,更改和重新显示.

这个问题

我的直觉说选项1将是最干净和最快的(如果可能的话),然后是选项2,如果没有,最后选项3作为最后的手段.

我最终希望将其转换为Firefox扩展,因此我希望我选择的解决方案具有以下特性:

  • 尽可能简单地维护代码(不是初始复杂性的问题,而是希望以后在需要进行更改以便使扩展保持最新时再次访问).理想情况下,代码将尽可能与对Google新闻页面的特定HTML格式的依赖性分离,以便每次Google调整页面时都不需要更新代码.
  • 尽可能高效(没有懈怠,页面闪烁等).我不希望用户卸载扩展程序,因为它感觉像是一块垃圾.
  • 尽可能跨浏览器(以便在将来发布Chrome,Edge等扩展程序)

在解决这个问题的所有可能的技术方法中(包括我可能错过的其他方法),哪个最符合我的要求?

html javascript firefox dom mutation-observers

5
推荐指数
1
解决办法
212
查看次数

将多个参数发送到WinJS.Binding.converter()函数

有没有办法向WinJS.Binding.converter()函数发送多个参数?考虑以下数据和输出:

        { contactName: "Tara Miller",  mainNumber: "555-405-6190", alternateNumber: "555-209-1927" },
        { contactName: "Bryan Bond",                               alternateNumber: "555-574-4270" },
        { contactName: "Jenna Siever", mainNumber: "555-843-8823", alternateNumber: "555-799-5424" },
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是HTML.该MyData.chooseBestNumber转换器的功能是用来显示无论是一个人的主要电话号码或将"无主号",如果他们没有一个主号码:

<div id="listViewTemplate" data-win-control="WinJS.Binding.Template">
    <div class="contactCard">
        <div data-win-bind="innerText: contactName"></div>
        <div data-win-bind="innerText: mainNumber MyData.chooseBestNumber"></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是定义转换器函数的JS:

WinJS.Namespace.define("MyData", {
    chooseBestNumber: WinJS.Binding.converter(function (mainNumber) {
        if (mainNumber) return mainNumber;
        else return "no main number";
    }),
});
Run Code Online (Sandbox Code Playgroud)

下面是我最终能够做到的...将多个参数传递给转换器函数,以便我可以返回主号码(如果已定义),备用号码(作为后备),或消息(如果所有其他方法都失败):

WinJS.Namespace.define("MyData", {
    chooseBestNumber: WinJS.Binding.converter(function (mainNumber, alternateNumber) {
        if (mainNumber) return mainNumber;
        else if (alternateNumber) return alternateNumber; …
Run Code Online (Sandbox Code Playgroud)

windows-8 winjs

3
推荐指数
1
解决办法
1566
查看次数

为什么navigator.js与base.js分开

PageControlNavigator该类的代码存储在navigator.js(由VS中的导航应用程序模板自动添加)中,但PageControl该类的代码存储在其中base.js.为PageControlNavigator代码提供完全独立的JS文件的原因是什么?

windows-8 winjs

1
推荐指数
1
解决办法
183
查看次数

Windows 8商店应用程序开发没有触摸屏

我已经开始为一些工作项目进行Windows 8 Store应用程序开发,但我家里没有自己的触摸屏设备.如果我写个人应用程序提交到商店,我必须使用自己的硬件,因为我不能将工作计算机用于个人项目.我担心的是进入我向商店提交应用程序的情况,然后让触摸屏用户描述我无法在非触摸屏设备上复制的问题.

在使用触摸而不是仅使用鼠标时,是否存在在Windows 8商店应用中表现不同的任何功能或功能或交互?如果我没有触摸屏,是否有任何情况我可能会遇到无法重现或解决用户问题的问题?

windows-8 windows-runtime winjs winrt-xaml windows-store-apps

1
推荐指数
1
解决办法
984
查看次数