Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 F格式文件#_Visual Studio 2010_F#_Format - Fatal编程技术网

Visual studio 2010 F格式文件#

Visual studio 2010 F格式文件#,visual-studio-2010,f#,format,Visual Studio 2010,F#,Format,我想格式化文档:给它缩进之类的东西 Visual Studio中的Ctrl-K+Ctrl-D/F不适用于F#,有人有解决方法吗?它确实对C#有用,不过 编辑:我想做的是从外部源复制粘贴一些代码。我通常使用Ctrl K+Ctrl D对其进行格式化,它适用于C。但是,在.fs文件中,它似乎不起作用。最重要的是,缩进似乎是F#必须具备的功能。F#是缩进敏感的,因此,如果您将有效代码从一个位置复制到另一个位置,您可能需要做的唯一一件事就是确保它从左侧有正确的偏移量。例如,假设您有: let test (

我想格式化文档:给它缩进之类的东西

Visual Studio中的Ctrl-K+
Ctrl-D/F
不适用于F#,有人有解决方法吗?它确实对C#有用,不过

编辑:我想做的是从外部源复制粘贴一些代码。我通常使用
Ctrl K
+
Ctrl D
对其进行格式化,它适用于C。但是,在.fs文件中,它似乎不起作用。最重要的是,缩进似乎是F#必须具备的功能。

F#是缩进敏感的,因此,如果您将有效代码从一个位置复制到另一个位置,您可能需要做的唯一一件事就是确保它从左侧有正确的偏移量。例如,假设您有:

let test () = 
  printfn "Hello world" // (*)

let another () = 
  for i in 0 .. 10 do
    test()              // (#)
  printfn "finished"
现在,如果您想复制行
(*)
,并使用它而不是调用
test
,只需复制粘贴即可将代码转换为以下内容:

let another () = 
  for i in 0 .. 10 do
  printfn "Hello world" // (*)
  printfn "finished"
但这有不同的含义!它将两个
printfn
行重复10次。因此,您希望得到的是:

let another () = 
  for i in 0 .. 10 do
    printfn "Hello world" // (*)
  printfn "finished"
在VisualStudio中执行复制和粘贴以保持代码的相同含义的方法是,像往常一样粘贴复制的代码(Ctrl+V),然后在代码仍处于选中状态时,更正缩进。若要进一步缩进代码,请使用Tab;若要缩进较少,请使用Shift+Tab

这样,就可以对F代码使用复制和粘贴了。您不需要重新格式化整个块,因为复制到另一个位置的有效F#代码将自动格式化。你只需要修正压痕


关于注释中提到的
#light
模式,在F#的早期版本中,可以使用额外的关键字和分号,而不是缩进敏感模式。现代缩进敏感样式被称为
#light
,但它现在是默认样式,您无需担心传统样式。

似乎唯一的答案是使用以下其中一种:


#light
模式下处理空格和类似的

,F#code是,因此自动缩进(1)不太有用;(2) 易出错。自VS2010以来,不支持非灯光模式。事实上,如果小心使用,我相信Emacs可以很好地格式化F#(假设@bytebuster指出,一些基本的有意义的预格式化)。我可能错了,但值得一试。我既没有使用FSI,也没有代码中的
#light
;这难道不意味着我的代码不应该处于
#light
模式吗?这是什么光模式?(对不起,我对F#有点陌生)在VS 2010和VS 2012中,使用Shift+Tab会在第一行以开口括号开始时导致缩进错误。这种错误可以通过从不在大括号打开后立即编写代码来避免。但是,这种解决方法看起来很笨拙,并且不符合……在F#中移动代码的最佳方法是:1)使用“SHIFT+ALT+DOWNARROW”定义偏移线(在要移动的代码块左侧具有零宽度的垂直线),2)然后使用“TAB”或“SHIFT+TAB”移动偏移线(从而也移动代码)来回地这保证了,无论您使用何种编码样式,移动块内的缩进始终保持正确。那么格式化代码呢??(不仅仅是缩进,还有所有其他的事情,比如空格的数量,以及何时开始新行)