Windows Vim configuration files based on the recommendations of Ruslan Osipov, Keep Your vimrc file clean and The musings of bluz71.
:help vimrc
recommends moving vimrc and gvimrc to vimfiles to make the setup
more portable.
Several applications are assumed to be in the PATH
, install git-scm and
select User Git and optional Unix tools from the Windows Command Prompt. See
steps to add a local bin directory for the other applications referenced in the
vim configuration files.
Chocolatey and winget provide package managers.
# winget export --output=winget.json
winget import --import-file=winget.json
Manual installation steps for older versions of WSL provides the steps
automated by wsl install
.
dism.exe /online /enable-feature `
/featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# wsl --install -d Ubuntu --web-download
- github: server certificate verification failed
server certificate verification failed. CAfile: none CRLfile: none
SSL certificate problem: unable to get local issuer certificate
- How to fix ssl certificate problem unable to get local issuer certificate Git error
openssl s_client -showcerts -servername github.com -connect github.com:443 \
</dev/null 2>/dev/null |
sed -n -e '/BEGIN\ CERTIFICATE/,/END\ CERTIFICATE/ p' > github-com.pem
# On Linux
cat github-com.pem | sudo tee -a /etc/ssl/certs/ca-certificates.crt
# On windows C:\Program Files\Git\mingw64\ssl\certs\ or some variant.
cat github-com.pem | tee -a /mingw64/etc/ssl/certs/ca-bundle.crt
On Debian derivatives, like Ubuntu, the dotfiles repository provides an
installation script for a compatible version of Vim with GTK3. It also links
~/.vim/
to Windows $USERPROFILE/vimfiles/
to share configuration across
environments.
Vim-win32-installer includes python3/dyn
. Download and install or use
Chocolatey: choco install vim
.
- Download the selected zip file and adjust the paths as needed.
- Not needed for recent versions of Vim 9. If needed, update the python version
specification in environment.yml to match linked version in:
vim --version | grep python --color
$DestinationPath = Get-Item -Path "$env:LOCALAPPDATA\Programs"
$Path = Get-ChildItem -Path ~\Downloads\gvim_9.*_x64_signed.zip
Move-Item -Path "$DestinationPath\Vim\vim91" `
-Destination "$DestinationPath\Vim\vim91.old" `
-ErrorAction SilentlyContinue
Expand-Archive -Path $Path -DestinationPath $DestinationPath
# Check vim works and remove old version.
vim --version | grep python --color
Remove-Item -Path "$DestinationPath\Vim\vim91.old" -Recurse -Force
If they don't already exist, create the batch files using the installer. They are needed to activate the vim-python conda environment, prior to starting Vim.
& $(Get-Item -Path "$DestinationPath\Vim\vim91\install.exe")
To install in Windows under $env:LOCALAPPDATA\vimfiles
and symbolic link to
$HOME
.
cd $env:TMP
curl --output Install-Vimfiles.ps1 `
https://raw.githubusercontent.com/jfishe/vimfiles/master/Install-Vimfiles.ps1
# To change defaults:
Get-Help .\Install-Vimfiles.ps1 -Full
# Clone and install submodules.
.\Install-Vimfiles.ps1 -Clone
# Symlink vimfiles and dotfiles to $HOME.
.\Install-Vimfiles.ps1 -Link
# Create Start-Menu shortcuts.
.\Install-Vimfiles.ps1 -Shortcut
# Copy wsl -d Ubuntu /usr/share/dict/words to vimfiles/dictionary/words.
# Install dictionary if needed.
.\Install-Vimfiles.ps1 -Dictionary
# Download Moby Thesaurus from
# https://raw.githubusercontent.com/zeke/moby/master/words.txt
.\Install-Vimfiles.ps1 -Thesaurus
- Create/update a conda environment compatible with
python3/dyn
. - Install Miniforge if needed, and create or update conda env vim-python.
- Copy Vim batch files to
$env:LOCALAPPDATA\Microsoft\WindowsApps
:- They are needed to activate the vim-python conda environment, prior to starting Vim.
- If they don't already exist, create the batch files using the Vim
installer, usually
*\Vim\vim*\install.exe
.
- Add Windows Registry entry to run
%USERPROFILE%\.init.cmd
when startingcmd.exe
..init.cmd
activatesvim-python
environment for use by Vim.
.\Install-Vimfiles.ps1 -Conda
If you plan to share vimfiles with Windows Subsystem for Linux (WSL), ensure
git uses line feed for EOL. Install-Vimfiles.ps1
automates this by setting
the global .gitconfig to override the system defaults.
When creating a new diary (Journal) file, VimwikiTitleJournal
creates the
title heading and copies the previous diary entry from Todo
second-level
heading through the end of file.
VimwikiLinkHandler
opens local:
and file:
URLs with wslview
or, on
Windows, with start!
.
-
Assume registered wikis,
g:vimwiki_list
are in the Windows Documents folder or user home directory. You may need to link%USERPROFILE%\Documents
to the actual location, e.g., OneDrive.If the
%USERPROFILE%\Documents
does not exit, either create it, or create a link to the Windows Documents folder.-
To locate the Windows Documents folder in
cmd.exe
:set REG_PATH=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ set REG_PATH=%REG_PATH%User Shell Folders reg query "%REG_PATH%" /v Personal
-
If you have administrator rights or PowerShell 7, create a symbolic link:
$Parameters = @{ Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\" + "User Shell Folders" Name = "Personal" } $Target = Get-ItemPropertyValue @Parameters New-Item -ItemType SymbolicLink -Path "$env:USERPROFILE\Documents" ` -Target "$Target"
-
Otherwise create a Directory Junction by replacing
<Target>
with the path reported byreg query
above:cmd /c "mklink /J %USERPROFILE%\Documents <Target>"
-
Kaa Mi. Posted on 2024-06-19. Using Miniforge with Conda-Forge to Avoid Anaconda Licensing Issues. The conda-forge community maintains Miniforge that comes configured for use with the conda-forge channel.
-
Download and Install Miniforge.
-
Initialize Conda with
conda init
. -
Add Conda-Forge as the Default Channel.
# Install with Winget. winget install CondaForge.Miniforge3 --exact # Download from Github releases. $Uri = 'https://github.com/conda-forge/miniforge/releases/latest/download' $Exe = 'Miniforge3-Windows-x86_64.exe' Invoke-WebRequest -Uri "$Uri/$Exe" -OutFile "~\Downloads\$Exe" # Default configuration for Miniforge. conda config --remove channels defaults conda config --add channels conda-forge conda config --set channel_priority strict
-
Create a New Environment. environment.yml lists the conda and pip packages needed for the Vim configuration.
conda env create -f environment.yml conda activate vim-python conda config --show channels
-
Periodically update the base and vim-python environments.
conda update -n base conda conda update -n vim-python --all
Setup instructions are included in vimrc to install the Moby Thesaurus List by Grady Ward from Project Gutenberg. Use a browser; the site blocks scripted download.
Moby-thesaurus.org/ maintains words.txt.
Refer to :help dictionary
and download or symlink dictionary/words. See
below for symlink instructions.
Install-Vimfiles.ps1 -Dictionary
assumes Ubuntu is the default and copies the
dictionary since symlinks into WSL fail when the distro isn't started.
ripgrep should be installed with Chocolatey, conda
or
uv tool install ripgrep
.
Conquer of Completion does not depend on the python compiled with Vim. It
supports node.js
modules that perform the linting functions of ALE.
The script after/plugin/coc.vim
installs extensions using
g:coc_global_extensions
. Install CoC under opt
instead of start
to allow
disabling when node.js
is unavailable.
The Asynchronous Lint Engine supports various linting (ALELint) and
formatting (ALEFix) tools. Many of these are node.js
packages. See
jfishe/ALE_Nodejs for a list and installation instructions. Others can be
installed by conda
or uv pip
. See environment.yml for a list.
nbdime is configured by:
pip install nbdime
nbdime config-git --enable --global
ColorTool schemes may be tested and exported to iTerm2
format with
terminal.sexy.
cookiecutter cookiecutter-pypackage
Change to the pypackage directory you created and make initial commit to source control.
git init
git add .
git commit -m "Initial project scaffold"
git status
virtualenv env
# Use env/bin/activate on Linux
env\Scripts\activate
pip install -e .
ElateralLtd git commit template provides a template and installation script for standard git commit messages.
The Vim that ships with Git-bash can use the same profile as Gvim. Using WSL
bash is the easiest method to create soft-links. Git-bash won't and recommends
using mklink, but mklink usually has complex ACL issues, especially in
a corporate environment. PowerShell and CMD do not recognize soft-linked
directories so use mklink /J LINK TARGET
.
The following assumes that git-bash has been configured to use %USERPROFILE%
as home, which may be different than the default %HOMEDRIVE%%HOMEPATH%
. Also,
Documents could be My Documents. Adjust the path for actual location of
vimfiles
and vimwiki
. The vim startup script assumes that for anything,
except Windows cmd.exe
, that these files are located in $HOME
. Soft-links
allow pointing to the actual location.
The Case for Pull Rebase recommends avoiding merge commits, except when they're useful, such as for Pull Request merges.
git pull --rebase # Normal to avoid merge commits.
# if you're on Git 2.18 or later
git pull --rebase=merges
git config --global pull.rebase merges
Xltrail suggested 3 steps to make Spreadsheet Compare work with git diff. The
proposed DOS batch script does not work with Microsoft Office 2016 because
spreadsheetcompare
is not an installed application. Install a modified
version, which uses AppVLP.exe
, as follows:
cmd /c "mklink $env:USERPROFILE\bin\xldiff.bat $env:LOCALAPPDATA\vimfiles\xldiff.bat"
.gitconfig
defines [diff "excel"]
and .gitattributes_global
sets
diff=excel
for all Excel file extensions. The batch script pauses git so that
it does not delete any temporary files it creates. Press <Enter>
in the shell
after exiting spreadsheetcompare
.
KeeAgent (for KeePass) on Bash on Windows / WSL provides a howto. Git-bash
only requires export SSH_AUTH_SOCK=~/keeagent_msys.socket
in .bash_profile,
depending on the KeeAgent settings in KeePass2.
On Windows install PowerToys or Uncap.
- Install with Chocolatey or winget.
- Open PowerToys Settings application.
- In Keyboard Manager, map
Caps Lock
toEsc
.
Install the plugins in the Git repository.
git pull
git submodule update --init --recursive
vim -c 'packloadall | helptags ALL | qa'
Update to the latest versions and commit the changes, if any.
git submodule update --init --recursive --remote
vim -c 'packloadall | helptags ALL | qa'
git commit -am "chore: update submodules"
git push