在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中用于(顶级)函数定义的方法)?有没有一种扩展可以帮助实现这一点(也许是以一种 * 语言独立的方式 *)?
1条答案
按热度按时间4zcjmb1e1#
在这种特殊情况下,当两个光标垂直对齐时,您可以使用列/框选择(多光标编辑)。按住shift+alt拖动光标。即使它们没有垂直对齐,您也可以在任何地方创建多个光标:按住Alt键并单击要添加光标每个位置。2然后根据需要删除和添加文本。
您还可以使用查找和替换功能,您可以对每个编辑器或跨多个文件执行该功能(在搜索视图中)。VS Code的查找和替换也有一个正则表达式模式,这对于更复杂的场景很有用。您还可以选择特定的文本,您希望将查找和替换限制为仅在其中应用(请参阅“在选择中查找”图标(x1c 0d1x/
))