[CmdletBinding(SupportsShouldProcess)]param( [switch]$sudo, [Parameter(Position = 0, ValueFromRemainingArguments = $true)] [string[]]$Path ) $local:editor = '/bin/nvim' if( (Test-Path env:EDITOR) -and (Test-Path $env:EDITOR) ) { $editor = $env:EDITOR; } if( $editor -match 'vim?$' ) { $editor += ' -p' } if( $sudo ) { $editor = "sudo $editor" } $local:arguments = $Path -join "' '" if( $Path ) { $arguments = "'$arguments'" } if( $PSCmdlet.ShouldProcess( "Edit ($editor): $arguments" ) ) { Invoke-Expression "$editor $arguments" }