> For the complete documentation index, see [llms.txt](https://docs.poshtools.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.poshtools.com/open-source-tools/visual-studio-code/refactoring.md).

# Refactoring

## About

Refactorings allow you to change or generate code based on the code you have. You will find a list of refactors below. You can invoke a refactor by invoke the Refactor command or by pressing the key binding `Ctrl+Alt+R` .

Only valid refactors will be returned in the drop down menu.

## Convert to $\_

This refactoring converts a `$PSItem` variable to the `$_` variable.

![Convert to $\_](/files/-MPXO04v5yHzXhiR1aTm)

## Convert to $PSItem

Converts a reference to the `$_` variable to `$PSItem`.

![Convert to $PSItem](/files/-MPXOJpL1Oup_fK-FvSh)

## Convert to Multiline Command

Converts a command invocation into a multi-line command. Each parameter and argument is broken up with backticks.

![](/files/-MOZS9SXQsx48tayR16e)

## Convert to Splat

Converts a command invocation into a splatting expression and creates a hashtable named `$Parameters` and then passes that hashtable as a splatting expression to the command. Positional arguments are not added to the hashtable.

![Convert to Splat](/files/-MOUGowA5Q-fn30u2UTF)

## Export Module Member

Exports the selected variable or function from a module using `Export-ModuleMember`.

![Export Module Member](/files/-MOU6cJ8KcTt9uMTBq7s)

## Extract Function

You can use the Extract Function refactor to convert a section of code into a function. It will analyze the selected block and determine if there are variables that should be added as parameters. These variables will be added to the `param` block.

![Extract Function](/files/-MOUgHXdNw7fZnFH_Z1v)

## Extract Selection to File

You can use the Extract Selection to File refactor to create a new file based on the selection in the current active editor.

![Extract Selection to File](/files/-MOTrwRfBGcOtWZdOcM_)

## Generate Function from Usage

You can generate a function based on a command example. This refactoring will analyze the parameters, arguments and whether the command is used in a pipeline. If used in a pipeline, this refactoring will generate an advanced function.

![Generate Function from Usage](/files/-MOnjGH6ICKfhLoAMKdW)

## Generate Proxy Function

Proxy functions allow you to extend existing functions with new parameters and functionality. You can select a command that you use within your script and select the Generate Proxy Function refactoring to have it generate the proxy function code for you.

![Generate Proxy Function](/files/-MPsICFqK3dXdKAczbda)

## Introduce Using Namespace

The introduce using namespace refactoring adds a `using namespace` statement to the top of a script and replaces the selected type expression with the namespace removed.

![Introduce Using Namespace](/files/-MPSCRt_mo2RtJDZ8U63)

## Reorder Parameters

You can reorder parameters by using the `Ctrl+PageUp` and `Ctrl+PageDown` key bindings. Ensure that your cursor is on top of a parameter for a command. Press one of the key bindings. To move a parameter to the right, use Page Up. To move a parameter to the left, use Page Down.

![Reorder Parameters](/files/-MOsRAZOJjGKyJVvLHSZ)

## Split Pipeline

The split pipe refactoring will split a pipe into multiple lines. Each element in the pipe is stored in a variable and passed to the next item in the pipe. This can be useful for debugging long or complex pipeline operations.

![Split pipeline](/files/-MPRuUr-DpGW2sRPuBs1)
