haskell 在VS代码中,当正确的“重命名符号”命令不起作用时,替换两个连续行上的符号的最快方法是什么?

nqwrtyyt  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(127)

在VS Code(安装了Haskell扩展和HLS)中,我有以下Haskell文件:

module Stuff where

myLen :: [a] -> Int
myLen list = case list of
  [] -> 0
  x:xs -> 1 + myLen xs

myLenx :: [a] -> Int
myLenx = foldr (\x y -> y + 1) 0

在这个文件中,我想将符号myLenx更改为myLen'。当使用“重命名符号”命令(默认键绑定F2)时,我总是得到一条错误消息,如“重命名需要显式导出”或“文件无AST:NormalizedFilePath [...]/Stuff.hs”。
原因似乎是,Haskell语言服务器(HLS)不能处理非导出符号的重命名。但我不想只为了重命名某个函数而添加导出。
那么,有没有一种方法可以快速更改连续两行中的符号(这就是我们通常在Haskell中用于(顶级)函数定义的方法)?有没有一种扩展可以帮助实现这一点(也许是以一种 * 语言独立的方式 *)?

4zcjmb1e

4zcjmb1e1#

在这种特殊情况下,当两个光标垂直对齐时,您可以使用列/框选择(多光标编辑)。按住shift+alt拖动光标。即使它们没有垂直对齐,您也可以在任何地方创建多个光标:按住Alt键并单击要添加光标每个位置。2然后根据需要删除和添加文本。
您还可以使用查找和替换功能,您可以对每个编辑器或跨多个文件执行该功能(在搜索视图中)。VS Code的查找和替换也有一个正则表达式模式,这对于更复杂的场景很有用。您还可以选择特定的文本,您希望将查找和替换限制为仅在其中应用(请参阅“在选择中查找”图标(x1c 0d1x/

))

相关问题