diff runtime/doc/os_dos.txt @ 25084:beff72446e2e v8.2.3079

patch 8.2.3079: Powershell core not supported by default Commit: https://github.com/vim/vim/commit/a3d1b29bd36487167c98b3cefa30f06c529e412d Author: Mike Williams <mikew@globalgraphics.com> Date: Wed Jun 30 20:56:00 2021 +0200 patch 8.2.3079: Powershell core not supported by default Problem: Powershell core not supported by default. Solution: Set option defaults for "pwsh". (Mike Williams, closes https://github.com/vim/vim/issues/8481)
author Bram Moolenaar <Bram@vim.org>
date Wed, 30 Jun 2021 21:00:05 +0200
parents 0ce24f734615
children 3e661b0cf500
line wrap: on
line diff
--- a/runtime/doc/os_dos.txt
+++ b/runtime/doc/os_dos.txt
@@ -304,40 +304,80 @@ Vim sets the 'shellcmdflag' and 'shellqu
 set as described above.
 
 ==============================================================================
-10. PowerShell						*dos-powershell*
+10. PowerShell					*dos-powershell* *dos-pwsh*
 
-Vim also supports Windows PowerShell.  If 'shell' has been set to
-"powershell.exe" at startup then VIM sets 'shellcmdflag', 'shellxquote',
-'shellpipe', and 'shellredir' options to the following values:
+Vim supports PowerShell Desktop and PowerShell Core.  PowerShell Desktop is
+the version of PowerShell that is installed with Windows, while PowerShell
+Core is a separate downloadable version that works cross-platform.  To see
+which version you are using then enter the following in a PowerShell prompt -
+$PSVersionTable.PSEdition
+
+If 'shell' includes "powershell" in the filename at startup then VIM sets
+'shellcmdflag', 'shellxquote', 'shellpipe', and 'shellredir' options to the
+following values:
 
 'shellcmdflag'	-Command
 'shellxquote'	"
 'shellpipe'	2>&1 | Out-File -Encoding default
 'shellredir'	2>&1 | Out-File -Encoding default
 
+If 'shell' includes "pwsh" in the filename at startup then VIM sets
+'shellcmdflag', 'shellxquote', 'shellpipe', and 'shellredir' options to the
+following values:
+
+'shellcmdflag'	-c
+'shellxquote'	"
+'shellpipe'	>%s 2>&1
+'shellredir'	>%s 2>&1
+
 If you find that PowerShell commands are taking a long time to run then try
-setting 'shellcmdflag' to "-NoProfile -Command".  Note this will prevent any
-PowerShell environment setup by the profile from taking place.
+with "-NoProfile" at the beginning of the 'shellcmdflag'.  Note this will
+prevent any PowerShell environment setup by the profile from taking place.
 
 If you have problems running PowerShell scripts through the 'shell' then try
-setting 'shellcmdflag' to "-ExecutionPolicy RemoteSigned -Command".  See
-online Windows documentation for more information on PowerShell Execution
-Policy settings.
+with "-ExecutionPolicy RemoteSigned -Command" at the beginning of
+'shellcmdflag'.  See online Windows documentation for more information on
+PowerShell Execution Policy settings.
+
+See |option-backslash| about including spaces in 'shellcmdflag' when using
+multiple flags.
 
 The 'shellpipe' and 'shellredir' option values re-encode the UTF-16le output
-from Windows PowerShell to your currently configured console codepage.  The
+from PowerShell Desktop to your currently configured console codepage.  The
 output can be forced into a different encoding by changing "default" to one of
 the following:
 
 	unicode		 - UTF-16le (default output from PowerShell 5.1)
 	bigendianunicode - UTF-16
 	utf8		 - UTF-8
-	utf7		 - UTF-7 (no-BOM)
+	utf7		 - UTF-7 (no BOM)
 	utf32		 - UTF-32
 	ascii		 - 7-bit ASCII character set
 	default		 - System's active code page (typically ANSI)
 	oem		 - System's current OEM code page
 
-Note Multi-byte Unicode encodings include a leading BOM.
+Note The abovce multi-byte Unicode encodings include a leading BOM unless
+otherwise indicated.
+
+By default PowerShell Core's output is UTF-8 encoded without a BOM.  If you
+want to force the output of PowerShell Core into a different encoding then set
+'shellredir' and 'shellpipe' to "2>&1 | Out-File -Encoding encoding" where
+encoding is one of the following:
+
+	ascii		 - 7-bit ASCII character set
+	bigendianunicode - UTF-16be
+	bigendianutf32	 - UTF-32be
+	oem		 - System's current OEM code page
+	unicode		 - UTF-16le
+	utf7		 - UTF-7
+	utf8		 - UTF-8
+	utf8BOM		 - UTF-8, with BOM
+	utf8NoBOM	 - UTF-8, no BOM (default output from PowerShell Core)
+	utf32		 - UTF-32
+
+Since PowerShell Core 6.2, the Encoding parameter also supports specifying a
+numeric ID of a registered code page (-Encoding 1251) or string names of
+registered code pages (-Encoding "windows-1251").  The .NET documentation for
+Encoding.CodePage has more information
 
  vim:tw=78:ts=8:noet:ft=help:norl: