mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-05-28 00:21:57 +02:00
Compare commits
326 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 38ed567cd5 | |||
| 75297a22fb | |||
| 8a3ac0add8 | |||
| 3266c85a44 | |||
| 715d285d79 | |||
| 868cfc19bb | |||
| 8a24b794b8 | |||
| d75263c020 | |||
| 8e3d1b6326 | |||
| 0648142700 | |||
| 4cc39a527f | |||
| b20545f2a7 | |||
| 0b6cf69c03 | |||
| 6be8c8e165 | |||
| 113ce08456 | |||
| 631225627d | |||
| 61be73bb0f | |||
| bb82762907 | |||
| 355cfeba77 | |||
| 5f91455a3c | |||
| 1cf41e6aee | |||
| c61348e83f | |||
| f99471219e | |||
| 283ee8b3a0 | |||
| 0afe480389 | |||
| 5487544fa5 | |||
| c285fe7c3f | |||
| e8aee7dcf9 | |||
| ab3022196e | |||
| 674127e180 | |||
| 6231cb8b5b | |||
| 437905c25d | |||
| c7baa43fdb | |||
| b2658a1ab0 | |||
| 53793980d4 | |||
| d10abe5201 | |||
| 490465bda6 | |||
| 8e9eb3a6a1 | |||
| af98a49dd0 | |||
| f8dd3ebb7c | |||
| fca6600305 | |||
| da5b3dcf06 | |||
| dc633cf827 | |||
| 73dfe917ba | |||
| 84ffb58d89 | |||
| 07b340efea | |||
| b2fa54a840 | |||
| 3849992b16 | |||
| a1c487eef7 | |||
| 763b684373 | |||
| 902647d2df | |||
| 380130f1e1 | |||
| 54a38415ca | |||
| 21decdd3e6 | |||
| f6c6992098 | |||
| 8a633e3427 | |||
| 6d4431e7b6 | |||
| d106e5ba7f | |||
| 4adfaabfe7 | |||
| 0c1ff16b54 | |||
| 02cfac85b4 | |||
| 4694a17d1e | |||
| ba53435144 | |||
| 268a06ce90 | |||
| 8ed43916db | |||
| aa3b15dbeb | |||
| 4d505ad0fc | |||
| 0fffd1cda6 | |||
| 130eee0a2a | |||
| 4445f7ee70 | |||
| 40b1b5443c | |||
| 245c41070c | |||
| 8e42ae5069 | |||
| a6e4250142 | |||
| 517ffbee0d | |||
| c3691332f7 | |||
| c020042083 | |||
| fa9dd06ea8 | |||
| f62065e786 | |||
| 8d8aa0a367 | |||
| c1808d5822 | |||
| def5abe0a2 | |||
| 7f7c3325d3 | |||
| 75baa49a7a | |||
| 30e12d259e | |||
| 44f028eb93 | |||
| f9660b59b2 | |||
| 1538fc34fa | |||
| 60009f28dd | |||
| fe4b186406 | |||
| 95509e18f8 | |||
| 5d98c9d932 | |||
| 6621004289 | |||
| a5660a2ebe | |||
| 75be2339d8 | |||
| 5d18e0eca5 | |||
| b22bd46b96 | |||
| 4d58502202 | |||
| bea1ede1c5 | |||
| 5d91646599 | |||
| 52196b2dbe | |||
| baa9fcaf40 | |||
| 451f849fd6 | |||
| 0f518a8f4d | |||
| 839e954aaa | |||
| 429fcfbf9a | |||
| 8110a091bc | |||
| 58de0e2dcc | |||
| 6244a0fc29 | |||
| 81edd171a9 | |||
| ebf7dfa6f1 | |||
| b3d9e6e9bf | |||
| 700eefe5a4 | |||
| 1e7a5a0a4b | |||
| 3780bb923a | |||
| 03413f4416 | |||
| afe0027db1 | |||
| 73cd8fb3e8 | |||
| f73d3bc253 | |||
| 0239acb11f | |||
| d9b7066919 | |||
| 939a1abe93 | |||
| 9f4f1ebd63 | |||
| a4d13de836 | |||
| 9e4043757c | |||
| 107e1eef1d | |||
| fa37206276 | |||
| d56374e25d | |||
| 0e4c1de556 | |||
| 3ef3a60656 | |||
| baec5c1768 | |||
| ddecc25947 | |||
| a6e4822186 | |||
| 54f1b7abf8 | |||
| f80663f17b | |||
| 49b2732644 | |||
| a742e084b6 | |||
| a18a828b26 | |||
| 17fe5e1aec | |||
| 4c9ce053d9 | |||
| 2a6fa564a3 | |||
| 79f8f407af | |||
| 04a4b41111 | |||
| 0921ecff1c | |||
| e185c1efba | |||
| 7c1c6dbb68 | |||
| 3dda7db4e1 | |||
| b50e5f5686 | |||
| 4afc7c5d4a | |||
| f9f22dbe4f | |||
| 22e421549d | |||
| 0e954ac375 | |||
| 71fb0c146b | |||
| 298c65971e | |||
| cb0700844c | |||
| fd773e9e88 | |||
| 8bc189e81a | |||
| f28d871465 | |||
| 8e77bad3c1 | |||
| 864733ad92 | |||
| 9bd547aca4 | |||
| cef9e23dd7 | |||
| b681be175b | |||
| 42356150ba | |||
| 4005cc7a59 | |||
| 758535a1df | |||
| 67c2c058ea | |||
| bdf0bda968 | |||
| e9c0727003 | |||
| 4d59b3cc54 | |||
| 7db8f6f4f8 | |||
| 7fed5c18f8 | |||
| d18cfb7dbf | |||
| e6f9c446ac | |||
| e609ad557c | |||
| 72188e9aae | |||
| ef9d9b94a8 | |||
| 925ccfde79 | |||
| 7d2a5796d3 | |||
| 8b29aba019 | |||
| 0b9e4d1224 | |||
| fead3ac9a3 | |||
| e101204906 | |||
| cf2d8dee51 | |||
| 2946d0236d | |||
| e934e8f5c1 | |||
| 61264d9969 | |||
| a32095fc8f | |||
| 8b877ac38e | |||
| ee1f7b3cb7 | |||
| 84e1d2b21a | |||
| 46c00a6565 | |||
| 1e35e3ee83 | |||
| 8038568722 | |||
| 89c64d557d | |||
| ea6553bec3 | |||
| 312c0326e5 | |||
| 4f3f668c84 | |||
| c4dcd60c76 | |||
| fa8b2e173d | |||
| 819821c5a9 | |||
| e1581307d2 | |||
| 1473551a44 | |||
| 8fdd721047 | |||
| 92e35efaf6 | |||
| 4f87e76866 | |||
| 17d68e17b6 | |||
| 7826fd71e1 | |||
| 1e7885abe8 | |||
| 52c6eaffd4 | |||
| da64ab322a | |||
| 610cc1b9b3 | |||
| 780d4c3fff | |||
| f68f1d7079 | |||
| aedfcbe1e6 | |||
| bee6c0cf86 | |||
| 8b20179c65 | |||
| c561f1d1bc | |||
| 4c90861e9f | |||
| c5fbe8af4c | |||
| 24c77a1e3a | |||
| d4caf5c16a | |||
| 6a08454b93 | |||
| 8cd088eb67 | |||
| 5ca84ce4aa | |||
| ffec3c5349 | |||
| e20c94642a | |||
| 5f436fcf99 | |||
| e4eb6ff089 | |||
| 6c0e984f26 | |||
| 6135d0d803 | |||
| 79bbe33a79 | |||
| 6a06363861 | |||
| 8e08125d3a | |||
| b763eba7ae | |||
| 6098957458 | |||
| 573e445664 | |||
| d63aff0a65 | |||
| b86f10ee10 | |||
| 3f3fbd3fdb | |||
| c90e801a05 | |||
| 75f7265dd4 | |||
| 580984e026 | |||
| e18c0b3981 | |||
| be6aa46c4d | |||
| 03602ec28e | |||
| e9d6a298df | |||
| 17b56c9f83 | |||
| a63cdb5ed6 | |||
| 4077b33a83 | |||
| 364fa5c7ec | |||
| a4f6ca717b | |||
| 2215429b26 | |||
| ba61ac0d61 | |||
| ac74d5e86c | |||
| 58c7dadefc | |||
| aabd6e5d74 | |||
| 829c8e3696 | |||
| 7eba3d2cbf | |||
| 064154c3fe | |||
| d293b2b9d4 | |||
| 44a2f923c0 | |||
| cc6cf9b9f9 | |||
| 4d581a826c | |||
| 5c29154b52 | |||
| f0e86a0dbd | |||
| 953cc7fb13 | |||
| 3905e291fe | |||
| 3848e00e01 | |||
| bfb96c047b | |||
| cff572abb9 | |||
| 818c9e7edf | |||
| 062cc1857d | |||
| 8a82c7fa5e | |||
| 6d8d849f5a | |||
| 9f6154f26e | |||
| ba8cd122ef | |||
| c0a1d7f3ad | |||
| 943bb2b8eb | |||
| a889cf4642 | |||
| 0899d69803 | |||
| 71b048830a | |||
| 5584df65a0 | |||
| 3f242a844e | |||
| 755e60ad59 | |||
| 9e63f61cb0 | |||
| 1ff2b64b11 | |||
| 1c8b4edb9b | |||
| 8a1bb04637 | |||
| d22a18928e | |||
| 0e0b3dd335 | |||
| 132af44e19 | |||
| 597385ab43 | |||
| 6f2e4b36c9 | |||
| 65639032bb | |||
| 7a5c46a9df | |||
| bdc8cf330a | |||
| a3dc5e92dc | |||
| 975b5271ee | |||
| ab1fa3955f | |||
| 927030af23 | |||
| 89e375a88f | |||
| 8067a64852 | |||
| d22e9465f6 | |||
| ce2ec0a82a | |||
| 85a7cb4dcf | |||
| 8e15ffcde7 | |||
| 426dd02195 | |||
| e27dba499a | |||
| 00f9e0dbbd | |||
| 1abb502635 | |||
| 4f118be2bb | |||
| f155196444 | |||
| 346418c624 | |||
| 790500a8e6 | |||
| bd8b60d261 | |||
| 9eb3bb2930 | |||
| 39afdea203 | |||
| d6c2f05260 | |||
| 1735bc988c | |||
| b6f08f7872 | |||
| 9cdf86b86f | |||
| 86edef664e | |||
| a3442cb505 | |||
| fff341eb59 | |||
| 52f9c19015 |
@@ -78,6 +78,7 @@ src/testdir/dostmp/*
|
||||
src/testdir/messages
|
||||
src/testdir/viminfo
|
||||
src/memfile_test
|
||||
src/json_test
|
||||
|
||||
# From MacVim
|
||||
.*.swp
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ language: c
|
||||
os:
|
||||
- osx
|
||||
|
||||
osx_image: xcode7.2
|
||||
osx_image: xcode7.3
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
@@ -18,7 +18,7 @@ env:
|
||||
vi_cv_dll_name_python=/System/Library/Frameworks/Python.framework/Versions/2.7/Python
|
||||
vi_cv_dll_name_python3=/usr/local/Frameworks/Python.framework/Versions/3.5/Python
|
||||
VIMCMD=src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
|
||||
"CONFOPT='--with-features=huge --enable-multibyte --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
|
||||
"CONFOPT='--with-features=huge --enable-multibyte --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-termtruecolor --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
|
||||
|
||||
sudo: false
|
||||
|
||||
|
||||
@@ -337,7 +337,6 @@ SRC_DOS = \
|
||||
src/vimio.h \
|
||||
src/gvim.exe.mnf \
|
||||
src/vimrun.c \
|
||||
src/vimtbar.h \
|
||||
src/xpm_w32.c \
|
||||
src/xpm_w32.h \
|
||||
src/xxd/Make_bc5.mak \
|
||||
@@ -375,7 +374,6 @@ SRC_DOS_BIN = \
|
||||
src/tools.bmp \
|
||||
src/vim*.ico \
|
||||
src/vim.tlb \
|
||||
src/vimtbar.lib \
|
||||
src/xpm/COPYRIGHT \
|
||||
src/xpm/README.txt \
|
||||
src/xpm/include/*.h \
|
||||
@@ -383,7 +381,6 @@ SRC_DOS_BIN = \
|
||||
src/xpm/x64/lib/libXpm.lib \
|
||||
src/xpm/x86/lib/libXpm.a \
|
||||
src/xpm/x86/lib/libXpm.lib \
|
||||
src/vimtbar.dll \
|
||||
nsis/icons/*.bmp \
|
||||
nsis/icons/*.ico \
|
||||
|
||||
@@ -483,7 +480,6 @@ RT_ALL = \
|
||||
runtime/ftoff.vim \
|
||||
runtime/gvimrc_example.vim \
|
||||
runtime/macros/README.txt \
|
||||
runtime/macros/dvorak \
|
||||
runtime/macros/editexisting.vim \
|
||||
runtime/macros/hanoi/click.me \
|
||||
runtime/macros/hanoi/hanoi.vim \
|
||||
@@ -495,7 +491,6 @@ RT_ALL = \
|
||||
runtime/macros/life/click.me \
|
||||
runtime/macros/life/life.vim \
|
||||
runtime/macros/matchit.vim \
|
||||
runtime/macros/matchit.txt \
|
||||
runtime/macros/maze/README.txt \
|
||||
runtime/macros/maze/[mM]akefile \
|
||||
runtime/macros/maze/main.aap \
|
||||
@@ -525,6 +520,16 @@ RT_ALL = \
|
||||
runtime/tutor/tutor \
|
||||
runtime/tutor/tutor.vim \
|
||||
runtime/vimrc_example.vim \
|
||||
runtime/pack/dist/opt/dvorak/plugin/dvorak.vim \
|
||||
runtime/pack/dist/opt/dvorak/dvorak/enable.vim \
|
||||
runtime/pack/dist/opt/dvorak/dvorak/disable.vim \
|
||||
runtime/pack/dist/opt/editexisting/plugin/editexisting.vim \
|
||||
runtime/pack/dist/opt/justify/plugin/justify.vim \
|
||||
runtime/pack/dist/opt/matchit/plugin/matchit.vim \
|
||||
runtime/pack/dist/opt/matchit/doc/matchit.txt \
|
||||
runtime/pack/dist/opt/matchit/doc/tags \
|
||||
runtime/pack/dist/opt/shellmenu/plugin/shellmenu.vim \
|
||||
runtime/pack/dist/opt/swapmouse/plugin/swapmouse.vim \
|
||||
|
||||
# runtime files for all distributions without CR-NL translation
|
||||
RT_ALL_BIN = \
|
||||
@@ -605,7 +610,6 @@ RT_AMI = \
|
||||
README.txt.info \
|
||||
README_ami.txt \
|
||||
README_ami.txt.info \
|
||||
libs/arp.library \
|
||||
runtime/doc.info \
|
||||
runtime/doc/*.info \
|
||||
runtime/icons/README.txt \
|
||||
@@ -693,6 +697,35 @@ EXTRA = \
|
||||
src/tee/Make_mvc.mak \
|
||||
src/tee/tee.c \
|
||||
|
||||
# files in READMEdir that are included from the top dir
|
||||
IN_README_DIR = \
|
||||
README.txt.info \
|
||||
README_ami.txt \
|
||||
README_ami.txt.info \
|
||||
README_amibin.txt \
|
||||
README_amibin.txt.info \
|
||||
README_amisrc.txt \
|
||||
README_amisrc.txt.info \
|
||||
README_bindos.txt \
|
||||
README_dos.txt \
|
||||
README_extra.txt \
|
||||
README_mac.txt \
|
||||
README_ole.txt \
|
||||
README_os2.txt \
|
||||
README_os390.txt \
|
||||
README_src.txt \
|
||||
README_srcdos.txt \
|
||||
README_unix.txt \
|
||||
README_vms.txt \
|
||||
README_w32s.txt \
|
||||
Contents \
|
||||
Contents.info \
|
||||
Vim.info \
|
||||
Xxd.info \
|
||||
runtime.info \
|
||||
src.info \
|
||||
vimdir.info \
|
||||
|
||||
# generic language files
|
||||
LANG_GEN = \
|
||||
runtime/doc/*-de.1 \
|
||||
|
||||
@@ -213,24 +213,13 @@ MINOR = 4
|
||||
# > bigvim64.bat
|
||||
#
|
||||
#
|
||||
# OBSOLETE systems: You can build this if you have an appropriate system.
|
||||
# OBSOLETE systems: You can build these if you have an appropriate system.
|
||||
#
|
||||
# 16 bit DOS version: (doesn't build anywhere)
|
||||
# - Set environment for compiling with Borland C++ 3.1.
|
||||
# - "bmake -f Make_bc3.mak BOR=E:\borlandc" (compiling xxd might fail, in that
|
||||
# case set environment for compiling with Borland C++ 4.0 and do
|
||||
# "make -f make_bc3.mak BOR=E:\BC4 xxd/xxd.exe").
|
||||
# NOTE: this currently fails because Vim is too big.
|
||||
# - "make test" and check the output.
|
||||
# - Rename the executables to "vimd16.exe", "xxdd16.exe", "installd16.exe" and
|
||||
# "uninstald16.exe".
|
||||
# 16 bit DOS version: You need to get a very old version of Vim, for several
|
||||
# years even the tiny build is too big to fit in DOS memory.
|
||||
#
|
||||
# 32 bit DOS version: (requires Windows XP or earlier)
|
||||
# - Set environment for compiling with DJGPP; "gmake -f Make_djg.mak".
|
||||
# - "rm testdir/*.out", "gmake -f Make_djg.mak test" and check the output for
|
||||
# "ALL DONE".
|
||||
# - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
|
||||
# "uninstald32.exe".
|
||||
# 32 bit DOS version: Support was removed in 7.4.1399. When syncing to before
|
||||
# that it probably won't build.
|
||||
#
|
||||
# Win32s GUI version: (requires a very old compiler)
|
||||
# - Set environment for Visual C++ 4.1 (requires a new console window):
|
||||
@@ -242,12 +231,9 @@ MINOR = 4
|
||||
# - Rename "uninstal.exe" to "uninstalw32.exe"
|
||||
# - The produced uninstalw32.exe and vimrun.exe are used.
|
||||
#
|
||||
# OS/2: (requires an OS/2 system)
|
||||
# - Unpack the Unix archive.
|
||||
# - "make -f Make_os2.mak".
|
||||
# - Rename the executables to vimos2.exe, xxdos2.exe and teeos2.exe and copy
|
||||
# them to here.
|
||||
# - "make os2bin".
|
||||
# OS/2 support was removed in patch 7.4.1008. If you want to give it a try
|
||||
# sync to before that and check the old version of this Makefile for
|
||||
# instructions.
|
||||
|
||||
VIMVER = vim-$(MAJOR).$(MINOR)
|
||||
VERSION = $(MAJOR)$(MINOR)
|
||||
@@ -269,9 +255,13 @@ dist:
|
||||
mkdir dist
|
||||
|
||||
# Clean up some files to avoid they are included.
|
||||
# Copy README files to the top directory.
|
||||
prepare:
|
||||
if test -f runtime/doc/uganda.nsis.txt; then \
|
||||
rm runtime/doc/uganda.nsis.txt; fi
|
||||
for name in $(IN_README_DIR); do \
|
||||
cp READMEdir/"$$name" .; \
|
||||
done
|
||||
|
||||
# For the zip files we need to create a file with the comment line
|
||||
dist/comment:
|
||||
@@ -336,6 +326,7 @@ unixall: dist prepare
|
||||
$(EXTRA) \
|
||||
$(LANG_SRC) \
|
||||
| (cd dist/$(VIMRTDIR); tar xf -)
|
||||
-rm $(IN_README_DIR)
|
||||
# Need to use a "distclean" config.mk file
|
||||
# Note: this file is not included in the repository to avoid problems, but it's
|
||||
# OK to put it in the archive.
|
||||
@@ -372,6 +363,7 @@ amirt: dist prepare
|
||||
$(RT_NO_UNIX) \
|
||||
$(RT_AMI_DOS) \
|
||||
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
|
||||
-rm $(IN_README_DIR)
|
||||
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
|
||||
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
|
||||
mv dist/Vim/$(VIMRTDIR)/runtime/* dist/Vim/$(VIMRTDIR)
|
||||
@@ -392,6 +384,7 @@ amibin: dist prepare
|
||||
Vim \
|
||||
Xxd \
|
||||
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
|
||||
-rm $(IN_README_DIR)
|
||||
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
|
||||
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
|
||||
cd dist && tar cf vim$(VERSION)bin.tar Vim Vim.info
|
||||
@@ -410,6 +403,7 @@ amisrc: dist prepare
|
||||
$(SRC_AMI) \
|
||||
$(SRC_AMI_DOS) \
|
||||
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
|
||||
-rm $(IN_README_DIR)
|
||||
mv dist/Vim/$(VIMRTDIR)/vimdir.info dist/Vim.info
|
||||
mv dist/Vim/$(VIMRTDIR)/runtime.info dist/Vim/$(VIMRTDIR).info
|
||||
cd dist && tar cf vim$(VERSION)src.tar Vim Vim.info
|
||||
@@ -483,6 +477,7 @@ dosrt_files: dist prepare no_title.vim
|
||||
$(RT_DOS_BIN) \
|
||||
$(LANG_GEN_BIN) \
|
||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
||||
-rm $(IN_README_DIR)
|
||||
mv dist/vim/$(VIMRTDIR)/runtime/* dist/vim/$(VIMRTDIR)
|
||||
rmdir dist/vim/$(VIMRTDIR)/runtime
|
||||
# Add the message translations. Trick: skip ja.mo and use ja.sjis.mo instead.
|
||||
@@ -517,6 +512,7 @@ dosbin_gvim: dist no_title.vim dist/$(COMMENT_GVIM)
|
||||
tar cf - \
|
||||
$(BIN_DOS) \
|
||||
| (cd dist/vim/$(VIMRTDIR); tar xf -)
|
||||
-rm $(IN_README_DIR)
|
||||
cp gvim.exe dist/vim/$(VIMRTDIR)/gvim.exe
|
||||
cp xxdw32.exe dist/vim/$(VIMRTDIR)/xxd.exe
|
||||
cp vimrun.exe dist/vim/$(VIMRTDIR)/vimrun.exe
|
||||
|
||||
@@ -1,124 +1,6 @@
|
||||
`README.md` for version 7.4 of Vim: Vi IMproved.
|
||||
[](https://travis-ci.org/vim/vim)
|
||||
[](https://coveralls.io/github/vim/vim?branch=master)
|
||||
[](https://ci.appveyor.com/project/chrisbra/vim)
|
||||
Vim - the text editor - for Mac OS X
|
||||
|
||||
- MacVim homepage http://macvim-dev.github.io/macvim
|
||||
|
||||
## What is Vim? ##
|
||||
- Vim README https://github.com/macvim-dev/macvim/blob/master/README_vim.md
|
||||
|
||||
Vim is an almost compatible version of the UNIX editor Vi. Many new features
|
||||
have been added: multi-level undo, syntax highlighting, command line history,
|
||||
on-line help, spell checking, filename completion, block operations, etc.
|
||||
There is also a Graphical User Interface (GUI) available. See
|
||||
`runtime/doc/vi_diff.txt` for differences with Vi.
|
||||
|
||||
This editor is very useful for editing programs and other plain text files.
|
||||
All commands are given with normal keyboard characters, so those who can type
|
||||
with ten fingers can work very fast. Additionally, function keys can be
|
||||
defined by the user, and the mouse can be used.
|
||||
|
||||
Vim runs under MS-DOS, MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh,
|
||||
VMS and almost all flavours of UNIX. Porting to other systems should not be
|
||||
very difficult. Older versions of Vim run on MS-Windows 95/98/Me, Amiga DOS,
|
||||
Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
||||
|
||||
|
||||
## Distribution ##
|
||||
|
||||
You can often use your favorite package manager to install Vim. On Mac and
|
||||
Linux a small version of Vim is pre-installed, you still need to install Vim
|
||||
if you want more features.
|
||||
|
||||
There are separate distributions for Unix, PC, Amiga and some other systems.
|
||||
This `README.md` file comes with the runtime archive. It includes the
|
||||
documentation, syntax files and other files that are used at runtime. To run
|
||||
Vim you must get either one of the binary archives or a source archive.
|
||||
Which one you need depends on the system you want to run it on and whether you
|
||||
want or must compile it yourself. Check http://www.vim.org/download.php for
|
||||
an overview of currently available distributions.
|
||||
|
||||
|
||||
## Documentation ##
|
||||
|
||||
The vim tutor is a one hour training course for beginners. Mostly it can be
|
||||
started as `vimtutor`. See `:help tutor` for more information.
|
||||
|
||||
The best is to use `:help` in Vim. If you don't have an executable yet, read
|
||||
`runtime/doc/help.txt`. It contains pointers to the other documentation
|
||||
files. The User Manual reads like a book and is recommended to learn to use
|
||||
Vim. See `:help user-manual`.
|
||||
|
||||
|
||||
## Copying ##
|
||||
|
||||
Vim is Charityware. You can use and copy it as much as you like, but you are
|
||||
encouraged to make a donation to help orphans in Uganda. Please read the file
|
||||
`runtime/doc/uganda.txt` for details (do `:help uganda` inside Vim).
|
||||
|
||||
Summary of the license: There are no restrictions on using or distributing an
|
||||
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
|
||||
text must always be included. For modified versions a few restrictions apply.
|
||||
The license is GPL compatible, you may compile Vim with GPL libraries and
|
||||
distribute it.
|
||||
|
||||
|
||||
## Sponsoring ##
|
||||
|
||||
Fixing bugs and adding new features takes a lot of time and effort. To show
|
||||
your appreciation for the work and motivate Bram and others to continue
|
||||
working on Vim please send a donation.
|
||||
|
||||
Since Bram is back to a paid job the money will now be used to help children
|
||||
in Uganda. See `runtime/doc/uganda.txt`. But at the same time donations
|
||||
increase Bram's motivation to keep working on Vim!
|
||||
|
||||
For the most recent information about sponsoring look on the Vim web site:
|
||||
http://www.vim.org/sponsor/
|
||||
|
||||
|
||||
## Compiling ##
|
||||
|
||||
If you obtained a binary distribution you don't need to compile Vim. If you
|
||||
obtained a source distribution, all the stuff for compiling Vim is in the
|
||||
`src` directory. See `src/INSTALL` for instructions.
|
||||
|
||||
|
||||
## Installation ##
|
||||
|
||||
See one of these files for system-specific instructions:
|
||||
|
||||
README_ami.txt Amiga
|
||||
README_unix.txt Unix
|
||||
README_dos.txt MS-DOS and MS-Windows
|
||||
README_mac.txt Macintosh
|
||||
README_vms.txt VMS
|
||||
|
||||
There are more `README_*.txt` files, depending on the distribution you used.
|
||||
|
||||
|
||||
## Contributing ##
|
||||
|
||||
If you would like to help making Vim better, see the [CONTRIBUTING.md](https://github.com/vim/vim/blob/master/CONTRIBUTING.md) file.
|
||||
|
||||
|
||||
## Information ##
|
||||
|
||||
The latest news about Vim can be found on the Vim home page:
|
||||
http://www.vim.org/
|
||||
|
||||
If you have problems, have a look at the Vim documentation or tips:
|
||||
http://www.vim.org/docs.php
|
||||
http://vim.wikia.com/wiki/Vim_Tips_Wiki
|
||||
|
||||
If you still have problems or any other questions, use one of the mailing
|
||||
lists to discuss them with Vim users and developers:
|
||||
http://www.vim.org/maillist.php
|
||||
|
||||
If nothing else works, report bugs directly:
|
||||
Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
|
||||
## Main author ##
|
||||
|
||||
Send any other comments, patches, flowers and suggestions to:
|
||||
Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
+43
-27
@@ -3,21 +3,23 @@ README.txt for version 7.4 of Vim: Vi IMproved.
|
||||
|
||||
WHAT IS VIM?
|
||||
|
||||
Vim is an almost compatible version of the UNIX editor Vi. Many new features
|
||||
have been added: multi-level undo, syntax highlighting, command line history,
|
||||
on-line help, spell checking, filename completion, block operations, etc.
|
||||
There is also a Graphical User Interface (GUI) available. See
|
||||
"runtime/doc/vi_diff.txt" for differences with Vi.
|
||||
Vim is a greatly improved version of the good old UNIX editor Vi. Many new
|
||||
features have been added: multi-level undo, syntax highlighting, command line
|
||||
history, on-line help, spell checking, filename completion, block operations,
|
||||
script language, etc. There is also a Graphical User Interface (GUI)
|
||||
available. Still, Vi compatibility is maintained, those who have Vi "in the
|
||||
fingers" will feel at home. See "runtime/doc/vi_diff.txt" for differences with
|
||||
Vi.
|
||||
|
||||
This editor is very useful for editing programs and other plain text files.
|
||||
All commands are given with normal keyboard characters, so those who can type
|
||||
with ten fingers can work very fast. Additionally, function keys can be
|
||||
defined by the user, and the mouse can be used.
|
||||
mapped to commands by the user, and the mouse can be used.
|
||||
|
||||
Vim runs under MS-DOS, MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh,
|
||||
VMS and almost all flavours of UNIX. Porting to other systems should not be
|
||||
very difficult. Older versions of Vim run on MS-Windows 95/98/Me, Amiga DOS,
|
||||
Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
||||
Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and
|
||||
almost all flavours of UNIX. Porting to other systems should not be very
|
||||
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga
|
||||
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
||||
|
||||
|
||||
DISTRIBUTION
|
||||
@@ -34,10 +36,38 @@ Which one you need depends on the system you want to run it on and whether you
|
||||
want or must compile it yourself. Check "http://www.vim.org/download.php" for
|
||||
an overview of currently available distributions.
|
||||
|
||||
Some popular places to get the latest Vim:
|
||||
* Check out the git repository from github: https://github.com/vim/vim.
|
||||
* Get the source code as an archive: https://github.com/vim/vim/releases.
|
||||
* Get a Windows executable from the vim-win32-installer repository:
|
||||
https://github.com/vim/vim-win32-installer/releases.
|
||||
|
||||
|
||||
COMPILING
|
||||
|
||||
If you obtained a binary distribution you don't need to compile Vim. If you
|
||||
obtained a source distribution, all the stuff for compiling Vim is in the
|
||||
"src" directory. See src/INSTALL for instructions.
|
||||
|
||||
|
||||
INSTALLATION
|
||||
|
||||
See one of these files for system-specific instructions. Either in the
|
||||
READMEdir directory (in the repository) or the top directory (if you unpack an
|
||||
archive):
|
||||
|
||||
README_ami.txt Amiga
|
||||
README_unix.txt Unix
|
||||
README_dos.txt MS-DOS and MS-Windows
|
||||
README_mac.txt Macintosh
|
||||
README_vms.txt VMS
|
||||
|
||||
There are more README_*.txt files, depending on the distribution you used.
|
||||
|
||||
|
||||
DOCUMENTATION
|
||||
|
||||
The vim tutor is a one hour training course for beginners. Mostly it can be
|
||||
The Vim tutor is a one hour training course for beginners. Often it can be
|
||||
started as "vimtutor". See ":help tutor" for more information.
|
||||
|
||||
The best is to use ":help" in Vim. If you don't have an executable yet, read
|
||||
@@ -74,23 +104,9 @@ For the most recent information about sponsoring look on the Vim web site:
|
||||
http://www.vim.org/sponsor/
|
||||
|
||||
|
||||
COMPILING
|
||||
CONTRIBUTING
|
||||
|
||||
If you obtained a binary distribution you don't need to compile Vim. If you
|
||||
obtained a source distribution, all the stuff for compiling Vim is in the
|
||||
"src" directory. See src/INSTALL for instructions.
|
||||
|
||||
|
||||
INSTALLATION
|
||||
|
||||
See one of these files for system-specific instructions:
|
||||
README_ami.txt Amiga
|
||||
README_unix.txt Unix
|
||||
README_dos.txt MS-DOS and MS-Windows
|
||||
README_mac.txt Macintosh
|
||||
README_vms.txt VMS
|
||||
|
||||
There are more README_*.txt files, depending on the distribution you used.
|
||||
If you would like to help making Vim better, see the CONTRIBUTING.md file.
|
||||
|
||||
|
||||
INFORMATION
|
||||
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
`README.md` for version 7.4 of Vim: Vi IMproved.
|
||||
[](https://travis-ci.org/vim/vim)
|
||||
[](https://coveralls.io/github/vim/vim?branch=master)
|
||||
[](https://ci.appveyor.com/project/chrisbra/vim)
|
||||
[](https://scan.coverity.com/projects/vim)
|
||||
|
||||
|
||||
## What is Vim? ##
|
||||
|
||||
Vim is a greatly improved version of the good old UNIX editor Vi. Many new
|
||||
features have been added: multi-level undo, syntax highlighting, command line
|
||||
history, on-line help, spell checking, filename completion, block operations,
|
||||
script language, etc. There is also a Graphical User Interface (GUI)
|
||||
available. Still, Vi compatibility is maintained, those who have Vi "in the
|
||||
fingers" will feel at home. See `runtime/doc/vi_diff.txt` for differences with
|
||||
Vi.
|
||||
|
||||
This editor is very useful for editing programs and other plain text files.
|
||||
All commands are given with normal keyboard characters, so those who can type
|
||||
with ten fingers can work very fast. Additionally, function keys can be
|
||||
mapped to commands by the user, and the mouse can be used.
|
||||
|
||||
Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and
|
||||
almost all flavours of UNIX. Porting to other systems should not be very
|
||||
difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga
|
||||
DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.
|
||||
|
||||
|
||||
## Distribution ##
|
||||
|
||||
You can often use your favorite package manager to install Vim. On Mac and
|
||||
Linux a small version of Vim is pre-installed, you still need to install Vim
|
||||
if you want more features.
|
||||
|
||||
There are separate distributions for Unix, PC, Amiga and some other systems.
|
||||
This `README.md` file comes with the runtime archive. It includes the
|
||||
documentation, syntax files and other files that are used at runtime. To run
|
||||
Vim you must get either one of the binary archives or a source archive.
|
||||
Which one you need depends on the system you want to run it on and whether you
|
||||
want or must compile it yourself. Check http://www.vim.org/download.php for
|
||||
an overview of currently available distributions.
|
||||
|
||||
Some popular places to get the latest Vim:
|
||||
* Check out the git repository from [github](https://github.com/vim/vim).
|
||||
* Get the source code as an [archive](https://github.com/vim/vim/releases).
|
||||
* Get a Windows executable from the
|
||||
[vim-win32-installer](https://github.com/vim/vim-win32-installer/releases) repository.
|
||||
|
||||
|
||||
|
||||
## Compiling ##
|
||||
|
||||
If you obtained a binary distribution you don't need to compile Vim. If you
|
||||
obtained a source distribution, all the stuff for compiling Vim is in the
|
||||
`src` directory. See `src/INSTALL` for instructions.
|
||||
|
||||
|
||||
## Installation ##
|
||||
|
||||
See one of these files for system-specific instructions. Either in the
|
||||
READMEdir directory (in the repository) or the top directory (if you unpack an
|
||||
archive):
|
||||
|
||||
README_ami.txt Amiga
|
||||
README_unix.txt Unix
|
||||
README_dos.txt MS-DOS and MS-Windows
|
||||
README_mac.txt Macintosh
|
||||
README_vms.txt VMS
|
||||
|
||||
There are other `README_*.txt` files, depending on the distribution you used.
|
||||
|
||||
|
||||
## Documentation ##
|
||||
|
||||
The Vim tutor is a one hour training course for beginners. Often it can be
|
||||
started as `vimtutor`. See `:help tutor` for more information.
|
||||
|
||||
The best is to use `:help` in Vim. If you don't have an executable yet, read
|
||||
`runtime/doc/help.txt`. It contains pointers to the other documentation
|
||||
files. The User Manual reads like a book and is recommended to learn to use
|
||||
Vim. See `:help user-manual`.
|
||||
|
||||
|
||||
## Copying ##
|
||||
|
||||
Vim is Charityware. You can use and copy it as much as you like, but you are
|
||||
encouraged to make a donation to help orphans in Uganda. Please read the file
|
||||
`runtime/doc/uganda.txt` for details (do `:help uganda` inside Vim).
|
||||
|
||||
Summary of the license: There are no restrictions on using or distributing an
|
||||
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
|
||||
text must always be included. For modified versions a few restrictions apply.
|
||||
The license is GPL compatible, you may compile Vim with GPL libraries and
|
||||
distribute it.
|
||||
|
||||
|
||||
## Sponsoring ##
|
||||
|
||||
Fixing bugs and adding new features takes a lot of time and effort. To show
|
||||
your appreciation for the work and motivate Bram and others to continue
|
||||
working on Vim please send a donation.
|
||||
|
||||
Since Bram is back to a paid job the money will now be used to help children
|
||||
in Uganda. See `runtime/doc/uganda.txt`. But at the same time donations
|
||||
increase Bram's motivation to keep working on Vim!
|
||||
|
||||
For the most recent information about sponsoring look on the Vim web site:
|
||||
http://www.vim.org/sponsor/
|
||||
|
||||
|
||||
## Contributing ##
|
||||
|
||||
If you would like to help making Vim better, see the [CONTRIBUTING.md](https://github.com/vim/vim/blob/master/CONTRIBUTING.md) file.
|
||||
|
||||
|
||||
## Information ##
|
||||
|
||||
The latest news about Vim can be found on the Vim home page:
|
||||
http://www.vim.org/
|
||||
|
||||
If you have problems, have a look at the Vim documentation or tips:
|
||||
http://www.vim.org/docs.php
|
||||
http://vim.wikia.com/wiki/Vim_Tips_Wiki
|
||||
|
||||
If you still have problems or any other questions, use one of the mailing
|
||||
lists to discuss them with Vim users and developers:
|
||||
http://www.vim.org/maillist.php
|
||||
|
||||
If nothing else works, report bugs directly:
|
||||
Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
|
||||
## Main author ##
|
||||
|
||||
Send any other comments, patches, flowers and suggestions to:
|
||||
Bram Moolenaar <Bram@vim.org>
|
||||
@@ -9,7 +9,7 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
|
||||
messages, shows current file name in window title, on-line
|
||||
help, rectangular cut/paste, etc., etc., etc...
|
||||
|
||||
Version 7.4. Also runs under UNIX, MSDOS and other systems.
|
||||
Version 7.4. Also runs under UNIX, MS-Windows, Mac, etc.
|
||||
vim74rt.tgz contains the documentation and syntax files.
|
||||
vim74bin.tgz contains the binaries.
|
||||
vim74src.tgz contains the sources.
|
||||
@@ -19,5 +19,5 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
|
||||
Xxd Hex dumper and reader. Can be used to view files as hex, edit
|
||||
them and write them back. Can also be used to patch files.
|
||||
|
||||
Version 1.8 (1997 May 22)
|
||||
Version 1.10 (1997 May 22)
|
||||
Author: Juergen Weigert
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Binary file not shown.
@@ -215,6 +215,28 @@ Section "Vim executables and runtime files"
|
||||
SetOutPath $0\macros
|
||||
File ${VIMRT}\macros\*.*
|
||||
|
||||
SetOutPath $0\pack\dist\opt\dvorak\dvorak
|
||||
File ${VIMRT}\pack\dist\opt\dvorak\dvorak\*.*
|
||||
SetOutPath $0\pack\dist\opt\dvorak\plugin
|
||||
File ${VIMRT}\pack\dist\opt\dvorak\plugin\*.*
|
||||
|
||||
SetOutPath $0\pack\dist\opt\editexisting\plugin
|
||||
File ${VIMRT}\pack\dist\opt\editexisting\plugin\*.*
|
||||
|
||||
SetOutPath $0\pack\dist\opt\justify\plugin
|
||||
File ${VIMRT}\pack\dist\opt\justify\plugin\*.*
|
||||
|
||||
SetOutPath $0\pack\dist\opt\matchit\doc
|
||||
File ${VIMRT}\pack\dist\opt\matchit\doc\*.*
|
||||
SetOutPath $0\pack\dist\opt\matchit\plugin
|
||||
File ${VIMRT}\pack\dist\opt\matchit\plugin\*.*
|
||||
|
||||
SetOutPath $0\pack\dist\opt\shellmenu\plugin
|
||||
File ${VIMRT}\pack\dist\opt\shellmenu\plugin\*.*
|
||||
|
||||
SetOutPath $0\pack\dist\opt\swapmouse\plugin
|
||||
File ${VIMRT}\pack\dist\opt\swapmouse\plugin\*.*
|
||||
|
||||
SetOutPath $0\plugin
|
||||
File ${VIMRT}\plugin\*.*
|
||||
|
||||
|
||||
+243
-259
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,9 @@
|
||||
" vimball.vim : construct a file containing both paths and files
|
||||
" Author: Charles E. Campbell, Jr.
|
||||
" Date: Jan 17, 2012
|
||||
" Version: 35
|
||||
" Author: Charles E. Campbell
|
||||
" Date: Apr 11, 2016
|
||||
" Version: 37
|
||||
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
|
||||
" Copyright: (c) 2004-2011 by Charles E. Campbell, Jr.
|
||||
" Copyright: (c) 2004-2011 by Charles E. Campbell
|
||||
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
|
||||
" (see |copyright|) except use "Vimball" instead of "Vim".
|
||||
" No warranty, express or implied.
|
||||
@@ -14,7 +14,7 @@
|
||||
if &cp || exists("g:loaded_vimball")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vimball = "v35"
|
||||
let g:loaded_vimball = "v37"
|
||||
if v:version < 702
|
||||
echohl WarningMsg
|
||||
echo "***warning*** this version of vimball needs vim 7.2"
|
||||
@@ -142,7 +142,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
|
||||
let lastline= line("$") + 1
|
||||
if lastline == 2 && getline("$") == ""
|
||||
call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.')
|
||||
call setline(1,'" Vimball Archiver by Charles E. Campbell')
|
||||
call setline(2,'UseVimball')
|
||||
call setline(3,'finish')
|
||||
let lastline= line("$") + 1
|
||||
@@ -179,7 +179,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
" remove the evidence
|
||||
setlocal nomod bh=wipe
|
||||
exe "tabn ".curtabnr
|
||||
exe "tabc ".vbtabnr
|
||||
exe "tabc! ".vbtabnr
|
||||
|
||||
" restore options
|
||||
call vimball#RestoreSettings()
|
||||
@@ -280,7 +280,7 @@ fun! vimball#Vimball(really,...)
|
||||
" when AsNeeded/filename is filereadable or was present in VimballRecord
|
||||
if fname =~ '\<plugin/'
|
||||
let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
|
||||
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~ anfname)
|
||||
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~# anfname)
|
||||
" call Decho("using anfname<".anfname."> instead of <".fname.">")
|
||||
let fname= anfname
|
||||
endif
|
||||
@@ -379,10 +379,10 @@ fun! vimball#Vimball(really,...)
|
||||
call s:RecordInFile(home)
|
||||
|
||||
" restore events, delete tab and buffer
|
||||
exe "tabn ".vbtabnr
|
||||
exe "sil! tabn ".vbtabnr
|
||||
setlocal nomod bh=wipe
|
||||
exe "tabn ".curtabnr
|
||||
exe "tabc ".vbtabnr
|
||||
exe "sil! tabn ".curtabnr
|
||||
exe "sil! tabc! ".vbtabnr
|
||||
call vimball#RestoreSettings()
|
||||
call s:ChgDir(curdir)
|
||||
|
||||
@@ -555,7 +555,7 @@ fun! vimball#ShowMesg(level,msg)
|
||||
set noruler noshowcmd
|
||||
redraw!
|
||||
|
||||
if &fo =~ '[ta]'
|
||||
if &fo =~# '[ta]'
|
||||
echomsg "***vimball*** ".a:msg
|
||||
else
|
||||
if a:level == s:WARNING || a:level == s:USAGE
|
||||
@@ -715,7 +715,7 @@ fun! vimball#SaveSettings()
|
||||
" call Dfunc("SaveSettings()")
|
||||
let s:makeep = getpos("'a")
|
||||
let s:regakeep= @a
|
||||
if exists("&acd")
|
||||
if exists("+acd")
|
||||
let s:acdkeep = &acd
|
||||
endif
|
||||
let s:eikeep = &ei
|
||||
@@ -728,7 +728,7 @@ fun! vimball#SaveSettings()
|
||||
let s:vekeep = &ve
|
||||
let s:ffkeep = &l:ff
|
||||
let s:swfkeep = &l:swf
|
||||
if exists("&acd")
|
||||
if exists("+acd")
|
||||
setlocal ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= ff=unix noswf
|
||||
else
|
||||
setlocal ei=all ve=all nofen noic report=999 nohid bt= ma lz pm= ff=unix noswf
|
||||
@@ -743,7 +743,7 @@ endfun
|
||||
fun! vimball#RestoreSettings()
|
||||
" call Dfunc("RestoreSettings()")
|
||||
let @a = s:regakeep
|
||||
if exists("&acd")
|
||||
if exists("+acd")
|
||||
let &acd = s:acdkeep
|
||||
endif
|
||||
let &l:fen = s:fenkeep
|
||||
@@ -760,7 +760,7 @@ fun! vimball#RestoreSettings()
|
||||
" call Decho("restore mark-a: makeep=".string(makeep))
|
||||
call setpos("'a",s:makeep)
|
||||
endif
|
||||
if exists("&acd")
|
||||
if exists("+acd")
|
||||
unlet s:acdkeep
|
||||
endif
|
||||
unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep s:ffkeep
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
" Compiler: GNU C Compiler
|
||||
" Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2010-10-14
|
||||
" added line suggested by Anton Lindqvist 2016 Mar 31
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -24,6 +25,7 @@ CompilerSet errorformat=
|
||||
\%f:%l:\ %trror:\ %m,
|
||||
\%f:%l:\ %tarning:\ %m,
|
||||
\%f:%l:\ %m,
|
||||
\%f:\\(%*[^\\)]\\):\ %m,
|
||||
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
|
||||
\%D%*\\a[%*\\d]:\ Entering\ directory\ [`']%f',
|
||||
\%X%*\\a[%*\\d]:\ Leaving\ directory\ [`']%f',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim compiler file
|
||||
" Compiler: HTML Tidy
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2013 Jul 7
|
||||
" Last Change: 2016 Apr 21
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -12,8 +12,8 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||
command -nargs=* CompilerSet setlocal <args>
|
||||
endif
|
||||
|
||||
CompilerSet makeprg=tidy\ -quiet\ -errors\ --gnu-emacs\ yes\ %
|
||||
CompilerSet makeprg=tidy\ -quiet\ -errors\ --gnu-emacs\ yes\ %:S
|
||||
|
||||
" sample warning: foo.html:8:1: Warning: inserting missing 'foobar' element
|
||||
" sample error: foo.html:9:2: Error: <foobar> is not recognized!
|
||||
CompilerSet errorformat=%f:%l:%c:\ Error:%m,%f:%l:%c:\ Warning:%m,%-G%.%#
|
||||
" foo.html:8:1: Warning: inserting missing 'foobar' element
|
||||
" foo.html:9:2: Error: <foobar> is not recognized!
|
||||
CompilerSet errorformat=%f:%l:%c:\ %trror:%m,%f:%l:%c:\ %tarning:%m,%-G%.%#
|
||||
|
||||
@@ -142,6 +142,7 @@ DOCS = \
|
||||
version5.txt \
|
||||
version6.txt \
|
||||
version7.txt \
|
||||
version8.txt \
|
||||
vi_diff.txt \
|
||||
visual.txt \
|
||||
windows.txt \
|
||||
@@ -275,6 +276,7 @@ HTMLS = \
|
||||
version5.html \
|
||||
version6.html \
|
||||
version7.html \
|
||||
version8.html \
|
||||
vi_diff.html \
|
||||
vimindex.html \
|
||||
visual.html \
|
||||
|
||||
+13
-2
@@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 7.4. Last change: 2015 Dec 05
|
||||
*autocmd.txt* For Vim version 7.4. Last change: 2016 Apr 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -539,6 +539,9 @@ CursorHold When the user doesn't press a key for the time
|
||||
versions}
|
||||
*CursorHoldI*
|
||||
CursorHoldI Just like CursorHold, but in Insert mode.
|
||||
Not triggered when waiting for another key,
|
||||
e.g. after CTRL-V, and not when in CTRL-X mode
|
||||
|insert_expand|.
|
||||
|
||||
*CursorMoved*
|
||||
CursorMoved After the cursor was moved in Normal or Visual
|
||||
@@ -918,7 +921,15 @@ VimEnter After doing all the startup stuff, including
|
||||
loading .vimrc files, executing the "-c cmd"
|
||||
arguments, creating all windows and loading
|
||||
the buffers in them.
|
||||
*VimLeave*
|
||||
Just before this event is triggered the
|
||||
|v:vim_did_enter| variable is set, so that you
|
||||
can do: >
|
||||
if v:vim_did_enter
|
||||
call s:init()
|
||||
else
|
||||
au VimEnter * call s:init()
|
||||
endif
|
||||
< *VimLeave*
|
||||
VimLeave Before exiting Vim, just after writing the
|
||||
.viminfo file. Executed only once, like
|
||||
VimLeavePre.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 7.4. Last change: 2016 Mar 08
|
||||
*change.txt* For Vim version 7.4. Last change: 2016 Apr 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -852,7 +852,7 @@ Examples: >
|
||||
:s/abcde/abc^Mde/ modifies "abcde" to "abc", "de" (two lines)
|
||||
:s/$/\^M/ modifies "abcde" to "abcde^M"
|
||||
:s/\w\+/\u\0/g modifies "bla bla" to "Bla Bla"
|
||||
:s/\w\+/\L\u/g modifies "BLA bla" to "Bla Bla"
|
||||
:s/\w\+/\L\u\0/g modifies "BLA bla" to "Bla Bla"
|
||||
|
||||
Note: "\L\u" can be used to capitalize the first letter of a word. This is
|
||||
not compatible with Vi and older versions of Vim, where the "\u" would cancel
|
||||
@@ -1205,7 +1205,7 @@ name '"'. This means you have to type two double quotes. Writing to the ""
|
||||
register writes to register "0.
|
||||
{Vi: register contents are lost when changing files, no '"'}
|
||||
|
||||
2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1*
|
||||
2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1*
|
||||
*quote2* *quote3* *quote4* *quote9*
|
||||
Vim fills these registers with text from yank and delete commands.
|
||||
Numbered register 0 contains the text from the most recent yank command,
|
||||
|
||||
+133
-82
@@ -1,4 +1,4 @@
|
||||
*channel.txt* For Vim version 7.4. Last change: 2016 Mar 12
|
||||
*channel.txt* For Vim version 7.4. Last change: 2016 Apr 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -120,25 +120,14 @@ Use |ch_status()| to see if the channel could be opened.
|
||||
|
||||
{address} has the form "hostname:port". E.g., "localhost:8765".
|
||||
|
||||
{options} is a dictionary with optional entries:
|
||||
{options} is a dictionary with optional entries: *channel-open-options*
|
||||
|
||||
"mode" can be: *channel-mode*
|
||||
"json" - Use JSON, see below; most convenient way. Default.
|
||||
"js" - Use JS (JavaScript) encoding, more efficient than JSON.
|
||||
"nl" - Use messages that end in a NL character
|
||||
"raw" - Use raw messages
|
||||
|
||||
"in-mode" mode specifically for stdin, only when using pipes
|
||||
"out-mode" mode specifically for stdout, only when using pipes
|
||||
"err-mode" mode specifically for stderr, only when using pipes
|
||||
Note: when setting "mode" the part specific mode is
|
||||
overwritten. Therefore set "mode" first and the part specific
|
||||
mode later.
|
||||
|
||||
Note: when writing to a file or buffer and when reading from a
|
||||
buffer NL mode is used by default.
|
||||
|
||||
*channel-callback*
|
||||
*channel-callback* *E921*
|
||||
"callback" A function that is called when a message is received that is
|
||||
not handled otherwise. It gets two arguments: the channel
|
||||
and the received message. Example: >
|
||||
@@ -153,17 +142,12 @@ Use |ch_status()| to see if the channel could be opened.
|
||||
excluding the NL.
|
||||
When "mode" is "raw" the "msg" argument is the whole message
|
||||
as a string.
|
||||
*out-cb*
|
||||
"out-cb" A function like "callback" but used for stdout. Only for when
|
||||
the channel uses pipes. When "out-cb" wasn't set the channel
|
||||
callback is used.
|
||||
*err-cb*
|
||||
"err-cb" A function like "callback" but used for stderr. Only for when
|
||||
the channel uses pipes. When "err-cb" wasn't set the channel
|
||||
callback is used.
|
||||
|
||||
*close-cb*
|
||||
"close-cb" A function that is called when the channel gets closed, other
|
||||
For all callbacks: Use |function()| to bind it to arguments
|
||||
and/or a Dictionary. Or use the form "dict.function" to bind
|
||||
the Dictionary.
|
||||
*close_cb*
|
||||
"close_cb" A function that is called when the channel gets closed, other
|
||||
than by calling ch_close(). It should be defined like this: >
|
||||
func MyCloseHandler(channel)
|
||||
< *waittime*
|
||||
@@ -175,16 +159,10 @@ Use |ch_status()| to see if the channel could be opened.
|
||||
actually uses a 1 msec timeout, that is required on many
|
||||
systems. Use a larger value for a remote server, e.g. 10
|
||||
msec at least.
|
||||
|
||||
*channel-timeout*
|
||||
"timeout" The time to wait for a request when blocking, E.g. when using
|
||||
ch_evalexpr(). In milliseconds. The default is 2000 (2
|
||||
seconds).
|
||||
*out-timeout* *err-timeout*
|
||||
"out-timeout" Timeout for stdout. Only when using pipes.
|
||||
"err-timeout" Timeout for stderr. Only when using pipes.
|
||||
Note: when setting "timeout" the part specific mode is
|
||||
overwritten. Therefore set "timeout" first and the part
|
||||
specific mode later.
|
||||
|
||||
When "mode" is "json" or "js" the "callback" is optional. When omitted it is
|
||||
only possible to receive a message after sending one.
|
||||
@@ -212,13 +190,20 @@ pipes are used (stdin/stdout/stderr) they are all closed. This might not be
|
||||
what you want! Stopping the job with job_stop() might be better.
|
||||
All readahead is discarded, callbacks will no longer be invoked.
|
||||
|
||||
Note that a channel is closed in three stages:
|
||||
- The I/O ends, log message: "Closing channel". There can still be queued
|
||||
messages to read or callbacks to invoke.
|
||||
- The readahead is cleared, log message: "Clearing channel". Some variables
|
||||
may still reference the channel.
|
||||
- The channel is freed, log message: "Freeing channel".
|
||||
|
||||
When the channel can't be opened you will get an error message. There is a
|
||||
difference between MS-Windows and Unix: On Unix when the port doesn't exist
|
||||
ch_open() fails quickly. On MS-Windows "waittime" applies.
|
||||
*E898* *E899* *E900* *E901* *E902*
|
||||
*E898* *E901* *E902*
|
||||
|
||||
If there is an error reading or writing a channel it will be closed.
|
||||
*E896* *E630* *E631*
|
||||
*E630* *E631*
|
||||
|
||||
==============================================================================
|
||||
4. Using a JSON or JS channel *channel-use*
|
||||
@@ -323,6 +308,9 @@ completion or error. You could use functions in an |autoload| script:
|
||||
|
||||
You can also use "call |feedkeys()|" to insert any key sequence.
|
||||
|
||||
When there is an error a message is written to the channel log, if it exists,
|
||||
and v:errmsg is set to the error.
|
||||
|
||||
|
||||
Command "normal" ~
|
||||
|
||||
@@ -408,6 +396,7 @@ To obtain the status of a channel: ch_status(channel). The possible results
|
||||
are:
|
||||
"fail" Failed to open the channel.
|
||||
"open" The channel can be used.
|
||||
"buffered" The channel was closed but there is data to read.
|
||||
"closed" The channel was closed.
|
||||
|
||||
To obtain the job associated with a channel: ch_getjob(channel)
|
||||
@@ -425,6 +414,23 @@ To read all output from a RAW channel that is available: >
|
||||
To read the error output: >
|
||||
let output = ch_readraw(channel, {"part": "err"})
|
||||
|
||||
ch_read() and ch_readraw() use the channel timeout. When there is nothing to
|
||||
read within that time an empty string is returned. To specify a different
|
||||
timeout in msec use the "timeout" option:
|
||||
{"timeout": 123} ~
|
||||
To read from the error output use the "part" option:
|
||||
{"part": "err"} ~
|
||||
To read a message with a specific ID, on a JS or JSON channel:
|
||||
{"id": 99} ~
|
||||
When no ID is specified or the ID is -1, the first message is returned. This
|
||||
overrules any callback waiting for this message.
|
||||
|
||||
For a RAW channel this returns whatever is available, since Vim does not know
|
||||
where a message ends.
|
||||
For a NL channel this returns one message.
|
||||
For a JS or JSON channel this returns one decoded message.
|
||||
This includes any sequence number.
|
||||
|
||||
==============================================================================
|
||||
8. Starting a job with a channel *job-start* *job*
|
||||
|
||||
@@ -440,18 +446,18 @@ been received and not parsed correctly.
|
||||
|
||||
If the command produces a line of output that you want to deal with, specify
|
||||
a handler for stdout: >
|
||||
let job = job_start(command, {"out-cb": "MyHandler"})
|
||||
let job = job_start(command, {"out_cb": "MyHandler"})
|
||||
The function will be called with the channel and a message. You would define
|
||||
it like this: >
|
||||
func MyHandler(channel, msg)
|
||||
|
||||
Without the handler you need to read the output with |ch_read()| or
|
||||
|ch_readraw()|.
|
||||
|ch_readraw()|. You can do this in the close callback, see |read-in-close-cb|.
|
||||
|
||||
The handler defined for "out-cb" will not receive stderr. If you want to
|
||||
handle that separately, add an "err-cb" handler: >
|
||||
let job = job_start(command, {"out-cb": "MyHandler",
|
||||
\ "err-cb": "ErrHandler"})
|
||||
The handler defined for "out_cb" will not receive stderr. If you want to
|
||||
handle that separately, add an "err_cb" handler: >
|
||||
let job = job_start(command, {"out_cb": "MyHandler",
|
||||
\ "err_cb": "ErrHandler"})
|
||||
|
||||
If you want to handle both stderr and stdout with one handler use the
|
||||
"callback" option: >
|
||||
@@ -463,7 +469,7 @@ JSON or JS mode you can use ch_evalexpr().
|
||||
There are several options you can use, see |job-options|.
|
||||
For example, to start a job and write its output in buffer "dummy": >
|
||||
let logjob = job_start("tail -f /tmp/log",
|
||||
\ {'out-io': 'buffer', 'out-name': 'dummy'})
|
||||
\ {'out_io': 'buffer', 'out_name': 'dummy'})
|
||||
sbuf dummy
|
||||
|
||||
|
||||
@@ -471,26 +477,41 @@ Job input from a buffer ~
|
||||
|
||||
To run a job that reads from a buffer: >
|
||||
let job = job_start({command},
|
||||
\ {'in-io': 'buffer', 'in-name': 'mybuffer'})
|
||||
\ {'in_io': 'buffer', 'in_name': 'mybuffer'})
|
||||
<
|
||||
*E915* *E918*
|
||||
The buffer is found by name, similar to |bufnr()|. The buffer must exist and
|
||||
be loaded when job_start() is called.
|
||||
|
||||
By default this reads the whole buffer. This can be changed with the "in-top"
|
||||
and "in-bot" options.
|
||||
By default this reads the whole buffer. This can be changed with the "in_top"
|
||||
and "in_bot" options.
|
||||
|
||||
A special mode is when "in-top" is set to zero and "in-bot" is not set: Every
|
||||
A special mode is when "in_top" is set to zero and "in_bot" is not set: Every
|
||||
time a line is added to the buffer, the last-but-one line will be send to the
|
||||
job stdin. This allows for editing the last line and sending it when pressing
|
||||
Enter.
|
||||
|
||||
|
||||
Reading job output in the close callback ~
|
||||
*read-in-close-cb*
|
||||
If the job can take some time and you don't need intermediate results, you can
|
||||
add a close callback and read the output there: >
|
||||
|
||||
func! CloseHandler(channel)
|
||||
while ch_status(a:channel) == 'buffered'
|
||||
echomsg ch_read(a:channel)
|
||||
endwhile
|
||||
endfunc
|
||||
let job = job_start(command, {'close_cb': 'CloseHandler'})
|
||||
|
||||
You will want to do something more useful than "echomsg".
|
||||
|
||||
==============================================================================
|
||||
9. Starting a job without a channel *job-start-nochannel*
|
||||
|
||||
To start another process without creating a channel: >
|
||||
let job = job_start(command,
|
||||
\ {"in-io": "null", "out-io": "null", "err-io": "null"})
|
||||
\ {"in_io": "null", "out_io": "null", "err_io": "null"})
|
||||
|
||||
This starts {command} in the background, Vim does not wait for it to finish.
|
||||
|
||||
@@ -521,24 +542,51 @@ job_setoptions(job, {options}). Many options can be used with the channel
|
||||
related to the job, using ch_setoptions(channel, {options}).
|
||||
See |job_setoptions()| and |ch_setoptions()|.
|
||||
|
||||
*in_mode* *out_mode* *err_mode*
|
||||
"in_mode" mode specifically for stdin, only when using pipes
|
||||
"out_mode" mode specifically for stdout, only when using pipes
|
||||
"err_mode" mode specifically for stderr, only when using pipes
|
||||
See |channel-mode| for the values.
|
||||
|
||||
Note: when setting "mode" the part specific mode is
|
||||
overwritten. Therefore set "mode" first and the part
|
||||
specific mode later.
|
||||
|
||||
Note: when writing to a file or buffer and when
|
||||
reading from a buffer NL mode is used by default.
|
||||
|
||||
*job-callback*
|
||||
"callback": handler Callback for something to read on any part of the
|
||||
channel.
|
||||
*job-out-cb*
|
||||
"out-cb": handler Callback for when there is something to read on
|
||||
stdout.
|
||||
*job-err-cb*
|
||||
"err-cb": handler Callback for when there is something to read on
|
||||
stderr.
|
||||
*job-close-cb*
|
||||
"close-cb": handler Callback for when the channel is closed. Same as
|
||||
"close-cb" on ch_open().
|
||||
*job-exit-cb*
|
||||
"exit-cb": handler Callback for when the job ends. The arguments are the
|
||||
*job-out_cb* *out_cb*
|
||||
"out_cb": handler Callback for when there is something to read on
|
||||
stdout. Only for when the channel uses pipes. When
|
||||
"out_cb" wasn't set the channel callback is used.
|
||||
|
||||
*job-err_cb* *err_cb*
|
||||
"err_cb": handler Callback for when there is something to read on
|
||||
stderr. Only for when the channel uses pipes. When
|
||||
"err_cb" wasn't set the channel callback is used.
|
||||
*job-close_cb*
|
||||
"close_cb": handler Callback for when the channel is closed. Same as
|
||||
"close_cb" on ch_open().
|
||||
*job-exit_cb*
|
||||
"exit_cb": handler Callback for when the job ends. The arguments are the
|
||||
job and the exit status.
|
||||
Vim checks about every 10 seconds for jobs that ended.
|
||||
The callback can also be triggered by calling
|
||||
|job_status()|.
|
||||
*job-timeout*
|
||||
"timeout" The time to wait for a request when blocking, E.g.
|
||||
when using ch_evalexpr(). In milliseconds. The
|
||||
default is 2000 (2 seconds).
|
||||
*out_timeout* *err_timeout*
|
||||
"out_timeout" Timeout for stdout. Only when using pipes.
|
||||
"err_timeout" Timeout for stderr. Only when using pipes.
|
||||
Note: when setting "timeout" the part specific mode is
|
||||
overwritten. Therefore set "timeout" first and the
|
||||
part specific mode later.
|
||||
|
||||
*job-stoponexit*
|
||||
"stoponexit": {signal} Send {signal} to the job when Vim exits. See
|
||||
|job_stop()| for possible values.
|
||||
@@ -557,37 +605,40 @@ See |job_setoptions()| and |ch_setoptions()|.
|
||||
cause I/O errors.
|
||||
Existing callbacks and other settings remain.
|
||||
|
||||
*job-in-io* *in-top* *in-bot* *in-name* *in-buf*
|
||||
"in-io": "null" disconnect stdin (read from /dev/null)
|
||||
"in-io": "pipe" stdin is connected to the channel (default)
|
||||
"in-io": "file" stdin reads from a file
|
||||
"in-io": "buffer" stdin reads from a buffer
|
||||
"in-top": number when using "buffer": first line to send (default: 1)
|
||||
"in-bot": number when using "buffer": last line to send (default: last)
|
||||
"in-name": "/path/file" the name of the file or buffer to read from
|
||||
"in-buf": number the number of the buffer to read from
|
||||
*job-in_io* *in_top* *in_bot* *in_name* *in_buf*
|
||||
"in_io": "null" disconnect stdin (read from /dev/null)
|
||||
"in_io": "pipe" stdin is connected to the channel (default)
|
||||
"in_io": "file" stdin reads from a file
|
||||
"in_io": "buffer" stdin reads from a buffer
|
||||
"in_top": number when using "buffer": first line to send (default: 1)
|
||||
"in_bot": number when using "buffer": last line to send (default: last)
|
||||
"in_name": "/path/file" the name of the file or buffer to read from
|
||||
"in_buf": number the number of the buffer to read from
|
||||
|
||||
*job-out-io* *out-name* *out-buf*
|
||||
"out-io": "null" disconnect stdout (goes to /dev/null)
|
||||
"out-io": "pipe" stdout is connected to the channel (default)
|
||||
"out-io": "file" stdout writes to a file
|
||||
"out-io": "buffer" stdout appends to a buffer
|
||||
"out-name": "/path/file" the name of the file or buffer to write to
|
||||
"out-buf": number the number of the buffer to write to
|
||||
*job-out_io* *out_name* *out_buf*
|
||||
"out_io": "null" disconnect stdout (goes to /dev/null)
|
||||
"out_io": "pipe" stdout is connected to the channel (default)
|
||||
"out_io": "file" stdout writes to a file
|
||||
"out_io": "buffer" stdout appends to a buffer
|
||||
"out_name": "/path/file" the name of the file or buffer to write to
|
||||
"out_buf": number the number of the buffer to write to
|
||||
|
||||
*job-err-io* *err-name* *err-buf*
|
||||
"err-io": "out" stderr messages to go to stdout
|
||||
"err-io": "null" disconnect stderr (goes to /dev/null)
|
||||
"err-io": "pipe" stderr is connected to the channel (default)
|
||||
"err-io": "file" stderr writes to a file
|
||||
"err-io": "buffer" stderr appends to a buffer
|
||||
"err-name": "/path/file" the name of the file or buffer to write to
|
||||
"err-buf": number the number of the buffer to write to
|
||||
*job-err_io* *err_name* *err_buf*
|
||||
"err_io": "out" stderr messages to go to stdout
|
||||
"err_io": "null" disconnect stderr (goes to /dev/null)
|
||||
"err_io": "pipe" stderr is connected to the channel (default)
|
||||
"err_io": "file" stderr writes to a file
|
||||
"err_io": "buffer" stderr appends to a buffer
|
||||
"err_name": "/path/file" the name of the file or buffer to write to
|
||||
"err_buf": number the number of the buffer to write to
|
||||
|
||||
"block_write": number only for testing: pretend every other write to stdin
|
||||
will block
|
||||
|
||||
|
||||
Writing to a buffer ~
|
||||
|
||||
When the out-io or err-io mode is "buffer" and there is a callback, the text
|
||||
When the out_io or err_io mode is "buffer" and there is a callback, the text
|
||||
is appended to the buffer before invoking the callback.
|
||||
|
||||
When a buffer is used both for input and output, the output lines are put
|
||||
@@ -614,7 +665,7 @@ Undo is synced for every added line.
|
||||
|
||||
|
||||
Writing to a file ~
|
||||
|
||||
*E920*
|
||||
The file is created with permissions 600 (read-write for the user, not
|
||||
accessible for others). Use |setfperm()| to change this.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*editing.txt* For Vim version 7.4. Last change: 2016 Feb 16
|
||||
*editing.txt* For Vim version 7.4. Last change: 2016 Mar 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -393,7 +393,7 @@ These are the common ones:
|
||||
To avoid the special meaning of the wildcards prepend a backslash. However,
|
||||
on MS-Windows the backslash is a path separator and "path\[abc]" is still seen
|
||||
as a wildcard when "[" is in the 'isfname' option. A simple way to avoid this
|
||||
is to use "path\[[]abc]". Then the file "path[abc]" literally.
|
||||
is to use "path\[[]abc]", this matches the file "path\[abc]".
|
||||
|
||||
*starstar-wildcard*
|
||||
Expanding "**" is possible on Unix, Win32, Mac OS/X and a few other systems.
|
||||
@@ -1221,7 +1221,7 @@ Examples: >
|
||||
|
||||
If you want to always use ":confirm", set the 'confirm' option.
|
||||
|
||||
*:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
|
||||
*:browse* *:bro* *E338* *E614* *E615* *E616*
|
||||
:bro[wse] {command} Open a file selection dialog for an argument to
|
||||
{command}. At present this works for |:e|, |:w|,
|
||||
|:wall|, |:wq|, |:wqall|, |:x|, |:xall|, |:exit|,
|
||||
|
||||
+631
-380
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
*filetype.txt* For Vim version 7.4. Last change: 2015 Dec 06
|
||||
*filetype.txt* For Vim version 7.4. Last change: 2016 Apr 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -586,6 +586,41 @@ folding style instead. For example: >
|
||||
autocmd FileType man setlocal foldmethod=indent foldenable
|
||||
|
||||
|
||||
MANPAGER *manpager.vim*
|
||||
|
||||
The :Man command allows you to turn Vim into a manpager (that syntax highlights
|
||||
manpages and follows linked manpages on hitting CTRL-]).
|
||||
|
||||
Works on:
|
||||
|
||||
- Linux
|
||||
- Mac OS
|
||||
- FreeBSD
|
||||
- Cygwin
|
||||
- Win 10 under Bash
|
||||
|
||||
Untested:
|
||||
|
||||
- Amiga OS
|
||||
- BeOS
|
||||
- OS/2
|
||||
|
||||
For bash,zsh,ksh or dash by adding to the config file (.bashrc,.zshrc, ...)
|
||||
|
||||
export MANPAGER="env MAN_PN=1 vim -M +MANPAGER -"
|
||||
|
||||
For (t)csh by adding to the config file
|
||||
|
||||
setenv MANPAGER "env MAN_PN=1 vim -M +MANPAGER -"
|
||||
|
||||
For fish by adding to the config file
|
||||
|
||||
set -x MANPAGER "env MAN_PN=1 vim -M +MANPAGER -"
|
||||
|
||||
If man sets the $MAN_PN environment variable, like man-db, the most common
|
||||
implementation on Linux and Mac OS, then the "env MAN_PN=1 " part above is
|
||||
superfluous.
|
||||
|
||||
PDF *ft-pdf-plugin*
|
||||
|
||||
Two maps, <C-]> and <C-T>, are provided to simulate a tag stack for navigating
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*gui_x11.txt* For Vim version 7.4. Last change: 2014 Mar 08
|
||||
*gui_x11.txt* For Vim version 7.4. Last change: 2016 Apr 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -314,7 +314,7 @@ If a name is used that exists on other systems, but not in X11, the default
|
||||
"arrow" pointer is used.
|
||||
|
||||
==============================================================================
|
||||
5. GTK version *gui-gtk* *GTK+* *GTK*
|
||||
5. GTK version *gui-gtk* *GTK+* *GTK* *GTK3*
|
||||
|
||||
The GTK version of the GUI works a little bit different.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*help.txt* For Vim version 7.4. Last change: 2016 Feb 27
|
||||
*help.txt* For Vim version 7.4. Last change: 2016 Mar 31
|
||||
|
||||
VIM - main help file
|
||||
k
|
||||
@@ -179,6 +179,7 @@ Versions ~
|
||||
|version5.txt| Differences between Vim version 4.6 and 5.x
|
||||
|version6.txt| Differences between Vim version 5.7 and 6.x
|
||||
|version7.txt| Differences between Vim version 6.4 and 7.x
|
||||
|version8.txt| Differences between Vim version 7.4 and 8.x
|
||||
*sys-file-list*
|
||||
Remarks about specific systems ~
|
||||
|os_390.txt| OS/390 Unix
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*helphelp.txt* For Vim version 7.4. Last change: 2014 Sep 19
|
||||
*helphelp.txt* For Vim version 7.4. Last change: 2016 Apr 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -197,6 +197,9 @@ command: >
|
||||
*E154* *E150* *E151* *E152* *E153* *E670*
|
||||
:helpt[ags] [++t] {dir}
|
||||
Generate the help tags file(s) for directory {dir}.
|
||||
When {dir} is ALL then all "doc" directories in
|
||||
'runtimepath' will be used.
|
||||
|
||||
All "*.txt" and "*.??x" files in the directory and
|
||||
sub-directories are scanned for a help tag definition
|
||||
in between stars. The "*.??x" files are for
|
||||
@@ -205,9 +208,11 @@ command: >
|
||||
sorted.
|
||||
When there are duplicates an error message is given.
|
||||
An existing tags file is silently overwritten.
|
||||
|
||||
The optional "++t" argument forces adding the
|
||||
"help-tags" tag. This is also done when the {dir} is
|
||||
equal to $VIMRUNTIME/doc.
|
||||
|
||||
To rebuild the help tags in the runtime directory
|
||||
(requires write permission there): >
|
||||
:helptags $VIMRUNTIME/doc
|
||||
@@ -258,7 +263,9 @@ The second one finds the English user manual, even when 'helplang' is set to
|
||||
|
||||
When using command-line completion for the ":help" command, the "@en"
|
||||
extension is only shown when a tag exists for multiple languages. When the
|
||||
tag only exists for English "@en" is omitted.
|
||||
tag only exists for English "@en" is omitted. When the first candidate has an
|
||||
"@ab" extension and it matches the first language in 'helplang' "@ab" is also
|
||||
omitted.
|
||||
|
||||
When using |CTRL-]| or ":help!" in a non-English help file Vim will try to
|
||||
find the tag in the same language. If not found then 'helplang' will be used
|
||||
@@ -315,6 +322,10 @@ aligned on a line.
|
||||
When referring to an existing help tag and to create a hot-link, place the
|
||||
name between two bars (|) eg. |help-writing|.
|
||||
|
||||
When referring to a Vim command and to create a hot-link, place the
|
||||
name between two backticks, eg. inside `:filetype`. You will see this is
|
||||
highlighted as a command, like a code block (see below).
|
||||
|
||||
When referring to a Vim option in the help file, place the option name between
|
||||
two single quotes, eg. 'statusline'
|
||||
|
||||
|
||||
@@ -97,8 +97,8 @@ command does the same and also splits the window (short: "scs").
|
||||
|
||||
The available subcommands are:
|
||||
|
||||
*E563* *E564* *E566* *E568* *E569* *E622* *E623*
|
||||
*E625* *E626* *E609*
|
||||
*E563* *E564* *E566* *E568* *E622* *E623* *E625*
|
||||
*E626* *E609*
|
||||
add : Add a new cscope database/connection.
|
||||
|
||||
USAGE :cs add {file|dir} [pre-path] [flags]
|
||||
|
||||
+13
-6
@@ -410,13 +410,20 @@ This means that Vim will search for the Lua DLL or shared library file only
|
||||
when needed. When you don't use the Lua interface you don't need it, thus
|
||||
you can use Vim without this file.
|
||||
|
||||
On MS-Windows to use the Lua interface the Lua DLL must be in your search path.
|
||||
In a console window type "path" to see what directories are used. The version
|
||||
of the DLL must match the Lua version Vim was compiled with.
|
||||
|
||||
On Unix the 'luadll' option can be used to specify the Lua shared library file
|
||||
instead of DYNAMIC_LUA_DLL file what was specified at compile time. The
|
||||
version of the shared library must match the Lua version Vim was compiled with.
|
||||
MS-Windows ~
|
||||
|
||||
To use the Lua interface the Lua DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used. The 'luadll'
|
||||
option can be also used to specify the Lua DLL. The version of the DLL must
|
||||
match the Lua version Vim was compiled with.
|
||||
|
||||
|
||||
Unix ~
|
||||
|
||||
The 'luadll' option can be used to specify the Lua shared library file instead
|
||||
of DYNAMIC_LUA_DLL file what was specified at compile time. The version of
|
||||
the shared library must match the Lua version Vim was compiled with.
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -284,7 +284,8 @@ used for building Vim.
|
||||
To use the Perl interface the Perl DLL must be in your search path.
|
||||
If Vim reports it cannot find the perl512.dll, make sure your $PATH includes
|
||||
the directory where it is located. The Perl installer normally does that.
|
||||
In a console window type "path" to see what directories are used.
|
||||
In a console window type "path" to see what directories are used. The
|
||||
'perldll' option can be also used to specify the Perl DLL.
|
||||
|
||||
The name of the DLL must match the Perl version Vim was compiled with.
|
||||
Currently the name is "perl512.dll". That is for Perl 5.12. To know for
|
||||
|
||||
+38
-12
@@ -653,10 +653,25 @@ vim.List object *python-List*
|
||||
class List(vim.List): # Subclassing
|
||||
|
||||
vim.Function object *python-Function*
|
||||
Function-like object, acting like vim |Funcref| object. Supports `.name`
|
||||
attribute and is callable. Accepts special keyword argument `self`, see
|
||||
|Dictionary-function|. You can also use `vim.Function(name)` constructor,
|
||||
it is the same as `vim.bindeval('function(%s)'%json.dumps(name))`.
|
||||
Function-like object, acting like vim |Funcref| object. Accepts special
|
||||
keyword argument `self`, see |Dictionary-function|. You can also use
|
||||
`vim.Function(name)` constructor, it is the same as
|
||||
`vim.bindeval('function(%s)'%json.dumps(name))`.
|
||||
|
||||
Attributes (read-only):
|
||||
Attribute Description ~
|
||||
name Function name.
|
||||
args `None` or a |python-List| object with arguments. Note that
|
||||
this is a copy of the arguments list, constructed each time
|
||||
you request this attribute. Modifications made to the list
|
||||
will be ignored (but not to the containers inside argument
|
||||
list: this is like |copy()| and not |deepcopy()|).
|
||||
self `None` or a |python-Dictionary| object with self
|
||||
dictionary. Note that explicit `self` keyword used when
|
||||
calling resulting object overrides this attribute.
|
||||
|
||||
Constructor additionally accepts `args` and `self` keywords. If any of
|
||||
them is given then it constructs a partial, see |function()|.
|
||||
|
||||
Examples: >
|
||||
f = vim.Function('tr') # Constructor
|
||||
@@ -670,6 +685,11 @@ vim.Function object *python-Function*
|
||||
print f(self={}) # Like call('DictFun', [], {})
|
||||
print isinstance(f, vim.Function) # True
|
||||
|
||||
p = vim.Function('DictFun', self={})
|
||||
print f()
|
||||
p = vim.Function('tr', args=['abc', 'a'])
|
||||
print f('b')
|
||||
|
||||
==============================================================================
|
||||
8. pyeval() and py3eval() Vim functions *python-pyeval*
|
||||
|
||||
@@ -686,18 +706,24 @@ This means that Vim will search for the Python DLL or shared library file only
|
||||
when needed. When you don't use the Python interface you don't need it, thus
|
||||
you can use Vim without this file.
|
||||
|
||||
On MS-Windows to use the Python interface the Python DLL must be in your search
|
||||
path. In a console window type "path" to see what directories are used.
|
||||
|
||||
MS-Windows ~
|
||||
|
||||
To use the Python interface the Python DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used. The 'pythondll'
|
||||
or 'pythonthreedll' option can be also used to specify the Python DLL.
|
||||
|
||||
The name of the DLL must match the Python version Vim was compiled with.
|
||||
Currently the name is "python24.dll". That is for Python 2.4. To know for
|
||||
sure edit "gvim.exe" and search for "python\d*.dll\c".
|
||||
|
||||
On Unix the 'pythondll' or 'pythonthreedll' option can be used to specify the
|
||||
Python shared library file instead of DYNAMIC_PYTHON_DLL or
|
||||
DYNAMIC_PYTHON3_DLL file what were specified at compile time. The version of
|
||||
the shared library must match the Python 2.x or Python 3 version Vim was
|
||||
compiled with.
|
||||
|
||||
Unix ~
|
||||
|
||||
The 'pythondll' or 'pythonthreedll' option can be used to specify the Python
|
||||
shared library file instead of DYNAMIC_PYTHON_DLL or DYNAMIC_PYTHON3_DLL file
|
||||
what were specified at compile time. The version of the shared library must
|
||||
match the Python 2.x or Python 3 version Vim was compiled with.
|
||||
|
||||
==============================================================================
|
||||
10. Python 3 *python3*
|
||||
@@ -708,7 +734,7 @@ if the `:py3` command is working: >
|
||||
:py3 print("Hello")
|
||||
< *:py3file*
|
||||
The `:py3file` command works similar to `:pyfile`.
|
||||
*:py3do* *E863*
|
||||
*:py3do*
|
||||
The `:py3do` command works similar to `:pydo`.
|
||||
|
||||
|
||||
|
||||
@@ -199,6 +199,7 @@ This means that Vim will search for the Ruby DLL file or shared library only
|
||||
when needed. When you don't use the Ruby interface you don't need it, thus
|
||||
you can use Vim even though this library file is not on your system.
|
||||
|
||||
|
||||
MS-Windows ~
|
||||
|
||||
You need to install the right version of Ruby for this to work. You can find
|
||||
@@ -207,7 +208,8 @@ http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html
|
||||
Currently that is ruby-1.9.1-p429-i386-mswin32.zip
|
||||
|
||||
To use the Ruby interface the Ruby DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used.
|
||||
console window type "path" to see what directories are used. The 'rubydll'
|
||||
option can be also used to specify the Ruby DLL.
|
||||
|
||||
The name of the DLL must match the Ruby version Vim was compiled with.
|
||||
Currently the name is "msvcrt-ruby191.dll". That is for Ruby 1.9.1. To know
|
||||
@@ -218,6 +220,7 @@ and comment-out the check for _MSC_VER.
|
||||
You may also need to rename the include directory name to match the version,
|
||||
strangely for Ruby 1.9.3 the directory is called 1.9.1.
|
||||
|
||||
|
||||
Unix ~
|
||||
|
||||
The 'rubydll' option can be used to specify the Ruby shared library file
|
||||
|
||||
@@ -16,7 +16,7 @@ The Tcl Interface to Vim *tcl* *Tcl* *TCL*
|
||||
8. Examples |tcl-examples|
|
||||
9. Dynamic loading |tcl-dynamic|
|
||||
|
||||
{Vi does not have any of these commands} *E280* *E281*
|
||||
{Vi does not have any of these commands} *E280*
|
||||
|
||||
The Tcl interface only works when Vim was compiled with the |+tcl| feature.
|
||||
|
||||
@@ -526,7 +526,8 @@ can use Vim without this file.
|
||||
MS-Windows ~
|
||||
|
||||
To use the Tcl interface the Tcl DLL must be in your search path. In a
|
||||
console window type "path" to see what directories are used.
|
||||
console window type "path" to see what directories are used. The 'tcldll'
|
||||
option can be also used to specify the Tcl DLL.
|
||||
|
||||
The name of the DLL must match the Tcl version Vim was compiled with.
|
||||
Currently the name is "tcl86.dll". That is for Tcl 8.6. To know for sure
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 7.4. Last change: 2016 Mar 04
|
||||
*index.txt* For Vim version 7.4. Last change: 2016 Apr 12
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -49,6 +49,7 @@ tag char action in Insert mode ~
|
||||
|i_CTRL-G_k| CTRL-G k line up, to column where inserting started
|
||||
|i_CTRL-G_k| CTRL-G <Up> line up, to column where inserting started
|
||||
|i_CTRL-G_u| CTRL-G u start new undoable edit
|
||||
|i_CTRL-G_U| CTRL-G U don't break undo with next cursor movement
|
||||
|i_<BS>| <BS> delete character before the cursor
|
||||
|i_digraph| {char1}<BS>{char2}
|
||||
enter digraph (only when 'digraph' option set)
|
||||
@@ -859,6 +860,7 @@ tag command note action in Visual mode ~
|
||||
------------------------------------------------------------------------------
|
||||
|v_CTRL-\_CTRL-N| CTRL-\ CTRL-N stop Visual mode
|
||||
|v_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode'
|
||||
|v_CTRL-A| CTRL-A 2 add N to number in highlighted text
|
||||
|v_CTRL-C| CTRL-C stop Visual mode
|
||||
|v_CTRL-G| CTRL-G toggle between Visual mode and Select mode
|
||||
|v_<BS>| <BS> 2 Select mode: delete highlighted area
|
||||
@@ -867,6 +869,7 @@ tag command note action in Visual mode ~
|
||||
command
|
||||
|v_CTRL-V| CTRL-V make Visual mode blockwise or stop Visual
|
||||
mode
|
||||
|v_CTRL-X| CTRL-X 2 subtract N from number in highlighted text
|
||||
|v_<Esc>| <Esc> stop Visual mode
|
||||
|v_CTRL-]| CTRL-] jump to highlighted tag
|
||||
|v_!| !{filter} 2 filter the highlighted lines through the
|
||||
@@ -923,6 +926,8 @@ tag command note action in Visual mode ~
|
||||
|v_a}| a} same as aB
|
||||
|v_c| c 2 delete highlighted area and start insert
|
||||
|v_d| d 2 delete highlighted area
|
||||
|v_g_CTRL-A| g CTRL-A 2 add N to number in highlighted text
|
||||
|v_g_CTRL-X| g CTRL-X 2 subtract N from number in highlighted text
|
||||
|v_gJ| gJ 2 join the highlighted lines without
|
||||
inserting spaces
|
||||
|v_gq| gq 2 format the highlighted lines
|
||||
@@ -1397,6 +1402,7 @@ tag command action ~
|
||||
|:ounmenu| :ounme[nu] remove menu for Operator-pending mode
|
||||
|:ownsyntax| :ow[nsyntax] set new local syntax highlight for this window
|
||||
|:packadd| :pa[ckadd] add a plugin from 'packpath'
|
||||
|:packloadall| :packl[oadall] load all packages under 'packpath'
|
||||
|:pclose| :pc[lose] close preview window
|
||||
|:pedit| :ped[it] edit file in the preview window
|
||||
|:perl| :pe[rl] execute Perl command
|
||||
|
||||
+1
-1
@@ -1358,7 +1358,7 @@ Possible attributes are:
|
||||
Note that -range=N and -count=N are mutually exclusive - only one should be
|
||||
specified.
|
||||
|
||||
*E889* *:command-addr*
|
||||
*:command-addr*
|
||||
It is possible that the special characters in the range like ., $ or % which
|
||||
by default correspond to the current line, last line and the whole buffer,
|
||||
relate to arguments, (loaded) buffers, windows or tab pages.
|
||||
|
||||
+12
-2
@@ -1,4 +1,4 @@
|
||||
*message.txt* For Vim version 7.4. Last change: 2016 Feb 27
|
||||
*message.txt* For Vim version 7.4. Last change: 2016 Apr 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -19,6 +19,15 @@ The ":messages" command can be used to view previously given messages. This
|
||||
is especially useful when messages have been overwritten or truncated. This
|
||||
depends on the 'shortmess' option.
|
||||
|
||||
:messages Show all messages.
|
||||
|
||||
:{count}messages Show the {count} most recent messages.
|
||||
|
||||
:messages clear Clear all messages.
|
||||
|
||||
:{count}messages clear Clear messages, keeping only the {count} most
|
||||
recent ones.
|
||||
|
||||
The number of remembered messages is fixed at 20 for the tiny version and 200
|
||||
for other versions.
|
||||
|
||||
@@ -58,8 +67,9 @@ If you are lazy, it also works without the shift key: >
|
||||
When an error message is displayed, but it is removed before you could read
|
||||
it, you can see it again with: >
|
||||
:echo errmsg
|
||||
or view a list of recent messages with: >
|
||||
Or view a list of recent messages with: >
|
||||
:messages
|
||||
See `:messages` above.
|
||||
|
||||
|
||||
LIST OF MESSAGES
|
||||
|
||||
@@ -827,7 +827,7 @@ REJECT Not used.
|
||||
These errors occur when a message violates the protocol:
|
||||
*E627* *E628* *E629* *E632* *E633* *E634* *E635* *E636*
|
||||
*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646*
|
||||
*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654*
|
||||
*E647* *E648* *E649* *E650* *E651* *E652*
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
+55
-19
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 7.4. Last change: 2016 Mar 08
|
||||
*options.txt* For Vim version 7.4. Last change: 2016 Apr 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -69,7 +69,7 @@ achieve special effects. These options come in three forms:
|
||||
:se[t] {option}:{value}
|
||||
Set string or number option to {value}.
|
||||
For numeric options the value can be given in decimal,
|
||||
hex (preceded with 0x) or octal (preceded with '0').
|
||||
hex (preceded with 0x) or octal (preceded with '0').
|
||||
The old value can be inserted by typing 'wildchar' (by
|
||||
default this is a <Tab> or CTRL-E if 'compatible' is
|
||||
set). See |cmdline-completion|.
|
||||
@@ -1007,7 +1007,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
- The backup file will be created in the first directory in the list
|
||||
where this is possible. The directory must exist, Vim will not
|
||||
create it for you.
|
||||
- Empty means that no backup file will be created ( 'patchmode' is
|
||||
- Empty means that no backup file will be created ('patchmode' is
|
||||
impossible!). Writing may fail because of this.
|
||||
- A directory "." means to put the backup file in the same directory
|
||||
as the edited file.
|
||||
@@ -1075,7 +1075,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
Note that environment variables are not expanded. If you want to use
|
||||
$HOME you must expand it explicitly, e.g.: >
|
||||
:let backupskip = escape(expand('$HOME'), '\') . '/tmp/*'
|
||||
:let &backupskip = escape(expand('$HOME'), '\') . '/tmp/*'
|
||||
|
||||
< Note that the default also makes sure that "crontab -e" works (when a
|
||||
backup would be made by renaming the original file crontab won't see
|
||||
@@ -1258,7 +1258,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
break if 'linebreak' is on. Only works for ASCII and also for 8-bit
|
||||
characters when 'encoding' is an 8-bit encoding.
|
||||
|
||||
*'breakindent'* *'bri'* *'nobreakindent'* *'nobri'*
|
||||
*'breakindent'* *'bri'* *'nobreakindent'* *'nobri'*
|
||||
'breakindent' 'bri' boolean (default off)
|
||||
local to window
|
||||
{not in Vi}
|
||||
@@ -1805,7 +1805,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
when CTRL-P or CTRL-N are used. It is also used for whole-line
|
||||
completion |i_CTRL-X_CTRL-L|. It indicates the type of completion
|
||||
and the places to scan. It is a comma separated list of flags:
|
||||
. scan the current buffer ( 'wrapscan' is ignored)
|
||||
. scan the current buffer ('wrapscan' is ignored)
|
||||
w scan buffers from other windows
|
||||
b scan other loaded buffers that are in the buffer list
|
||||
u scan the unloaded buffers that are in the buffer list
|
||||
@@ -2305,6 +2305,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
different. The whole undo file is encrypted, not just
|
||||
the pieces of text.
|
||||
|
||||
You should use "blowfish2", also to re-encrypt older files.
|
||||
|
||||
When reading an encrypted file 'cryptmethod' will be set automatically
|
||||
to the detected method of the file being read. Thus if you write it
|
||||
without changing 'cryptmethod' the same method will be used.
|
||||
@@ -2657,6 +2659,15 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
also 'gdefault' option.
|
||||
Switching this option on is discouraged!
|
||||
|
||||
*'emoji'* *'emo'* *'noemoji'* *'noemo'*
|
||||
'emoji' 'emo' boolean (default: on)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+multi_byte|
|
||||
feature}
|
||||
When on all Unicode emoji characters are considered to be full width.
|
||||
|
||||
|
||||
*'encoding'* *'enc'* *E543*
|
||||
'encoding' 'enc' string (default: "latin1" or value from $LANG)
|
||||
global
|
||||
@@ -3034,8 +3045,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
file only, the option is not changed.
|
||||
When 'binary' is set, the value of 'fileformats' is not used.
|
||||
|
||||
Note that when Vim starts up with an empty buffer this option is not
|
||||
used. Set 'fileformat' in your .vimrc instead.
|
||||
When Vim starts up with an empty buffer the first item is used. You
|
||||
can overrule this by setting 'fileformat' in your .vimrc.
|
||||
|
||||
For systems with a Dos-like <EOL> (<CR><NL>), when reading files that
|
||||
are ":source"ed and for vimrc files, automatic <EOL> detection may be
|
||||
@@ -3724,6 +3735,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS,
|
||||
SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC.
|
||||
Normally you would use "cDEFAULT".
|
||||
qXX - quality XX. Valid quality names are: PROOF, DRAFT,
|
||||
ANTIALIASED, UNANTIALIASED, CLEARTYPE, DEFAULT.
|
||||
Normally you would use "qDEFAULT".
|
||||
Some quality values isn't supported in legacy OSs.
|
||||
|
||||
Use a ':' to separate the options.
|
||||
- A '_' can be used in the place of a space, so you don't need to use
|
||||
@@ -3839,7 +3854,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
The same applies to the modeless selection.
|
||||
*'go-P'*
|
||||
'P' Like autoselect but using the "+ register instead of the "*
|
||||
register.
|
||||
register.
|
||||
*'go-A'*
|
||||
'A' Autoselect for the modeless selection. Like 'a', but only
|
||||
applies to the modeless selection.
|
||||
@@ -4951,13 +4966,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
reset this option. |-u| |--noplugin|
|
||||
|
||||
*'luadll'*
|
||||
'luadll' string (default depends on the build)
|
||||
'luadll' string (default depends on the build)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+lua/dyn|
|
||||
feature}
|
||||
Specifies the name of the Lua shared library. The default is
|
||||
DYNAMIC_LUA_DLL, which was specified at compile time.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -5151,7 +5167,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
without a limit.
|
||||
On 64 bit machines higher values might work. But hey, do you really
|
||||
need more than 2 Gbyte for text editing? Keep in mind that text is
|
||||
stored in the swap file, one can edit files > 2 Gbyte anyay. We do
|
||||
stored in the swap file, one can edit files > 2 Gbyte anyway. We do
|
||||
need the memory to store undo info.
|
||||
Also see 'maxmem'.
|
||||
|
||||
@@ -5242,6 +5258,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
written. A ":set nomodified" command also resets the original
|
||||
values to the current values and the 'modified' option will be
|
||||
reset.
|
||||
Similarly for 'eol' and 'bomb'.
|
||||
This option is not set when a change is made to the buffer as the
|
||||
result of a BufNewFile, BufRead/BufReadPost, BufWritePost,
|
||||
FileAppendPost or VimLeave autocommand event. See |gzip-example| for
|
||||
@@ -5434,7 +5451,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
respectively; see |CTRL-A| for more info on these commands.
|
||||
alpha If included, single alphabetical characters will be
|
||||
incremented or decremented. This is useful for a list with a
|
||||
letter index a), b), etc. *octal-nrformats*
|
||||
letter index a), b), etc. *octal-nrformats*
|
||||
octal If included, numbers that start with a zero will be considered
|
||||
to be octal. Example: Using CTRL-A on "007" results in "010".
|
||||
hex If included, numbers starting with "0x" or "0X" will be
|
||||
@@ -5464,7 +5481,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
relative to the cursor. Together with 'number' there are these
|
||||
four combinations (cursor in line 3):
|
||||
|
||||
'nonu' 'nu' 'nonu' 'nu'
|
||||
'nonu' 'nu' 'nonu' 'nu'
|
||||
'nornu' 'nornu' 'rnu' 'rnu'
|
||||
|
||||
|apple | 1 apple | 2 apple | 2 apple
|
||||
@@ -5703,13 +5720,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
this doesn't work when $INCL contains a comma or white space.
|
||||
|
||||
*'perldll'*
|
||||
'perldll' string (default depends on the build)
|
||||
'perldll' string (default depends on the build)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+perl/dyn|
|
||||
feature}
|
||||
Specifies the name of the Perl shared library. The default is
|
||||
DYNAMIC_PERL_DLL, which was specified at compile time.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -5840,13 +5858,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|ins-completion-menu|.
|
||||
|
||||
*'pythondll'*
|
||||
'pythondll' string (default depends on the build)
|
||||
'pythondll' string (default depends on the build)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+python/dyn|
|
||||
feature}
|
||||
Specifies the name of the Python 2.x shared library. The default is
|
||||
DYNAMIC_PYTHON_DLL, which was specified at compile time.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -5858,6 +5877,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
feature}
|
||||
Specifies the name of the Python 3 shared library. The default is
|
||||
DYNAMIC_PYTHON3_DLL, which was specified at compile time.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -6081,13 +6101,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
The 'rightleft' option must be set for 'rightleftcmd' to take effect.
|
||||
|
||||
*'rubydll'*
|
||||
'rubydll' string (default: depends on the build)
|
||||
'rubydll' string (default: depends on the build)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+ruby/dyn|
|
||||
feature}
|
||||
Specifies the name of the Ruby shared library. The default is
|
||||
DYNAMIC_RUBY_DLL, which was specified at compile time.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -6669,7 +6690,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
c don't give |ins-completion-menu| messages. For example,
|
||||
"-- XXX completion (YYY)", "match 1 of 2", "The only match",
|
||||
"Pattern not found", "Back at original", etc.
|
||||
q use "recording" instead of "recording @a"
|
||||
q use "recording" instead of "recording @a"
|
||||
F don't give the file info when editing a file, like `:silent`
|
||||
was used for the command
|
||||
|
||||
This gives you the opportunity to avoid that a change between buffers
|
||||
requires you to hit <Enter>, but still gives as useful a message as
|
||||
@@ -7573,13 +7596,14 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
mapping which should not change the tagstack.
|
||||
|
||||
*'tcldll'*
|
||||
'tcldll' string (default depends on the build)
|
||||
'tcldll' string (default depends on the build)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+tcl/dyn|
|
||||
feature}
|
||||
Specifies the name of the Tcl shared library. The default is
|
||||
DYNAMIC_TCL_DLL, which was specified at compile time.
|
||||
Environment variables are expanded |:set_env|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -7629,7 +7653,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{not in Vi}
|
||||
Encoding used for the terminal. This specifies what character
|
||||
encoding the keyboard produces and the display will understand. For
|
||||
the GUI it only applies to the keyboard ( 'encoding' is used for the
|
||||
the GUI it only applies to the keyboard ('encoding' is used for the
|
||||
display). Except for the Mac when 'macatsui' is off, then
|
||||
'termencoding' should be "macroman" (for the Carbon GUI).
|
||||
In the Win32 console version the default value is the console codepage
|
||||
@@ -7654,6 +7678,18 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
:set encoding=utf-8
|
||||
< You need to do this when your system has no locale support for UTF-8.
|
||||
|
||||
*'termguicolors'* *'tgc'*
|
||||
'termguicolors' 'tgc' boolean (default off)
|
||||
global
|
||||
{not in Vi}
|
||||
{not available when compiled without the
|
||||
|+termguicolors| feature}
|
||||
When on, uses |highlight-guifg| and |highlight-guibg| attributes in
|
||||
the terminal (thus using 24-bit color). Requires a ISO-8613-3
|
||||
compatible terminal.
|
||||
If setting this option does not work (produces a colorless UI)
|
||||
reading |xterm-true-color| might help.
|
||||
|
||||
*'terse'* *'noterse'*
|
||||
'terse' boolean (default off)
|
||||
global
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*os_beos.txt* For Vim version 7.4. Last change: 2010 Aug 14
|
||||
*os_beos.txt* For Vim version 7.4. Last change: 2016 Mar 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -248,8 +248,9 @@ reality. Vim uses this mapping:
|
||||
Button 3 -> MiddleMouse.
|
||||
|
||||
If your mouse has fewer than 3 buttons you can provide your own mapping from
|
||||
mouse clicks with modifier(s) to other mouse buttons. See the file
|
||||
vim-5.x/macros/swapmous.vim for an example. |gui-mouse-mapping|
|
||||
mouse clicks with modifier(s) to other mouse buttons. See the swapmouse
|
||||
package for an example: |gui-mouse-mapping|
|
||||
$VIMRUNTIME/pack/dist/opt/swapmouse/plugin/swapmouse.vim
|
||||
|
||||
|
||||
12. Color names *beos-colors*
|
||||
|
||||
+10
-9
@@ -1,4 +1,4 @@
|
||||
*pattern.txt* For Vim version 7.4. Last change: 2016 Jan 03
|
||||
*pattern.txt* For Vim version 7.4. Last change: 2016 Apr 26
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -576,7 +576,7 @@ An atom can be followed by an indication of how many times the atom can be
|
||||
matched and in what way. This is called a multi. See |/multi| for an
|
||||
overview.
|
||||
|
||||
*/star* */\star* *E56*
|
||||
*/star* */\star*
|
||||
* (use \* when 'magic' is not set)
|
||||
Matches 0 or more of the preceding atom, as many as possible.
|
||||
Example 'nomagic' matches ~
|
||||
@@ -596,7 +596,7 @@ overview.
|
||||
the end of the file and then tries matching "END", backing up one
|
||||
character at a time.
|
||||
|
||||
*/\+* *E57*
|
||||
*/\+*
|
||||
\+ Matches 1 or more of the preceding atom, as many as possible. {not in
|
||||
Vi}
|
||||
Example matches ~
|
||||
@@ -612,7 +612,7 @@ overview.
|
||||
\? Just like \=. Cannot be used when searching backwards with the "?"
|
||||
command. {not in Vi}
|
||||
|
||||
*/\{* *E58* *E60* *E554* *E870*
|
||||
*/\{* *E60* *E554* *E870*
|
||||
\{n,m} Matches n to m of the preceding atom, as many as possible
|
||||
\{n} Matches n of the preceding atom
|
||||
\{n,} Matches at least n of the preceding atom, as many as possible
|
||||
@@ -1079,8 +1079,8 @@ x A single character, with no special meaning, matches itself
|
||||
belonging to that character class. The following character classes
|
||||
are supported:
|
||||
Name Contents ~
|
||||
*[:alnum:]* [:alnum:] letters and digits
|
||||
*[:alpha:]* [:alpha:] letters
|
||||
*[:alnum:]* [:alnum:] ASCII letters and digits
|
||||
*[:alpha:]* [:alpha:] ASCII letters
|
||||
*[:blank:]* [:blank:] space and tab characters
|
||||
*[:cntrl:]* [:cntrl:] control characters
|
||||
*[:digit:]* [:digit:] decimal digits
|
||||
@@ -1088,7 +1088,7 @@ x A single character, with no special meaning, matches itself
|
||||
*[:lower:]* [:lower:] lowercase letters (all letters when
|
||||
'ignorecase' is used)
|
||||
*[:print:]* [:print:] printable characters including space
|
||||
*[:punct:]* [:punct:] punctuation characters
|
||||
*[:punct:]* [:punct:] ASCII punctuation characters
|
||||
*[:space:]* [:space:] whitespace characters
|
||||
*[:upper:]* [:upper:] uppercase letters (all letters when
|
||||
'ignorecase' is used)
|
||||
@@ -1104,8 +1104,9 @@ x A single character, with no special meaning, matches itself
|
||||
'/', alphabetic, numeric, '_' or '~'.
|
||||
These items only work for 8-bit characters, except [:lower:] and
|
||||
[:upper:] also work for multi-byte characters when using the new
|
||||
regexp engine. In the future these items may work for multi-byte
|
||||
characters.
|
||||
regexp engine. See |two-engines|. In the future these items may
|
||||
work for multi-byte characters. For now, to get all "alpha"
|
||||
characters you can use: [[:lower:][:upper:]].
|
||||
*/[[=* *[==]*
|
||||
- An equivalence class. This means that characters are matched that
|
||||
have almost the same meaning, e.g., when ignoring accents. This
|
||||
|
||||
+23
-19
@@ -1,25 +1,25 @@
|
||||
*pi_logipat.txt* Logical Patterns Mar 13, 2013
|
||||
*logiPat.txt* Logical Patterns Jun 22, 2015
|
||||
|
||||
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||
Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright*
|
||||
Copyright: (c) 2004-2015 by Charles E. Campbell *logiPat-copyright*
|
||||
The VIM LICENSE applies to LogiPat.vim and LogiPat.txt
|
||||
(see |copyright|) except use "LogiPat" instead of "Vim"
|
||||
No warranty, express or implied. Use At-Your-Own-Risk.
|
||||
|
||||
==============================================================================
|
||||
1. Contents *logipat* *logipat-contents*
|
||||
1. Contents *logiPat* *logiPat-contents*
|
||||
|
||||
1. Contents.................: |logiPat-contents|
|
||||
2. LogiPat Manual...........: |logiPat-manual|
|
||||
3. LogiPat Examples.........: |logiPat-examples|
|
||||
4. Caveat...................: |logiPat-caveat|
|
||||
5. LogiPat History..........: |logiPat-history|
|
||||
|
||||
1. Contents.................: |logipat-contents|
|
||||
2. LogiPat Manual...........: |logipat-manual|
|
||||
3. LogiPat Examples.........: |logipat-examples|
|
||||
4. Caveat...................: |logipat-caveat|
|
||||
5. LogiPat History..........: |logipat-history|
|
||||
|
||||
==============================================================================
|
||||
2. LogiPat Manual *logipat-manual* *logipat-man*
|
||||
2. LogiPat Manual *logiPat-manual* *logiPat-man*
|
||||
|
||||
|
||||
*logipat-arg* *logipat-input* *logipat-pattern* *logipat-operators*
|
||||
*logiPat-arg* *logiPat-input* *logiPat-pattern* *logiPat-operators*
|
||||
Boolean logic patterns are composed of
|
||||
|
||||
operators ! = not
|
||||
@@ -30,13 +30,12 @@ Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright*
|
||||
|
||||
:LogiPat {boolean-logic pattern} *:LogiPat*
|
||||
:LogiPat is a command which takes a boolean-logic
|
||||
argument (|logipat-arg|).
|
||||
argument (|logiPat-arg|).
|
||||
|
||||
:LP {boolean-logic pattern} *:LP*
|
||||
:LP is a shorthand command version of :LogiPat
|
||||
(|:LogiPat|).
|
||||
|
||||
:ELP {boolean-logic pattern} *:ELP*
|
||||
:LPE {boolean-logic pattern} *:LPE*
|
||||
No search is done, but the conversion from the
|
||||
boolean logic pattern to the regular expression
|
||||
is performed and echoed onto the display.
|
||||
@@ -59,8 +58,9 @@ Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright*
|
||||
To get a " inside a pattern, as opposed to having it delimit
|
||||
the pattern, double it.
|
||||
|
||||
|
||||
==============================================================================
|
||||
3. LogiPat Examples *logipat-examples*
|
||||
3. LogiPat Examples *logiPat-examples*
|
||||
|
||||
LogiPat takes Boolean logic arguments and produces a regular
|
||||
expression which implements the choices. A series of examples
|
||||
@@ -96,22 +96,26 @@ Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright*
|
||||
|
||||
|
||||
==============================================================================
|
||||
4. Caveat *logipat-caveat*
|
||||
4. Caveat *logiPat-caveat*
|
||||
|
||||
The "not" operator may be fragile; ie. it may not always play well
|
||||
with the & (logical-and) and | (logical-or) operators. Please try out
|
||||
your patterns, possibly with :set hls, to insure that what is matching
|
||||
is what you want.
|
||||
|
||||
==============================================================================
|
||||
3. LogiPat History *logipat-history*
|
||||
|
||||
==============================================================================
|
||||
3. LogiPat History *logiPat-history*
|
||||
|
||||
v4 Jun 22, 2015 * LogiPat has been picked up by Bram M for standard
|
||||
plugin distribution; hence the name change
|
||||
v3 Sep 25, 2006 * LP_Or() fixed; it now encapsulates its output
|
||||
in \%(...\) parentheses
|
||||
Dec 12, 2011 * |:ELP| added
|
||||
Dec 12, 2011 * |:LPE| added
|
||||
* "" is mapped to a single " and left inside patterns
|
||||
v2 May 31, 2005 * LPF and LogiPatFlags commands weren't working
|
||||
v1 May 23, 2005 * initial release
|
||||
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pi_netrw.txt* For Vim version 7.4. Last change: 2016 Feb 16
|
||||
*pi_netrw.txt* For Vim version 7.4. Last change: 2016 Apr 20
|
||||
|
||||
------------------------------------------------
|
||||
NETRW REFERENCE MANUAL by Charles E. Campbell
|
||||
@@ -1525,6 +1525,7 @@ the |'isfname'| option (which is global, so netrw doesn't modify it).
|
||||
Associated setting variables:
|
||||
|g:netrw_gx| control how gx picks up the text under the cursor
|
||||
|g:netrw_nogx| prevent gx map while editing
|
||||
|g:netrw_suppress_gx_mesg| controls gx's suppression of browser messages
|
||||
|
||||
*netrw_filehandler*
|
||||
|
||||
@@ -2931,6 +2932,13 @@ your browsing preferences. (see also: |netrw-settings|)
|
||||
such as listing, file removal, etc.
|
||||
default: ssh
|
||||
|
||||
*g:netrw_suppress_gx_mesg* =1 : browsers sometimes produce messages
|
||||
which are normally unwanted intermixed
|
||||
with the page.
|
||||
However, when using links, for example,
|
||||
those messages are what the browser produces.
|
||||
By setting this option to 0, netrw will not
|
||||
suppress browser messages.
|
||||
|
||||
*g:netrw_tmpfile_escape* =' &;'
|
||||
escape() is applied to all temporary files
|
||||
@@ -3757,6 +3765,23 @@ netrw:
|
||||
==============================================================================
|
||||
12. History *netrw-history* {{{1
|
||||
|
||||
v156: Feb 18, 2016 * Changed =~ to =~# where appropriate
|
||||
Feb 23, 2016 * s:ComposePath(base,subdir) now uses
|
||||
fnameescape() on the base portion
|
||||
Mar 01, 2016 * (gt_macki) reported where :Explore would
|
||||
make file unlisted. Fixed (tst943)
|
||||
Apr 04, 2016 * (reported by John Little) netrw normally
|
||||
suppresses browser messages, but sometimes
|
||||
those "messages" are what is wanted.
|
||||
See |g:netrw_suppress_gx_mesg|
|
||||
Apr 06, 2016 * (reported by Carlos Pita) deleting a remote
|
||||
file was giving an error message. Fixed.
|
||||
Apr 08, 2016 * (Charles Cooper) had a problem with an
|
||||
undefined b:netrw_curdir. He also provided
|
||||
a fix.
|
||||
Apr 20, 2016 * Changed s:NetrwGetBuffer(); now uses
|
||||
dictionaries. Also fixed the "No Name"
|
||||
buffer problem.
|
||||
v155: Oct 29, 2015 * (Timur Fayzrakhmanov) reported that netrw's
|
||||
mapping of ctrl-l was not allowing refresh of
|
||||
other windows when it was done in a netrw
|
||||
|
||||
+13
-10
@@ -1,12 +1,12 @@
|
||||
*pi_vimball.txt* For Vim version 7.4. Last change: 2012 Jan 17
|
||||
*pi_vimball.txt* For Vim version 7.4. Last change: 2016 Apr 11
|
||||
|
||||
----------------
|
||||
Vimball Archiver
|
||||
----------------
|
||||
|
||||
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
|
||||
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
|
||||
(remove NOSPAM from Campbell's email first)
|
||||
Copyright: (c) 2004-2012 by Charles E. Campbell, Jr. *Vimball-copyright*
|
||||
Copyright: (c) 2004-2015 by Charles E. Campbell *Vimball-copyright*
|
||||
The VIM LICENSE (see |copyright|) applies to the files in this
|
||||
package, including vimballPlugin.vim, vimball.vim, and pi_vimball.txt.
|
||||
except use "vimball" instead of "VIM". Like anything else that's free,
|
||||
@@ -99,10 +99,10 @@ MAKING DIRECTORIES VIA VIMBALLS *g:vimball_mkdir*
|
||||
|
||||
If it doesn't exist, then if g:vimball_mkdir doesn't exist, it is set
|
||||
as follows: >
|
||||
|g:netrw_local_mkdir|, if it exists
|
||||
"mkdir" , if it is executable
|
||||
"makedir" , if it is executable
|
||||
Otherwise , it is undefined.
|
||||
|g:netrw_localmkdir|, if it exists
|
||||
"mkdir" , if it is executable
|
||||
"makedir" , if it is executable
|
||||
Otherwise , it is undefined.
|
||||
< One may explicitly specify the directory making command using
|
||||
g:vimball_mkdir. This command is used to make directories that
|
||||
are needed as indicated by the vimball.
|
||||
@@ -120,8 +120,7 @@ CONTROLLING THE VIMBALL EXTRACTION DIRECTORY *g:vimball_home*
|
||||
source the file to extract its contents.
|
||||
|
||||
Extraction will only proceed if the first line of a putative vimball
|
||||
file holds the "Vimball Archiver by Charles E. Campbell, Jr., Ph.D."
|
||||
line.
|
||||
file holds the "Vimball Archiver by Charles E. Campbell" line.
|
||||
|
||||
LISTING FILES IN A VIMBALL *:VimballList*
|
||||
|
||||
@@ -182,13 +181,16 @@ WINDOWS *vimball-windows*
|
||||
==============================================================================
|
||||
4. Vimball History *vimball-history* {{{1
|
||||
|
||||
37 : Jul 18, 2014 * (by request of T. Miedema) added augroup around
|
||||
the autocmds in vimballPlugin.vim
|
||||
Jul 06, 2015 * there are two uses of tabc; changed to tabc!
|
||||
34 : Sep 22, 2011 * "UseVimball path" now supports a non-full path by
|
||||
prepending the current directory to it.
|
||||
33 : Apr 02, 2011 * Gave priority to *.vmb over *.vba
|
||||
* Changed silent! to sil! (shorter)
|
||||
* Safed |'swf'| setting (during vimball extraction,
|
||||
its now turned off)
|
||||
32 : May 19, 2010 * (Christian Brabandt) :so someplugin.vba and
|
||||
32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and
|
||||
:so someplugin.vba.gz (and the other supported
|
||||
compression types) now works
|
||||
* (Jan Steffens) added support for xz compression
|
||||
@@ -200,6 +202,7 @@ WINDOWS *vimball-windows*
|
||||
MkVimball, however, now will create *.vmb files.
|
||||
Feb 11, 2011 * motoyakurotsu reported an error with vimball's
|
||||
handling of zero-length files
|
||||
Feb 18, 2016 * Changed =~ to =~# where appropriate
|
||||
30 : Dec 08, 2008 * fnameescape() inserted to protect error
|
||||
messaging using corrupted filenames from
|
||||
causing problems
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 7.4. Last change: 2016 Jan 21
|
||||
*quickfix.txt* For Vim version 7.4. Last change: 2016 Mar 23
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -56,6 +56,14 @@ The following quickfix commands can be used. The location list commands are
|
||||
similar to the quickfix commands, replacing the 'c' prefix in the quickfix
|
||||
command with 'l'.
|
||||
|
||||
*E924*
|
||||
If the current window was closed by an |autocommand| while processing a
|
||||
location list command, it will be aborted.
|
||||
|
||||
*E925* *E926*
|
||||
If the current quickfix or location list was changed by an |autocommand| while
|
||||
processing a quickfix or location list command, it will be aborted.
|
||||
|
||||
*:cc*
|
||||
:cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
|
||||
error is displayed again. Without [!] this doesn't
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 7.4. Last change: 2016 Feb 24
|
||||
*quickref.txt* For Vim version 7.4. Last change: 2016 Apr 29
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -680,6 +680,7 @@ Short explanation of each option: *option-list*
|
||||
'display' 'dy' list of flags for how to display text
|
||||
'eadirection' 'ead' in which direction 'equalalways' works
|
||||
'edcompatible' 'ed' toggle flags of ":substitute" command
|
||||
'emoji' 'emo' emoji characters are considered full width
|
||||
'encoding' 'enc' encoding used internally
|
||||
'endofline' 'eol' write <EOL> for last line in file
|
||||
'equalalways' 'ea' windows are automatically made the same size
|
||||
@@ -919,6 +920,7 @@ Short explanation of each option: *option-list*
|
||||
'term' name of the terminal
|
||||
'termbidi' 'tbidi' terminal takes care of bi-directionality
|
||||
'termencoding' 'tenc' character encoding used by the terminal
|
||||
'termguicolors' 'tgc' use GUI colors for the terminal
|
||||
'terse' shorten some messages
|
||||
'textauto' 'ta' obsolete, use 'fileformats'
|
||||
'textmode' 'tx' obsolete, use 'fileformat'
|
||||
|
||||
+135
-25
@@ -1,4 +1,4 @@
|
||||
*repeat.txt* For Vim version 7.4. Last change: 2016 Mar 09
|
||||
*repeat.txt* For Vim version 7.4. Last change: 2016 Apr 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -8,13 +8,14 @@ Repeating commands, Vim scripts and debugging *repeating*
|
||||
|
||||
Chapter 26 of the user manual introduces repeating |usr_26.txt|.
|
||||
|
||||
1. Single repeats |single-repeat|
|
||||
2. Multiple repeats |multi-repeat|
|
||||
3. Complex repeats |complex-repeat|
|
||||
4. Using Vim scripts |using-scripts|
|
||||
5. Using Vim packages |packages|
|
||||
6. Debugging scripts |debug-scripts|
|
||||
7. Profiling |profiling|
|
||||
1. Single repeats |single-repeat|
|
||||
2. Multiple repeats |multi-repeat|
|
||||
3. Complex repeats |complex-repeat|
|
||||
4. Using Vim scripts |using-scripts|
|
||||
5. Using Vim packages |packages|
|
||||
6. Creating Vim packages |package-create|
|
||||
7. Debugging scripts |debug-scripts|
|
||||
8. Profiling |profiling|
|
||||
|
||||
==============================================================================
|
||||
1. Single repeats *single-repeat*
|
||||
@@ -71,8 +72,8 @@ examples.
|
||||
The global commands work by first scanning through the [range] lines and
|
||||
marking each line where a match occurs (for a multi-line pattern, only the
|
||||
start of the match matters).
|
||||
In a second scan the [cmd] is executed for each marked line with its line
|
||||
number prepended. For ":v" and ":g!" the command is executed for each not
|
||||
In a second scan the [cmd] is executed for each marked line, as if the cursor
|
||||
was in that line. For ":v" and ":g!" the command is executed for each not
|
||||
marked line. If a line is deleted its mark disappears.
|
||||
The default for [range] is the whole buffer (1,$). Use "CTRL-C" to interrupt
|
||||
the command. If an error message is given for a line, the command for that
|
||||
@@ -233,8 +234,11 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
||||
there yet.
|
||||
|
||||
Note that {name} is the directory name, not the name
|
||||
of the .vim file. If the "{name}/plugin" directory
|
||||
contains more than one file they are all sourced.
|
||||
of the .vim file. All the files matching the pattern
|
||||
pack/*/opt/{name}/plugin/**/*.vim ~
|
||||
will be sourced. This allows for using subdirectories
|
||||
below "plugin", just like with plugins in
|
||||
'runtimepath'.
|
||||
|
||||
If the filetype detection was not enabled yet (this
|
||||
is usually done with a "syntax enable" or "filetype
|
||||
@@ -249,15 +253,27 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
||||
|
||||
Also see |pack-add|.
|
||||
|
||||
:packloadall[!] Load all packages in the "start" directories under
|
||||
'packpath'. The directories found are added to
|
||||
'runtimepath'.
|
||||
This normally done during startup, after loading your
|
||||
.vimrc file. With this command it can be done
|
||||
earlier.
|
||||
*:packl* *:packloadall*
|
||||
:packl[oadall][!] Load all packages in the "start" directory under each
|
||||
entry in 'packpath'.
|
||||
|
||||
First all the directories found are added to
|
||||
'runtimepath', then the plugins found in the
|
||||
directories are sourced. This allows for a plugin to
|
||||
depend on something of another plugin, e.g. an
|
||||
"autoload" directory. See |packload-two-steps| for
|
||||
how this can be useful.
|
||||
|
||||
This is normally done automatically during startup,
|
||||
after loading your .vimrc file. With this command it
|
||||
can be done earlier.
|
||||
|
||||
Packages will be loaded only once. After this command
|
||||
it won't happen again. When the optional ! is added
|
||||
this command will load packages even when done before.
|
||||
|
||||
An error only causes sourcing the script where it
|
||||
happens to be aborted, further plugins will be loaded.
|
||||
See |packages|.
|
||||
|
||||
:scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167*
|
||||
@@ -467,8 +483,9 @@ You would now have these files under ~/.vim:
|
||||
pack/foo/opt/foodebug/plugin/debugger.vim
|
||||
|
||||
When Vim starts up, after processing your .vimrc, it scans all directories in
|
||||
'packpath' for plugins under the "pack/*/start" directory and loads them. The
|
||||
directory is added to 'runtimepath'.
|
||||
'packpath' for plugins under the "pack/*/start" directory. First all those
|
||||
directories are added to 'runtimepath'. Then all the plugins are loaded.
|
||||
See |packload-two-steps| for how these two steps can be useful.
|
||||
|
||||
In the example Vim will find "pack/foo/start/foobar/plugin/foo.vim" and adds
|
||||
"~/.vim/pack/foo/start/foobar" to 'runtimepath'.
|
||||
@@ -478,7 +495,7 @@ find the syntax/some.vim file, because its directory is in 'runtimepath'.
|
||||
|
||||
Vim will also load ftdetect files, if there are any.
|
||||
|
||||
Note that the files under "pack/foo/opt" or not loaded automatically, only the
|
||||
Note that the files under "pack/foo/opt" are not loaded automatically, only the
|
||||
ones under "pack/foo/start". See |pack-add| below for how the "opt" directory
|
||||
is used.
|
||||
|
||||
@@ -513,14 +530,107 @@ To load an optional plugin from a pack use the `:packadd` command: >
|
||||
This searches for "pack/*/opt/foodebug" in 'packpath' and will find
|
||||
~/.vim/pack/foo/opt/foodebug/plugin/debugger.vim and source it.
|
||||
|
||||
This could be done inside always.vim, if some conditions are met. Or you
|
||||
could add this command to your |.vimrc|.
|
||||
This could be done if some conditions are met. For example, depending on
|
||||
whether Vim supports a feature or a dependency is missing.
|
||||
|
||||
You can also load an optional plugin at startup, by putting this command in
|
||||
your |.vimrc|: >
|
||||
:packadd! foodebug
|
||||
The extra "!" is so that the plugin isn't loaded with Vim was started with
|
||||
|--noplugin|.
|
||||
|
||||
It is perfectly normal for a package to only have files in the "opt"
|
||||
directory. You then need to load each plugin when you want to use it.
|
||||
|
||||
|
||||
Where to put what ~
|
||||
|
||||
Since color schemes, loaded with `:colorscheme`, are found below
|
||||
"pack/*/start" and "pack/*/opt", you could put them anywhere. We recommend
|
||||
you put them below "pack/*/opt", for example
|
||||
".vim/pack/mycolors/opt/dark/colors/very_dark.vim".
|
||||
|
||||
Filetype plugins should go under "pack/*/start", so that they are always
|
||||
found. Unless you have more than one plugin for a file type and want to
|
||||
select which one to load with `:packadd`. E.g. depending on the compiler
|
||||
version: >
|
||||
if foo_compiler_version > 34
|
||||
packadd foo_new
|
||||
else
|
||||
packadd foo_old
|
||||
endif
|
||||
|
||||
The "after" directory is most likely not useful in a package. It's not
|
||||
disallowed though.
|
||||
|
||||
==============================================================================
|
||||
6. Debugging scripts *debug-scripts*
|
||||
6. Creating Vim packages *package-create*
|
||||
|
||||
This assumes you write one or more plugins that you distribute as a package.
|
||||
|
||||
If you have two unrelated plugins you would use two packages, so that Vim
|
||||
users can chose what they include or not. Or you can decide to use one
|
||||
package with optional plugins, and tell the user to add the ones he wants with
|
||||
`:packadd`.
|
||||
|
||||
Decide how you want to distribute the package. You can create an archive or
|
||||
you could use a repository. An archive can be used by more users, but is a
|
||||
bit harder to update to a new version. A repository can usually be kept
|
||||
up-to-date easily, but it requires a program like "git" to be available.
|
||||
You can do both, github can automatically create an archive for a release.
|
||||
|
||||
Your directory layout would be like this:
|
||||
start/foobar/plugin/foo.vim " always loaded, defines commands
|
||||
start/foobar/plugin/bar.vim " always loaded, defines commands
|
||||
start/foobar/autoload/foo.vim " loaded when foo command used
|
||||
start/foobar/doc/foo.txt " help for foo.vim
|
||||
start/foobar/doc/tags " help tags
|
||||
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
|
||||
opt/fooextra/autoload/extra.vim " loaded when extra command used
|
||||
opt/fooextra/doc/extra.txt " help for extra.vim
|
||||
opt/fooextra/doc/tags " help tags
|
||||
|
||||
This allows for the user to do: >
|
||||
mkdir ~/.vim/pack/myfoobar
|
||||
cd ~/.vim/pack/myfoobar
|
||||
git clone https://github.com/you/foobar.git
|
||||
|
||||
Here "myfoobar" is a name that the user can choose, the only condition is that
|
||||
it differs from other packages.
|
||||
|
||||
In your documentation you explain what the plugins do, and tell the user how
|
||||
to load the optional plugin: >
|
||||
:packadd! fooextra
|
||||
|
||||
You could add this packadd command in one of your plugins, to be executed when
|
||||
the optional plugin is needed.
|
||||
|
||||
Run the `:helptags` command to generate the doc/tags file. Including this
|
||||
generated file in the package means that the user can drop the package in his
|
||||
pack directory and the help command works right away. Don't forget to re-run
|
||||
the command after changing the plugin help: >
|
||||
:helptags path/start/foobar/doc
|
||||
:helptags path/opt/fooextra/doc
|
||||
|
||||
|
||||
Dependencies between plugins ~
|
||||
*packload-two-steps*
|
||||
Suppose you have a two plugins that depend on the same functionality. You can
|
||||
put the common functionality in an autoload directory, so that it will be
|
||||
found automatically. Your package would have these files:
|
||||
|
||||
pack/foo/start/one/plugin/one.vim >
|
||||
call foolib#getit()
|
||||
< pack/foo/start/two/plugin/two.vim >
|
||||
call foolib#getit()
|
||||
< pack/foo/start/lib/autoload/foolib.vim >
|
||||
func foolib#getit()
|
||||
|
||||
This works, because loading packages will first add all found directories to
|
||||
'runtimepath' before sourcing the plugins.
|
||||
|
||||
==============================================================================
|
||||
7. Debugging scripts *debug-scripts*
|
||||
|
||||
Besides the obvious messages that you can add to your scripts to find out what
|
||||
they are doing, Vim offers a debug mode. This allows you to step through a
|
||||
@@ -745,7 +855,7 @@ OBSCURE
|
||||
user, don't use typeahead for debug commands.
|
||||
|
||||
==============================================================================
|
||||
7. Profiling *profile* *profiling*
|
||||
8. Profiling *profile* *profiling*
|
||||
|
||||
Profiling means that Vim measures the time that is spent on executing
|
||||
functions and/or scripts. The |+profile| feature is required for this.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*starting.txt* For Vim version 7.4. Last change: 2016 Mar 05
|
||||
*starting.txt* For Vim version 7.4. Last change: 2016 Apr 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -249,7 +249,8 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
|
||||
-Z Restricted mode. All commands that make use of an external
|
||||
shell are disabled. This includes suspending with CTRL-Z,
|
||||
":sh", filtering, the system() function, backtick expansion,
|
||||
delete(), rename(), mkdir(), writefile(), libcall(), etc.
|
||||
delete(), rename(), mkdir(), writefile(), libcall(),
|
||||
job_start(), etc.
|
||||
{not in Vi}
|
||||
|
||||
*-g*
|
||||
@@ -866,9 +867,10 @@ accordingly. Vim proceeds in this order:
|
||||
commands from the command line have not been executed yet. You can
|
||||
use "--cmd 'set noloadplugins'" |--cmd|.
|
||||
|
||||
Plugin packs are loaded. These are plugins, as above, but found in
|
||||
'packpath' directories. Every plugin directory found is added in
|
||||
'runtimepath'. See |packages|.
|
||||
Packages are loaded. These are plugins, as above, but found in the
|
||||
"start" directory of each entry in 'packpath'. Every plugin directory
|
||||
found is added in 'runtimepath' and then the plugins are sourced. See
|
||||
|packages|.
|
||||
|
||||
5. Set 'shellpipe' and 'shellredir'
|
||||
The 'shellpipe' and 'shellredir' options are set according to the
|
||||
@@ -906,8 +908,9 @@ accordingly. Vim proceeds in this order:
|
||||
12. Execute startup commands
|
||||
If a "-t" flag was given to Vim, the tag is jumped to.
|
||||
The commands given with the |-c| and |+cmd| arguments are executed.
|
||||
The starting flag is reset, has("vim_starting") will now return zero.
|
||||
If the 'insertmode' option is set, Insert mode is entered.
|
||||
The starting flag is reset, has("vim_starting") will now return zero.
|
||||
The |v:vim_did_enter| variable is set to 1.
|
||||
The |VimEnter| autocommands are executed.
|
||||
|
||||
Some hints on using initializations:
|
||||
|
||||
+25
-21
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 7.4. Last change: 2016 Feb 25
|
||||
*syntax.txt* For Vim version 7.4. Last change: 2016 Apr 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -941,26 +941,27 @@ To disable them use ":unlet". Example: >
|
||||
:unlet c_comment_strings
|
||||
|
||||
Variable Highlight ~
|
||||
c_gnu GNU gcc specific items
|
||||
c_comment_strings strings and numbers inside a comment
|
||||
c_space_errors trailing white space and spaces before a <Tab>
|
||||
c_no_trail_space_error ... but no trailing spaces
|
||||
c_no_tab_space_error ... but no spaces before a <Tab>
|
||||
c_no_bracket_error don't highlight {}; inside [] as errors
|
||||
c_no_curly_error don't highlight {}; inside [] and () as errors;
|
||||
*c_gnu* GNU gcc specific items
|
||||
*c_comment_strings* strings and numbers inside a comment
|
||||
*c_space_errors* trailing white space and spaces before a <Tab>
|
||||
*c_no_trail_space_error* ... but no trailing spaces
|
||||
*c_no_tab_space_error* ... but no spaces before a <Tab>
|
||||
*c_no_bracket_error* don't highlight {}; inside [] as errors
|
||||
*c_no_curly_error* don't highlight {}; inside [] and () as errors;
|
||||
except { and } in first column
|
||||
c_curly_error highlight a missing }; this forces syncing from the
|
||||
*c_curly_error* highlight a missing }; this forces syncing from the
|
||||
start of the file, can be slow
|
||||
c_no_ansi don't do standard ANSI types and constants
|
||||
c_ansi_typedefs ... but do standard ANSI types
|
||||
c_ansi_constants ... but do standard ANSI constants
|
||||
c_no_utf don't highlight \u and \U in strings
|
||||
c_syntax_for_h for *.h files use C syntax instead of C++ and use objc
|
||||
*c_no_ansi* don't do standard ANSI types and constants
|
||||
*c_ansi_typedefs* ... but do standard ANSI types
|
||||
*c_ansi_constants* ... but do standard ANSI constants
|
||||
*c_no_utf* don't highlight \u and \U in strings
|
||||
*c_syntax_for_h* for *.h files use C syntax instead of C++ and use objc
|
||||
syntax instead of objcpp
|
||||
c_no_if0 don't highlight "#if 0" blocks as comments
|
||||
c_no_cformat don't highlight %-formats in strings
|
||||
c_no_c99 don't highlight C99 standard items
|
||||
c_no_c11 don't highlight C11 standard items
|
||||
*c_no_if0* don't highlight "#if 0" blocks as comments
|
||||
*c_no_cformat* don't highlight %-formats in strings
|
||||
*c_no_c99* don't highlight C99 standard items
|
||||
*c_no_c11* don't highlight C11 standard items
|
||||
*c_no_bsd* don't highlight BSD specific types
|
||||
|
||||
When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will
|
||||
become a fold. If you don't want comments to become a fold use: >
|
||||
@@ -4534,9 +4535,9 @@ in their own color.
|
||||
:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath'
|
||||
for the file "colors/{name}.vim". The first one that
|
||||
is found is loaded.
|
||||
To see the name of the currently active color scheme: >
|
||||
:colo
|
||||
< The name is also stored in the g:colors_name variable.
|
||||
Also searches all plugins in 'packpath', first below
|
||||
"start" and then under "opt".
|
||||
|
||||
Doesn't work recursively, thus you can't use
|
||||
":colorscheme" in a color scheme script.
|
||||
After the color scheme has been loaded the
|
||||
@@ -5047,6 +5048,9 @@ defaults back: >
|
||||
|
||||
:syntax reset
|
||||
|
||||
It is a bit of a wrong name, since it does not reset any syntax items, it only
|
||||
affects the highlighting.
|
||||
|
||||
This doesn't change the colors for the 'highlight' option.
|
||||
|
||||
Note that the syntax colors that you set in your vimrc file will also be reset
|
||||
|
||||
+130
-52
@@ -209,6 +209,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
'efm' options.txt /*'efm'*
|
||||
'ei' options.txt /*'ei'*
|
||||
'ek' options.txt /*'ek'*
|
||||
'emo' options.txt /*'emo'*
|
||||
'emoji' options.txt /*'emoji'*
|
||||
'enc' options.txt /*'enc'*
|
||||
'encoding' options.txt /*'encoding'*
|
||||
'endofline' options.txt /*'endofline'*
|
||||
@@ -545,6 +547,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
'noed' options.txt /*'noed'*
|
||||
'noedcompatible' options.txt /*'noedcompatible'*
|
||||
'noek' options.txt /*'noek'*
|
||||
'noemo' options.txt /*'noemo'*
|
||||
'noemoji' options.txt /*'noemoji'*
|
||||
'noendofline' options.txt /*'noendofline'*
|
||||
'noeol' options.txt /*'noeol'*
|
||||
'noequalalways' options.txt /*'noequalalways'*
|
||||
@@ -921,6 +925,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
't_%1' term.txt /*'t_%1'*
|
||||
't_%i' term.txt /*'t_%i'*
|
||||
't_&8' term.txt /*'t_&8'*
|
||||
't_8b' term.txt /*'t_8b'*
|
||||
't_8f' term.txt /*'t_8f'*
|
||||
't_@7' term.txt /*'t_@7'*
|
||||
't_AB' term.txt /*'t_AB'*
|
||||
't_AF' term.txt /*'t_AF'*
|
||||
@@ -1056,11 +1062,13 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
'term' options.txt /*'term'*
|
||||
'termbidi' options.txt /*'termbidi'*
|
||||
'termencoding' options.txt /*'termencoding'*
|
||||
'termguicolors' options.txt /*'termguicolors'*
|
||||
'terse' options.txt /*'terse'*
|
||||
'textauto' options.txt /*'textauto'*
|
||||
'textmode' options.txt /*'textmode'*
|
||||
'textwidth' options.txt /*'textwidth'*
|
||||
'tf' options.txt /*'tf'*
|
||||
'tgc' options.txt /*'tgc'*
|
||||
'tgst' options.txt /*'tgst'*
|
||||
'thesaurus' options.txt /*'thesaurus'*
|
||||
'tildeop' options.txt /*'tildeop'*
|
||||
@@ -1300,10 +1308,12 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
+tag_old_static various.txt /*+tag_old_static*
|
||||
+tcl various.txt /*+tcl*
|
||||
+tcl/dyn various.txt /*+tcl\/dyn*
|
||||
+termguicolors various.txt /*+termguicolors*
|
||||
+terminfo various.txt /*+terminfo*
|
||||
+termresponse various.txt /*+termresponse*
|
||||
+textobjects various.txt /*+textobjects*
|
||||
+tgetent various.txt /*+tgetent*
|
||||
+timers various.txt /*+timers*
|
||||
+title various.txt /*+title*
|
||||
+toolbar various.txt /*+toolbar*
|
||||
+transparency various.txt /*+transparency*
|
||||
@@ -1653,6 +1663,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
05.5 usr_05.txt /*05.5*
|
||||
05.6 usr_05.txt /*05.6*
|
||||
05.7 usr_05.txt /*05.7*
|
||||
05.8 usr_05.txt /*05.8*
|
||||
06.1 usr_06.txt /*06.1*
|
||||
06.2 usr_06.txt /*06.2*
|
||||
06.3 usr_06.txt /*06.3*
|
||||
@@ -1882,7 +1893,6 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:CompilerSet usr_41.txt /*:CompilerSet*
|
||||
:DiffOrig diff.txt /*:DiffOrig*
|
||||
:DoMatchParen pi_paren.txt /*:DoMatchParen*
|
||||
:ELP pi_logipat.txt /*:ELP*
|
||||
:Explore pi_netrw.txt /*:Explore*
|
||||
:GLVS pi_getscript.txt /*:GLVS*
|
||||
:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat*
|
||||
@@ -1891,6 +1901,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:GnatTags ft_ada.txt /*:GnatTags*
|
||||
:Hexplore pi_netrw.txt /*:Hexplore*
|
||||
:LP pi_logipat.txt /*:LP*
|
||||
:LPE pi_logipat.txt /*:LPE*
|
||||
:LPF pi_logipat.txt /*:LPF*
|
||||
:Lexplore pi_netrw.txt /*:Lexplore*
|
||||
:LogiPat pi_logipat.txt /*:LogiPat*
|
||||
@@ -2643,6 +2654,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
|
||||
:p various.txt /*:p*
|
||||
:pa repeat.txt /*:pa*
|
||||
:packadd repeat.txt /*:packadd*
|
||||
:packl repeat.txt /*:packl*
|
||||
:packloadall repeat.txt /*:packloadall*
|
||||
:pc windows.txt /*:pc*
|
||||
:pclose windows.txt /*:pclose*
|
||||
:pe if_perl.txt /*:pe*
|
||||
@@ -3585,6 +3598,7 @@ CTRL-] tagsrch.txt /*CTRL-]*
|
||||
CTRL-^ editing.txt /*CTRL-^*
|
||||
CTRL-{char} intro.txt /*CTRL-{char}*
|
||||
Channel eval.txt /*Channel*
|
||||
Channels eval.txt /*Channels*
|
||||
Chinese mbyte.txt /*Chinese*
|
||||
Cmd-. gui_mac.txt /*Cmd-.*
|
||||
Cmd-Down gui_mac.txt /*Cmd-Down*
|
||||
@@ -3810,7 +3824,6 @@ E273 if_ruby.txt /*E273*
|
||||
E277 remote.txt /*E277*
|
||||
E28 syntax.txt /*E28*
|
||||
E280 if_tcl.txt /*E280*
|
||||
E281 if_tcl.txt /*E281*
|
||||
E282 starting.txt /*E282*
|
||||
E283 motion.txt /*E283*
|
||||
E284 mbyte.txt /*E284*
|
||||
@@ -3895,7 +3908,6 @@ E358 options.txt /*E358*
|
||||
E359 term.txt /*E359*
|
||||
E36 windows.txt /*E36*
|
||||
E360 various.txt /*E360*
|
||||
E362 term.txt /*E362*
|
||||
E363 options.txt /*E363*
|
||||
E364 eval.txt /*E364*
|
||||
E365 print.txt /*E365*
|
||||
@@ -4103,7 +4115,6 @@ E556 tagsrch.txt /*E556*
|
||||
E557 term.txt /*E557*
|
||||
E558 term.txt /*E558*
|
||||
E559 term.txt /*E559*
|
||||
E56 pattern.txt /*E56*
|
||||
E560 if_cscop.txt /*E560*
|
||||
E561 if_cscop.txt /*E561*
|
||||
E562 if_cscop.txt /*E562*
|
||||
@@ -4112,8 +4123,6 @@ E564 if_cscop.txt /*E564*
|
||||
E566 if_cscop.txt /*E566*
|
||||
E567 if_cscop.txt /*E567*
|
||||
E568 if_cscop.txt /*E568*
|
||||
E569 if_cscop.txt /*E569*
|
||||
E57 pattern.txt /*E57*
|
||||
E570 message.txt /*E570*
|
||||
E571 if_tcl.txt /*E571*
|
||||
E572 if_tcl.txt /*E572*
|
||||
@@ -4122,9 +4131,7 @@ E574 starting.txt /*E574*
|
||||
E575 starting.txt /*E575*
|
||||
E576 starting.txt /*E576*
|
||||
E577 starting.txt /*E577*
|
||||
E578 editing.txt /*E578*
|
||||
E579 eval.txt /*E579*
|
||||
E58 pattern.txt /*E58*
|
||||
E580 eval.txt /*E580*
|
||||
E581 eval.txt /*E581*
|
||||
E582 eval.txt /*E582*
|
||||
@@ -4203,8 +4210,6 @@ E65 pattern.txt /*E65*
|
||||
E650 netbeans.txt /*E650*
|
||||
E651 netbeans.txt /*E651*
|
||||
E652 netbeans.txt /*E652*
|
||||
E653 netbeans.txt /*E653*
|
||||
E654 netbeans.txt /*E654*
|
||||
E655 eval.txt /*E655*
|
||||
E656 netbeans.txt /*E656*
|
||||
E657 netbeans.txt /*E657*
|
||||
@@ -4247,7 +4252,6 @@ E69 pattern.txt /*E69*
|
||||
E690 eval.txt /*E690*
|
||||
E691 eval.txt /*E691*
|
||||
E692 eval.txt /*E692*
|
||||
E693 eval.txt /*E693*
|
||||
E694 eval.txt /*E694*
|
||||
E695 eval.txt /*E695*
|
||||
E696 eval.txt /*E696*
|
||||
@@ -4261,7 +4265,6 @@ E702 eval.txt /*E702*
|
||||
E703 eval.txt /*E703*
|
||||
E704 eval.txt /*E704*
|
||||
E705 eval.txt /*E705*
|
||||
E706 eval.txt /*E706*
|
||||
E707 eval.txt /*E707*
|
||||
E708 eval.txt /*E708*
|
||||
E709 eval.txt /*E709*
|
||||
@@ -4429,9 +4432,7 @@ E855 autocmd.txt /*E855*
|
||||
E858 eval.txt /*E858*
|
||||
E859 eval.txt /*E859*
|
||||
E86 windows.txt /*E86*
|
||||
E860 eval.txt /*E860*
|
||||
E862 eval.txt /*E862*
|
||||
E863 if_pyth.txt /*E863*
|
||||
E864 pattern.txt /*E864*
|
||||
E865 pattern.txt /*E865*
|
||||
E866 pattern.txt /*E866*
|
||||
@@ -4459,7 +4460,6 @@ E885 sign.txt /*E885*
|
||||
E886 starting.txt /*E886*
|
||||
E887 if_pyth.txt /*E887*
|
||||
E888 pattern.txt /*E888*
|
||||
E889 map.txt /*E889*
|
||||
E89 message.txt /*E89*
|
||||
E890 syntax.txt /*E890*
|
||||
E891 eval.txt /*E891*
|
||||
@@ -4467,11 +4467,8 @@ E892 eval.txt /*E892*
|
||||
E893 eval.txt /*E893*
|
||||
E894 eval.txt /*E894*
|
||||
E895 if_mzsch.txt /*E895*
|
||||
E896 channel.txt /*E896*
|
||||
E898 channel.txt /*E898*
|
||||
E899 channel.txt /*E899*
|
||||
E90 message.txt /*E90*
|
||||
E900 channel.txt /*E900*
|
||||
E901 channel.txt /*E901*
|
||||
E902 channel.txt /*E902*
|
||||
E903 channel.txt /*E903*
|
||||
@@ -4493,6 +4490,15 @@ E917 eval.txt /*E917*
|
||||
E918 channel.txt /*E918*
|
||||
E919 repeat.txt /*E919*
|
||||
E92 message.txt /*E92*
|
||||
E920 channel.txt /*E920*
|
||||
E921 channel.txt /*E921*
|
||||
E922 eval.txt /*E922*
|
||||
E923 eval.txt /*E923*
|
||||
E924 quickfix.txt /*E924*
|
||||
E925 quickfix.txt /*E925*
|
||||
E926 quickfix.txt /*E926*
|
||||
E927 eval.txt /*E927*
|
||||
E928 eval.txt /*E928*
|
||||
E93 windows.txt /*E93*
|
||||
E94 windows.txt /*E94*
|
||||
E95 message.txt /*E95*
|
||||
@@ -4539,6 +4545,7 @@ G motion.txt /*G*
|
||||
GNOME gui_x11.txt /*GNOME*
|
||||
GTK gui_x11.txt /*GTK*
|
||||
GTK+ gui_x11.txt /*GTK+*
|
||||
GTK3 gui_x11.txt /*GTK3*
|
||||
GUI gui.txt /*GUI*
|
||||
GUI-X11 gui_x11.txt /*GUI-X11*
|
||||
GUIEnter autocmd.txt /*GUIEnter*
|
||||
@@ -4561,6 +4568,7 @@ InsertLeave autocmd.txt /*InsertLeave*
|
||||
J change.txt /*J*
|
||||
Japanese mbyte.txt /*Japanese*
|
||||
Job eval.txt /*Job*
|
||||
Jobs eval.txt /*Jobs*
|
||||
K various.txt /*K*
|
||||
KDE gui_x11.txt /*KDE*
|
||||
KVim gui_x11.txt /*KVim*
|
||||
@@ -4928,6 +4936,7 @@ add-filetype-plugin usr_05.txt /*add-filetype-plugin*
|
||||
add-global-plugin usr_05.txt /*add-global-plugin*
|
||||
add-local-help usr_05.txt /*add-local-help*
|
||||
add-option-flags options.txt /*add-option-flags*
|
||||
add-package usr_05.txt /*add-package*
|
||||
add-plugin usr_05.txt /*add-plugin*
|
||||
added-5.1 version5.txt /*added-5.1*
|
||||
added-5.2 version5.txt /*added-5.2*
|
||||
@@ -4990,6 +4999,9 @@ assert_equal() eval.txt /*assert_equal()*
|
||||
assert_exception() eval.txt /*assert_exception()*
|
||||
assert_fails() eval.txt /*assert_fails()*
|
||||
assert_false() eval.txt /*assert_false()*
|
||||
assert_match() eval.txt /*assert_match()*
|
||||
assert_notequal() eval.txt /*assert_notequal()*
|
||||
assert_notmatch() eval.txt /*assert_notmatch()*
|
||||
assert_true() eval.txt /*assert_true()*
|
||||
at motion.txt /*at*
|
||||
atan() eval.txt /*atan()*
|
||||
@@ -5111,6 +5123,7 @@ bufwinnr() eval.txt /*bufwinnr()*
|
||||
bug-fixes-5 version5.txt /*bug-fixes-5*
|
||||
bug-fixes-6 version6.txt /*bug-fixes-6*
|
||||
bug-fixes-7 version7.txt /*bug-fixes-7*
|
||||
bug-fixes-8 version8.txt /*bug-fixes-8*
|
||||
bug-reports intro.txt /*bug-reports*
|
||||
bugreport.vim intro.txt /*bugreport.vim*
|
||||
bugs intro.txt /*bugs*
|
||||
@@ -5204,7 +5217,25 @@ c_Insert cmdline.txt /*c_Insert*
|
||||
c_Left cmdline.txt /*c_Left*
|
||||
c_Right cmdline.txt /*c_Right*
|
||||
c_Up cmdline.txt /*c_Up*
|
||||
c_ansi_constants syntax.txt /*c_ansi_constants*
|
||||
c_ansi_typedefs syntax.txt /*c_ansi_typedefs*
|
||||
c_comment_strings syntax.txt /*c_comment_strings*
|
||||
c_curly_error syntax.txt /*c_curly_error*
|
||||
c_digraph cmdline.txt /*c_digraph*
|
||||
c_gnu syntax.txt /*c_gnu*
|
||||
c_no_ansi syntax.txt /*c_no_ansi*
|
||||
c_no_bracket_error syntax.txt /*c_no_bracket_error*
|
||||
c_no_bsd syntax.txt /*c_no_bsd*
|
||||
c_no_c11 syntax.txt /*c_no_c11*
|
||||
c_no_c99 syntax.txt /*c_no_c99*
|
||||
c_no_cformat syntax.txt /*c_no_cformat*
|
||||
c_no_curly_error syntax.txt /*c_no_curly_error*
|
||||
c_no_if0 syntax.txt /*c_no_if0*
|
||||
c_no_tab_space_error syntax.txt /*c_no_tab_space_error*
|
||||
c_no_trail_space_error syntax.txt /*c_no_trail_space_error*
|
||||
c_no_utf syntax.txt /*c_no_utf*
|
||||
c_space_errors syntax.txt /*c_space_errors*
|
||||
c_syntax_for_h syntax.txt /*c_syntax_for_h*
|
||||
c_wildchar cmdline.txt /*c_wildchar*
|
||||
call() eval.txt /*call()*
|
||||
carriage-return intro.txt /*carriage-return*
|
||||
@@ -5222,6 +5253,7 @@ ch_evalexpr() eval.txt /*ch_evalexpr()*
|
||||
ch_evalraw() eval.txt /*ch_evalraw()*
|
||||
ch_getbufnr() eval.txt /*ch_getbufnr()*
|
||||
ch_getjob() eval.txt /*ch_getjob()*
|
||||
ch_info() eval.txt /*ch_info()*
|
||||
ch_log() eval.txt /*ch_log()*
|
||||
ch_logfile() eval.txt /*ch_logfile()*
|
||||
ch_open() eval.txt /*ch_open()*
|
||||
@@ -5264,7 +5296,9 @@ channel-demo channel.txt /*channel-demo*
|
||||
channel-mode channel.txt /*channel-mode*
|
||||
channel-more channel.txt /*channel-more*
|
||||
channel-open channel.txt /*channel-open*
|
||||
channel-open-options channel.txt /*channel-open-options*
|
||||
channel-raw channel.txt /*channel-raw*
|
||||
channel-timeout channel.txt /*channel-timeout*
|
||||
channel-use channel.txt /*channel-use*
|
||||
channel.txt channel.txt /*channel.txt*
|
||||
char-variable eval.txt /*char-variable*
|
||||
@@ -5330,7 +5364,7 @@ clipboard-html options.txt /*clipboard-html*
|
||||
clipboard-unnamed options.txt /*clipboard-unnamed*
|
||||
clipboard-unnamedplus options.txt /*clipboard-unnamedplus*
|
||||
clojure-indent indent.txt /*clojure-indent*
|
||||
close-cb channel.txt /*close-cb*
|
||||
close_cb channel.txt /*close_cb*
|
||||
cmd-key gui_mac.txt /*cmd-key*
|
||||
cmd-movement gui_mac.txt /*cmd-movement*
|
||||
cmd-shortcuts gui_mac.txt /*cmd-shortcuts*
|
||||
@@ -5365,6 +5399,7 @@ compatible-default starting.txt /*compatible-default*
|
||||
compile-changes-5 version5.txt /*compile-changes-5*
|
||||
compile-changes-6 version6.txt /*compile-changes-6*
|
||||
compile-changes-7 version7.txt /*compile-changes-7*
|
||||
compile-changes-8 version8.txt /*compile-changes-8*
|
||||
compiler-compaqada ft_ada.txt /*compiler-compaqada*
|
||||
compiler-decada ft_ada.txt /*compiler-decada*
|
||||
compiler-gcc quickfix.txt /*compiler-gcc*
|
||||
@@ -5698,10 +5733,11 @@ end intro.txt /*end*
|
||||
end-of-file pattern.txt /*end-of-file*
|
||||
enlightened-terminal syntax.txt /*enlightened-terminal*
|
||||
erlang.vim syntax.txt /*erlang.vim*
|
||||
err-buf channel.txt /*err-buf*
|
||||
err-cb channel.txt /*err-cb*
|
||||
err-name channel.txt /*err-name*
|
||||
err-timeout channel.txt /*err-timeout*
|
||||
err_buf channel.txt /*err_buf*
|
||||
err_cb channel.txt /*err_cb*
|
||||
err_mode channel.txt /*err_mode*
|
||||
err_name channel.txt /*err_name*
|
||||
err_timeout channel.txt /*err_timeout*
|
||||
errmsg-variable eval.txt /*errmsg-variable*
|
||||
error-file-format quickfix.txt /*error-file-format*
|
||||
error-messages message.txt /*error-messages*
|
||||
@@ -6284,6 +6320,7 @@ g:netrw_special_syntax pi_netrw.txt /*g:netrw_special_syntax*
|
||||
g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject*
|
||||
g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd*
|
||||
g:netrw_sshport pi_netrw.txt /*g:netrw_sshport*
|
||||
g:netrw_suppress_gx_mesg pi_netrw.txt /*g:netrw_suppress_gx_mesg*
|
||||
g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt*
|
||||
g:netrw_tmpfile_escape pi_netrw.txt /*g:netrw_tmpfile_escape*
|
||||
g:netrw_uid pi_netrw.txt /*g:netrw_uid*
|
||||
@@ -6369,6 +6406,7 @@ g` motion.txt /*g`*
|
||||
g`a motion.txt /*g`a*
|
||||
ga various.txt /*ga*
|
||||
garbagecollect() eval.txt /*garbagecollect()*
|
||||
garbagecollect_for_testing() eval.txt /*garbagecollect_for_testing()*
|
||||
gd pattern.txt /*gd*
|
||||
gdb debug.txt /*gdb*
|
||||
ge motion.txt /*ge*
|
||||
@@ -6824,10 +6862,12 @@ improved-viminfo version5.txt /*improved-viminfo*
|
||||
improvements-5 version5.txt /*improvements-5*
|
||||
improvements-6 version6.txt /*improvements-6*
|
||||
improvements-7 version7.txt /*improvements-7*
|
||||
in-bot channel.txt /*in-bot*
|
||||
in-buf channel.txt /*in-buf*
|
||||
in-name channel.txt /*in-name*
|
||||
in-top channel.txt /*in-top*
|
||||
improvements-8 version8.txt /*improvements-8*
|
||||
in_bot channel.txt /*in_bot*
|
||||
in_buf channel.txt /*in_buf*
|
||||
in_mode channel.txt /*in_mode*
|
||||
in_name channel.txt /*in_name*
|
||||
in_top channel.txt /*in_top*
|
||||
inactive-buffer windows.txt /*inactive-buffer*
|
||||
include-search tagsrch.txt /*include-search*
|
||||
inclusive motion.txt /*inclusive*
|
||||
@@ -6835,6 +6875,7 @@ incomp-small-6 version6.txt /*incomp-small-6*
|
||||
incompatible-5 version5.txt /*incompatible-5*
|
||||
incompatible-6 version6.txt /*incompatible-6*
|
||||
incompatible-7 version7.txt /*incompatible-7*
|
||||
incompatible-8 version8.txt /*incompatible-8*
|
||||
indent() eval.txt /*indent()*
|
||||
indent-expression indent.txt /*indent-expression*
|
||||
indent.txt indent.txt /*indent.txt*
|
||||
@@ -6905,21 +6946,23 @@ javascript-indenting indent.txt /*javascript-indenting*
|
||||
job channel.txt /*job*
|
||||
job-callback channel.txt /*job-callback*
|
||||
job-channel-overview channel.txt /*job-channel-overview*
|
||||
job-close-cb channel.txt /*job-close-cb*
|
||||
job-close_cb channel.txt /*job-close_cb*
|
||||
job-control channel.txt /*job-control*
|
||||
job-err-cb channel.txt /*job-err-cb*
|
||||
job-err-io channel.txt /*job-err-io*
|
||||
job-exit-cb channel.txt /*job-exit-cb*
|
||||
job-in-io channel.txt /*job-in-io*
|
||||
job-err_cb channel.txt /*job-err_cb*
|
||||
job-err_io channel.txt /*job-err_io*
|
||||
job-exit_cb channel.txt /*job-exit_cb*
|
||||
job-in_io channel.txt /*job-in_io*
|
||||
job-options channel.txt /*job-options*
|
||||
job-out-cb channel.txt /*job-out-cb*
|
||||
job-out-io channel.txt /*job-out-io*
|
||||
job-out_cb channel.txt /*job-out_cb*
|
||||
job-out_io channel.txt /*job-out_io*
|
||||
job-start channel.txt /*job-start*
|
||||
job-start-if-needed channel.txt /*job-start-if-needed*
|
||||
job-start-nochannel channel.txt /*job-start-nochannel*
|
||||
job-stoponexit channel.txt /*job-stoponexit*
|
||||
job-term channel.txt /*job-term*
|
||||
job-timeout channel.txt /*job-timeout*
|
||||
job_getchannel() eval.txt /*job_getchannel()*
|
||||
job_info() eval.txt /*job_info()*
|
||||
job_setoptions() eval.txt /*job_setoptions()*
|
||||
job_start() eval.txt /*job_start()*
|
||||
job_status() eval.txt /*job_status()*
|
||||
@@ -7026,18 +7069,19 @@ location-list quickfix.txt /*location-list*
|
||||
location-list-window quickfix.txt /*location-list-window*
|
||||
log() eval.txt /*log()*
|
||||
log10() eval.txt /*log10()*
|
||||
logipat pi_logipat.txt /*logipat*
|
||||
logipat-arg pi_logipat.txt /*logipat-arg*
|
||||
logipat-caveat pi_logipat.txt /*logipat-caveat*
|
||||
logipat-contents pi_logipat.txt /*logipat-contents*
|
||||
logipat-copyright pi_logipat.txt /*logipat-copyright*
|
||||
logipat-examples pi_logipat.txt /*logipat-examples*
|
||||
logipat-history pi_logipat.txt /*logipat-history*
|
||||
logipat-input pi_logipat.txt /*logipat-input*
|
||||
logipat-man pi_logipat.txt /*logipat-man*
|
||||
logipat-manual pi_logipat.txt /*logipat-manual*
|
||||
logipat-operators pi_logipat.txt /*logipat-operators*
|
||||
logipat-pattern pi_logipat.txt /*logipat-pattern*
|
||||
logiPat pi_logipat.txt /*logiPat*
|
||||
logiPat-arg pi_logipat.txt /*logiPat-arg*
|
||||
logiPat-caveat pi_logipat.txt /*logiPat-caveat*
|
||||
logiPat-contents pi_logipat.txt /*logiPat-contents*
|
||||
logiPat-copyright pi_logipat.txt /*logiPat-copyright*
|
||||
logiPat-examples pi_logipat.txt /*logiPat-examples*
|
||||
logiPat-history pi_logipat.txt /*logiPat-history*
|
||||
logiPat-input pi_logipat.txt /*logiPat-input*
|
||||
logiPat-man pi_logipat.txt /*logiPat-man*
|
||||
logiPat-manual pi_logipat.txt /*logiPat-manual*
|
||||
logiPat-operators pi_logipat.txt /*logiPat-operators*
|
||||
logiPat-pattern pi_logipat.txt /*logiPat-pattern*
|
||||
logiPat.txt pi_logipat.txt /*logiPat.txt*
|
||||
long-lines version5.txt /*long-lines*
|
||||
love intro.txt /*love*
|
||||
lowercase change.txt /*lowercase*
|
||||
@@ -7109,6 +7153,7 @@ maillist intro.txt /*maillist*
|
||||
maillist-archive intro.txt /*maillist-archive*
|
||||
make.vim syntax.txt /*make.vim*
|
||||
man.vim filetype.txt /*man.vim*
|
||||
manpager.vim filetype.txt /*manpager.vim*
|
||||
manual-copyright usr_01.txt /*manual-copyright*
|
||||
map() eval.txt /*map()*
|
||||
map-<SID> map.txt /*map-<SID>*
|
||||
@@ -7175,6 +7220,7 @@ matchit-install usr_05.txt /*matchit-install*
|
||||
matchlist() eval.txt /*matchlist()*
|
||||
matchparen pi_paren.txt /*matchparen*
|
||||
matchstr() eval.txt /*matchstr()*
|
||||
matchstrpos() eval.txt /*matchstrpos()*
|
||||
max() eval.txt /*max()*
|
||||
mbyte-IME mbyte.txt /*mbyte-IME*
|
||||
mbyte-XIM mbyte.txt /*mbyte-XIM*
|
||||
@@ -7523,6 +7569,7 @@ network pi_netrw.txt /*network*
|
||||
new-5 version5.txt /*new-5*
|
||||
new-6 version6.txt /*new-6*
|
||||
new-7 version7.txt /*new-7*
|
||||
new-8 version8.txt /*new-8*
|
||||
new-GTK-GUI version5.txt /*new-GTK-GUI*
|
||||
new-MzScheme version7.txt /*new-MzScheme*
|
||||
new-Select-mode version5.txt /*new-Select-mode*
|
||||
@@ -7555,6 +7602,7 @@ new-highlighting version5.txt /*new-highlighting*
|
||||
new-indent-flex version6.txt /*new-indent-flex*
|
||||
new-items-6 version6.txt /*new-items-6*
|
||||
new-items-7 version7.txt /*new-items-7*
|
||||
new-items-8 version8.txt /*new-items-8*
|
||||
new-line-continuation version5.txt /*new-line-continuation*
|
||||
new-location-list version7.txt /*new-location-list*
|
||||
new-lua version7.txt /*new-lua*
|
||||
@@ -7597,6 +7645,7 @@ new-user-manual version6.txt /*new-user-manual*
|
||||
new-utf-8 version6.txt /*new-utf-8*
|
||||
new-vertsplit version6.txt /*new-vertsplit*
|
||||
new-vim-script version7.txt /*new-vim-script*
|
||||
new-vim-script-8 version8.txt /*new-vim-script-8*
|
||||
new-vim-server version6.txt /*new-vim-server*
|
||||
new-vimgrep version7.txt /*new-vimgrep*
|
||||
new-virtedit version6.txt /*new-virtedit*
|
||||
@@ -7604,6 +7653,7 @@ news intro.txt /*news*
|
||||
nextnonblank() eval.txt /*nextnonblank()*
|
||||
nice todo.txt /*nice*
|
||||
no-eval-feature eval.txt /*no-eval-feature*
|
||||
no-type-checking eval.txt /*no-type-checking*
|
||||
no_buffers_menu gui.txt /*no_buffers_menu*
|
||||
non-greedy pattern.txt /*non-greedy*
|
||||
non-zero-arg eval.txt /*non-zero-arg*
|
||||
@@ -7673,13 +7723,16 @@ os_unix.txt os_unix.txt /*os_unix.txt*
|
||||
os_vms.txt os_vms.txt /*os_vms.txt*
|
||||
os_win32.txt os_win32.txt /*os_win32.txt*
|
||||
other-features vi_diff.txt /*other-features*
|
||||
out-buf channel.txt /*out-buf*
|
||||
out-cb channel.txt /*out-cb*
|
||||
out-name channel.txt /*out-name*
|
||||
out-timeout channel.txt /*out-timeout*
|
||||
out_buf channel.txt /*out_buf*
|
||||
out_cb channel.txt /*out_cb*
|
||||
out_mode channel.txt /*out_mode*
|
||||
out_name channel.txt /*out_name*
|
||||
out_timeout channel.txt /*out_timeout*
|
||||
p change.txt /*p*
|
||||
pack-add repeat.txt /*pack-add*
|
||||
package-create repeat.txt /*package-create*
|
||||
packages repeat.txt /*packages*
|
||||
packload-two-steps repeat.txt /*packload-two-steps*
|
||||
page-down intro.txt /*page-down*
|
||||
page-up intro.txt /*page-up*
|
||||
page_down intro.txt /*page_down*
|
||||
@@ -7688,6 +7741,7 @@ pager message.txt /*pager*
|
||||
papp.vim syntax.txt /*papp.vim*
|
||||
paragraph motion.txt /*paragraph*
|
||||
pascal.vim syntax.txt /*pascal.vim*
|
||||
patches-8 version8.txt /*patches-8*
|
||||
pathshorten() eval.txt /*pathshorten()*
|
||||
pattern pattern.txt /*pattern*
|
||||
pattern-atoms pattern.txt /*pattern-atoms*
|
||||
@@ -7739,7 +7793,6 @@ php3.vim syntax.txt /*php3.vim*
|
||||
phtml.vim syntax.txt /*phtml.vim*
|
||||
pi_getscript.txt pi_getscript.txt /*pi_getscript.txt*
|
||||
pi_gzip.txt pi_gzip.txt /*pi_gzip.txt*
|
||||
pi_logipat.txt pi_logipat.txt /*pi_logipat.txt*
|
||||
pi_netrw.txt pi_netrw.txt /*pi_netrw.txt*
|
||||
pi_paren.txt pi_paren.txt /*pi_paren.txt*
|
||||
pi_spec.txt pi_spec.txt /*pi_spec.txt*
|
||||
@@ -7917,6 +7970,7 @@ r change.txt /*r*
|
||||
range() eval.txt /*range()*
|
||||
raw-terminal-mode term.txt /*raw-terminal-mode*
|
||||
rcp pi_netrw.txt /*rcp*
|
||||
read-in-close-cb channel.txt /*read-in-close-cb*
|
||||
read-messages insert.txt /*read-messages*
|
||||
read-only-share editing.txt /*read-only-share*
|
||||
read-stdin version5.txt /*read-stdin*
|
||||
@@ -7940,6 +7994,7 @@ registers change.txt /*registers*
|
||||
regular-expression pattern.txt /*regular-expression*
|
||||
reload editing.txt /*reload*
|
||||
reltime() eval.txt /*reltime()*
|
||||
reltimefloat() eval.txt /*reltimefloat()*
|
||||
reltimestr() eval.txt /*reltimestr()*
|
||||
remote.txt remote.txt /*remote.txt*
|
||||
remote_expr() eval.txt /*remote_expr()*
|
||||
@@ -8293,15 +8348,16 @@ startup-terminal term.txt /*startup-terminal*
|
||||
static-tag tagsrch.txt /*static-tag*
|
||||
status-line windows.txt /*status-line*
|
||||
statusmsg-variable eval.txt /*statusmsg-variable*
|
||||
sticky-type-checking eval.txt /*sticky-type-checking*
|
||||
str2float() eval.txt /*str2float()*
|
||||
str2nr() eval.txt /*str2nr()*
|
||||
strcasestr() eval.txt /*strcasestr()*
|
||||
strcharpart() eval.txt /*strcharpart()*
|
||||
strchars() eval.txt /*strchars()*
|
||||
strchr() eval.txt /*strchr()*
|
||||
strcspn() eval.txt /*strcspn()*
|
||||
strdisplaywidth() eval.txt /*strdisplaywidth()*
|
||||
strftime() eval.txt /*strftime()*
|
||||
strgetchar() eval.txt /*strgetchar()*
|
||||
stridx() eval.txt /*stridx()*
|
||||
string eval.txt /*string*
|
||||
string() eval.txt /*string()*
|
||||
@@ -8330,6 +8386,7 @@ sub-replace-special change.txt /*sub-replace-special*
|
||||
sublist eval.txt /*sublist*
|
||||
submatch() eval.txt /*submatch()*
|
||||
subscribe-maillist intro.txt /*subscribe-maillist*
|
||||
subscript eval.txt /*subscript*
|
||||
substitute() eval.txt /*substitute()*
|
||||
substitute-CR version6.txt /*substitute-CR*
|
||||
suffixes cmdline.txt /*suffixes*
|
||||
@@ -8379,6 +8436,8 @@ t_#4 term.txt /*t_#4*
|
||||
t_%1 term.txt /*t_%1*
|
||||
t_%i term.txt /*t_%i*
|
||||
t_&8 term.txt /*t_&8*
|
||||
t_8b term.txt /*t_8b*
|
||||
t_8f term.txt /*t_8f*
|
||||
t_@7 term.txt /*t_@7*
|
||||
t_AB term.txt /*t_AB*
|
||||
t_AF term.txt /*t_AF*
|
||||
@@ -8645,6 +8704,7 @@ terminal-options term.txt /*terminal-options*
|
||||
terminfo term.txt /*terminfo*
|
||||
termresponse-variable eval.txt /*termresponse-variable*
|
||||
test-functions usr_41.txt /*test-functions*
|
||||
testing-variable eval.txt /*testing-variable*
|
||||
tex-cchar syntax.txt /*tex-cchar*
|
||||
tex-cole syntax.txt /*tex-cole*
|
||||
tex-conceal syntax.txt /*tex-conceal*
|
||||
@@ -8674,6 +8734,8 @@ throw-from-catch eval.txt /*throw-from-catch*
|
||||
throw-variables eval.txt /*throw-variables*
|
||||
throwpoint-variable eval.txt /*throwpoint-variable*
|
||||
time-functions usr_41.txt /*time-functions*
|
||||
timer_start() eval.txt /*timer_start()*
|
||||
timer_stop() eval.txt /*timer_stop()*
|
||||
timestamp editing.txt /*timestamp*
|
||||
timestamps editing.txt /*timestamps*
|
||||
tips tips.txt /*tips*
|
||||
@@ -8839,12 +8901,14 @@ v:swapchoice eval.txt /*v:swapchoice*
|
||||
v:swapcommand eval.txt /*v:swapcommand*
|
||||
v:swapname eval.txt /*v:swapname*
|
||||
v:termresponse eval.txt /*v:termresponse*
|
||||
v:testing eval.txt /*v:testing*
|
||||
v:this_session eval.txt /*v:this_session*
|
||||
v:throwpoint eval.txt /*v:throwpoint*
|
||||
v:true eval.txt /*v:true*
|
||||
v:val eval.txt /*v:val*
|
||||
v:var eval.txt /*v:var*
|
||||
v:version eval.txt /*v:version*
|
||||
v:vim_did_enter eval.txt /*v:vim_did_enter*
|
||||
v:warningmsg eval.txt /*v:warningmsg*
|
||||
v:windowid eval.txt /*v:windowid*
|
||||
v_! change.txt /*v_!*
|
||||
@@ -8986,6 +9050,7 @@ version-7.1 version7.txt /*version-7.1*
|
||||
version-7.2 version7.txt /*version-7.2*
|
||||
version-7.3 version7.txt /*version-7.3*
|
||||
version-7.4 version7.txt /*version-7.4*
|
||||
version-8.0 version8.txt /*version-8.0*
|
||||
version-variable eval.txt /*version-variable*
|
||||
version4.txt version4.txt /*version4.txt*
|
||||
version5.txt version5.txt /*version5.txt*
|
||||
@@ -8996,6 +9061,8 @@ version7.2 version7.txt /*version7.2*
|
||||
version7.3 version7.txt /*version7.3*
|
||||
version7.4 version7.txt /*version7.4*
|
||||
version7.txt version7.txt /*version7.txt*
|
||||
version8.0 version8.txt /*version8.0*
|
||||
version8.txt version8.txt /*version8.txt*
|
||||
vi intro.txt /*vi*
|
||||
vi-differences vi_diff.txt /*vi-differences*
|
||||
vi: options.txt /*vi:*
|
||||
@@ -9004,6 +9071,8 @@ view starting.txt /*view*
|
||||
view-diffs diff.txt /*view-diffs*
|
||||
view-file starting.txt /*view-file*
|
||||
views-sessions starting.txt /*views-sessions*
|
||||
vim-7.4 version7.txt /*vim-7.4*
|
||||
vim-8 version8.txt /*vim-8*
|
||||
vim-additions vi_diff.txt /*vim-additions*
|
||||
vim-announce intro.txt /*vim-announce*
|
||||
vim-arguments starting.txt /*vim-arguments*
|
||||
@@ -9017,8 +9086,11 @@ vim-script-intro usr_41.txt /*vim-script-intro*
|
||||
vim-variable eval.txt /*vim-variable*
|
||||
vim.vim syntax.txt /*vim.vim*
|
||||
vim7 version7.txt /*vim7*
|
||||
vim8 version8.txt /*vim8*
|
||||
vim: options.txt /*vim:*
|
||||
vim_did_enter-variable eval.txt /*vim_did_enter-variable*
|
||||
vim_mac gui_mac.txt /*vim_mac*
|
||||
vim_starting eval.txt /*vim_starting*
|
||||
vimball pi_vimball.txt /*vimball*
|
||||
vimball-contents pi_vimball.txt /*vimball-contents*
|
||||
vimball-extract pi_vimball.txt /*vimball-extract*
|
||||
@@ -9123,6 +9195,11 @@ win32-term os_win32.txt /*win32-term*
|
||||
win32-vimrun gui_w32.txt /*win32-vimrun*
|
||||
win32-win3.1 os_win32.txt /*win32-win3.1*
|
||||
win32s os_win32.txt /*win32s*
|
||||
win_findbuf() eval.txt /*win_findbuf()*
|
||||
win_getid() eval.txt /*win_getid()*
|
||||
win_gotoid() eval.txt /*win_gotoid()*
|
||||
win_id2tabwin() eval.txt /*win_id2tabwin()*
|
||||
win_id2win() eval.txt /*win_id2win()*
|
||||
winbufnr() eval.txt /*winbufnr()*
|
||||
wincol() eval.txt /*wincol()*
|
||||
window windows.txt /*window*
|
||||
@@ -9216,6 +9293,7 @@ xterm-save-screen tips.txt /*xterm-save-screen*
|
||||
xterm-screens tips.txt /*xterm-screens*
|
||||
xterm-scroll-region term.txt /*xterm-scroll-region*
|
||||
xterm-shifted-keys term.txt /*xterm-shifted-keys*
|
||||
xterm-true-color term.txt /*xterm-true-color*
|
||||
y change.txt /*y*
|
||||
yaml.vim syntax.txt /*yaml.vim*
|
||||
yank change.txt /*yank*
|
||||
|
||||
+26
-3
@@ -1,4 +1,4 @@
|
||||
*term.txt* For Vim version 7.4. Last change: 2015 Nov 24
|
||||
*term.txt* For Vim version 7.4. Last change: 2016 Apr 29
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -302,7 +302,10 @@ Added by Vim (there are no standard codes for these):
|
||||
t_u7 request cursor position (for xterm) *t_u7* *'t_u7'*
|
||||
see |'ambiwidth'|
|
||||
t_RB request terminal background color *t_RB* *'t_RB'*
|
||||
see |'ambiwidth'|
|
||||
t_8f set foreground color (R, G, B) *t_8f* *'t_8f'*
|
||||
|xterm-true-color|
|
||||
t_8b set background color (R, G, B) *t_8b* *'t_8b'*
|
||||
|xterm-true-color|
|
||||
|
||||
KEY CODES
|
||||
Note: Use the <> form if possible
|
||||
@@ -419,6 +422,26 @@ VT220, etc.). The result is that codes like <xF1> are no longer needed.
|
||||
Note: This is only done on startup. If the xterm options are changed after
|
||||
Vim has started, the escape sequences may not be recognized anymore.
|
||||
|
||||
*xterm-true-color*
|
||||
Vim supports using true colors in the terminal (taken from |highlight-guifg|
|
||||
and |highlight-guibg|), given that the terminal supports this. To make this
|
||||
work the 'termguicolors' option needs to be set.
|
||||
|
||||
Sometimes setting 'termguicolors' is not enough and one has to set the |t_8f|
|
||||
and |t_8b| options explicitly. Default values of these options are
|
||||
"^[[38;2;%lu;%lu;%lum" and "^[[48;2;%lu;%lu;%lum" respectively, but it is only
|
||||
set when `$TERM` is `xterm`. Some terminals accept the same sequences, but
|
||||
with all semicolons replaced by colons (this is actually more compatible, but
|
||||
less widely supported): >
|
||||
set t_8f=^[[38:2:%lu:%lu:%lum
|
||||
set t_8b=^[[48:2:%lu:%lu:%lum
|
||||
(replace `^[` with real escape)
|
||||
|
||||
These options contain printf strings, with |printf()| (actually, its C
|
||||
equivalent hence `l` modifier) invoked with the t_ option value and three
|
||||
unsigned long integers that may have any value between 0 and 255 (inclusive)
|
||||
representing red, green and blue colors respectively.
|
||||
|
||||
*xterm-resize*
|
||||
Window resizing with xterm only works if the allowWindowOps resource is
|
||||
enabled. On some systems and versions of xterm it's disabled by default
|
||||
@@ -542,7 +565,7 @@ correct values.
|
||||
|
||||
One command can be used to set the screen size:
|
||||
|
||||
*:mod* *:mode* *E359* *E362*
|
||||
*:mod* *:mode* *E359*
|
||||
:mod[e] [mode]
|
||||
|
||||
Without argument this only detects the screen size and redraws the screen.
|
||||
|
||||
+159
-149
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 7.4. Last change: 2016 Mar 11
|
||||
*todo.txt* For Vim version 7.4. Last change: 2016 Apr 30
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -27,102 +27,68 @@ Priority classification:
|
||||
See |develop.txt| for development plans. You can vote for which items should
|
||||
be worked on, but only if you sponsor Vim development. See |sponsor|.
|
||||
|
||||
Issues can also be entered online: http://code.google.com/p/vim/issues/list
|
||||
Issues can also be entered online: https://github.com/vim/vim/issues
|
||||
Updates will be forwarded to the vim_dev maillist. Issues entered there will
|
||||
not be repeated below, unless there is extra information.
|
||||
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
Athena version doesn't start up. Related to termguicolors change. (Kelvin
|
||||
Lee)
|
||||
|
||||
Test_out_close_cb sometimes fails.
|
||||
Why is DETACH not send to OutHandler()?
|
||||
|
||||
Vim reliably crashes when freeing the job and operator-pending mode is active.
|
||||
(James McCoy, 2016 Apr 26)
|
||||
|
||||
Using close callback to read output doesn't work reliably.
|
||||
(Andrew Stewart, 2016 Apr 27)
|
||||
|
||||
problem with "Ignore" after adding 'guicolors'. (Charles Campbell, 2016 Apr
|
||||
27)
|
||||
|
||||
In test_partial when start_job() has a non-existing command memory leaks.
|
||||
|
||||
Memory leak in test49
|
||||
Memory leak in test_alot, with matchstrpos()
|
||||
|
||||
Packages:
|
||||
Also keep a list of loaded plugins, skip when encountered again?
|
||||
|
||||
Vim.org: when a user already has a homepage, do show the field so that it can
|
||||
be deleted.
|
||||
|
||||
Running gvim from Agide causes a crash.
|
||||
|
||||
+channel:
|
||||
- CHANNEL_PIPES -> FEAT_JOB
|
||||
- FEAT_JOB / FEAT_CHANNEL -> FEAT_JOBCHANNEL ?
|
||||
- move code from eval.c to channel.c
|
||||
- add job_info(): process ID, run/dead, etc.
|
||||
- add ch_info(): in/out/err mode, timeout, callbacks, etc.
|
||||
- Move more details from eval.txt to channel.txt. Add tags in eval.txt.
|
||||
- When receiving malformed json starting with a quote it doesn't get
|
||||
discarded. Any invalid JSON or JSON that isn't a list will block further
|
||||
parsing?
|
||||
- When decoding json, don't read all the typeahead at once, use the reader
|
||||
properly.
|
||||
- Only add DETACH message for netbeans.
|
||||
- GUI:cursor blinking is irregular when invoking callbacks. (Ramel Eshed, 2016
|
||||
Apr 16) somehow remember the previous state?
|
||||
- When a message in the queue but there is no callback, drop it after a while?
|
||||
Add timestamp to queued messages and callbacks with ID, remove after a
|
||||
minute. Option to set the droptime.
|
||||
- Add more ch_log calls, basically at every branch, before every callback, etc.
|
||||
- Add remark about undo sync, is there a way to force it?
|
||||
- When starting a job, have an option to open the server socket, so we know
|
||||
the port, and pass it to the command with --socket-fd {nr}. (Olaf Dabrunz,
|
||||
Feb 9) How to do this on MS-Windows?
|
||||
- Add more unit-testing in json_test.c
|
||||
- Add a test where ["eval","getline(123)"] gets a line with special
|
||||
characters (NUL, 0x80, etc.). Check that it isn't garbled.
|
||||
- Make sure errors lead to a useful error msg. ["ex","foobar"]
|
||||
- For connection to server, a "keep open" flag would be useful. Retry
|
||||
connecting in the main loop with zero timeout.
|
||||
Later
|
||||
- job_start(): run job in a newly opened terminal.
|
||||
With xterm could use -S{pty}.
|
||||
|
||||
emoji patch from Yasuhiro Matsumoto. Asked Thomas Dickey.
|
||||
Make it so that the window ID can be used where currently a window nr is used
|
||||
|
||||
Remove sticky type checking.
|
||||
|
||||
Packages:
|
||||
- Add command to update help tags in 'runtimepath'. Pathogen has something
|
||||
like that.
|
||||
- colorscheme command in .vimrc doesn't work.
|
||||
- Also search in 'packpath', both "start" and "opt", don't add dir to 'rtp'
|
||||
- command like :runtime that also search 'packpath'. :packruntime
|
||||
use "ever" or "opt"? both?
|
||||
- command to load packages now?
|
||||
|
||||
More plugin support:
|
||||
- Have a way to install a callback from the main loop. Called every second or
|
||||
so.
|
||||
- Need way to uniquely identify a window, no matter how windows are
|
||||
rearranged. Same for tab pages.
|
||||
getwinid() ID of current winow
|
||||
getwinid({nr}) ID of window {nr}
|
||||
getwinid({nr}, {tab}) ID of window {nr} in tab page {tab}
|
||||
getwinnr({id}) window nr of {id} or -1 if not open
|
||||
gettabnr({id}) tab page nr of {id} or -1 if not open
|
||||
gotowin({id})
|
||||
Make it so that the window ID can be used where currently a window nr is used
|
||||
Patch from Anton Lindqvist, 2016 Feb 21, to make bufwinnr() return a list.
|
||||
Perhaps add bufwinid() instead.
|
||||
|
||||
This difference is unexpected:
|
||||
echo v:true == 1
|
||||
1
|
||||
echo [v:true] == [1]
|
||||
0
|
||||
It's because tv_equal() works different.
|
||||
|
||||
Compiler warnings. (John Marriott, Feb 17)
|
||||
|
||||
Compiler warnings in if_ole.cpp. Patch by Ken Takata, Feb 18.
|
||||
|
||||
When running "make install" don't overwrite the doc/tags file, generate it
|
||||
elsewhere, so that the distributed file doesn't change.
|
||||
|
||||
Fix to support --nofork for Windows batch files. (Kevin Cantú, 2016 Feb 23,
|
||||
#658, #659) Also add "setlocal" at top of batch file?
|
||||
|
||||
Patch to add matchstrpos(). (Ozaki Kiichi, 2016 Feb 28)
|
||||
|
||||
Why does this: echo "a" . 1.1
|
||||
result in: a11
|
||||
Should recognize float (so long as it's not ".1.1").
|
||||
|
||||
Allow for an empty dictionary key?
|
||||
|
||||
Patch to improve I/O for Perl. (Damien, 2016 Jan 9, update Jan 22 2nd one)
|
||||
|
||||
Patch to fix ml_get error. (Alexander Freiherr von Buddenbrock, 2016 Mar 4,
|
||||
#676)
|
||||
Patch to fix invalid behavior with NULL list. (Nikolai Pavlov, #768)
|
||||
Also check :for.
|
||||
|
||||
Regexp problems:
|
||||
- Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
|
||||
(Manuel Ortega, 2016 Apr 24)
|
||||
Test fails on Mac. Avoid using isalpha(), isalnum(), etc? Depends on
|
||||
LC_CTYPE
|
||||
- The regexp engines are not reentrant, causing havoc when interrupted by a
|
||||
remote expression or something else. Move global variables onto the stack
|
||||
or into an allocated struct.
|
||||
@@ -143,6 +109,7 @@ Regexp problems:
|
||||
- NFA regexp doesn't handle \%<v correctly. (Ingo Karkat, 2014 May 12)
|
||||
- Does not work with NFA regexp engine:
|
||||
\%u, \%x, \%o, \%d followed by a composing character
|
||||
- \%'[ does not work. '%'] does work. (Masaaki Nakamura, 2016 Apr 4)
|
||||
- Bug relating to back references. (Ingo Karkat, 2014 Jul 24)
|
||||
- New RE does not give an error for empty group: "\(\)\{2}" (Dominique Pelle,
|
||||
2015 Feb 7)
|
||||
@@ -164,23 +131,56 @@ Regexp problems:
|
||||
matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24)
|
||||
- Search for \\~ causes error E874.
|
||||
|
||||
Patch to fix that folds close with autocomplete. #643
|
||||
Christian Brabandt, 2016 Feb 18.
|
||||
Using freed memory in quickfix code. (Dominique, 2016 Mar 21)
|
||||
|
||||
Also include update_curswant() fix for getcurpos(). (Christian Brabandt, 2016
|
||||
Feb 9)
|
||||
jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
|
||||
What if there is an invalid character?
|
||||
|
||||
Patch to put undo options together in undo window.
|
||||
(Gary Johnson, 2016 Jan 28)
|
||||
Once .exe with updated installer is available: Add remark to download page
|
||||
about /S and /D options (Ken Takata, 2016 Apr 13)
|
||||
|
||||
Patch to have better check for {action} argument of setqflist().
|
||||
Nikolai Pavlov, Feb 25, #661. Can be even more strict.
|
||||
Also see patch from Hirohito Higash, Feb 25.
|
||||
Patch to make cursor blinking work better with GTK3. (Kazunobu Kuriyama, 2016
|
||||
Apr 19) Need to check this works on Linux.
|
||||
Alternative:
|
||||
- add gui_restart_blink flag, set when key typed.
|
||||
- in gui_mch_start_blink(): continue if possible.
|
||||
- in gui_mch_stop_blink(): remember last state.
|
||||
|
||||
Patch to update the GTK icon cache when installing. (Kazunobu Kuriyama, 2016
|
||||
Feb 3)
|
||||
Use ADDR_OTHER instead of ADDR_LINES for many more commands.
|
||||
Add tests for using number larger than number of lines in buffer.
|
||||
|
||||
Patch for test86 and test87. (Roland Puntaier, #622)
|
||||
Patch to fix escaping special characters for delete(). (tc-0, 2016 Mar 20,
|
||||
#700) Test fails on MS-Windows.
|
||||
|
||||
When 'autochdir' is set, writing new file does not change the current dir.
|
||||
(Dan Church, issue #777)
|
||||
|
||||
ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
|
||||
Also with latest version.
|
||||
|
||||
Patch to load rgb.txt once. (Christian Brabandt, 2016 Apr 29)
|
||||
|
||||
Still problems with 'emoji'. See issue #721. Patch 7.4.1697 half-fixes it.
|
||||
Avoid PLAN_WRITE in windgoto() ?
|
||||
Should already never use utf-8 chars to position the cursor.
|
||||
|
||||
Cannot delete a file with square brackets with delete(). (#696)
|
||||
|
||||
Patch to add TabNew, TabNewEntered and TabClosed autocommand events.
|
||||
(Felipe Morales, 2015 Feb 1)
|
||||
|
||||
Patch on issue #728 by Christian Brabandt, 2016 Apr 7. Update with test: Apr 8.
|
||||
Explanation Apr 12.
|
||||
Might be related to:
|
||||
Test 44 fails when [[=A=]] is changed to [[=À=]]. Caused by getcmdline() not
|
||||
handling the 0x80 as a second byte correctly? (Dominique Pelle, 2015 Jun 10)
|
||||
|
||||
Patch to add 'topbot' to 'belloff' option. (Coot, 2016 Mar 18, #695)
|
||||
|
||||
Patch for C syntax HL. (Bradley Garagan, 2016 Apr 17) #763
|
||||
|
||||
Patch to make matchit work better, respect 'matchpairs'. (Ken Takata, 2016 Mar
|
||||
25)
|
||||
|
||||
We can use '. to go to the last change in the current buffer, but how about
|
||||
the last change in any buffer? Can we use ', (, is next to .)?
|
||||
@@ -188,21 +188,46 @@ the last change in any buffer? Can we use ', (, is next to .)?
|
||||
Patch for Python: #622. (Roland Puntaier, 2016 Feb 2)
|
||||
What does it change?
|
||||
|
||||
It's possible to add ",," to 'wildignore', an empty entry. Causes problems.
|
||||
Reject the value? #710.
|
||||
|
||||
Patch to support strikethrough next to bold and italic. (Christian Brabandt,
|
||||
2013 Jul 30) Update from Ken Takata, 2013 Oct 12.
|
||||
Update mentioned by Christian, 2016 Apr 25.
|
||||
Update from Ken Takata, 2016 Apr 26.
|
||||
|
||||
Win32: patch to use 64 bit stat() if possible. (Ken Takata, 2014 May 12)
|
||||
More tests May 14. Update May 29. Update Aug 10.
|
||||
Now part of large file patches. (Ken Takata, 2016 Feb 1)
|
||||
Two patches now? New update Feb 24.
|
||||
Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing
|
||||
pointer in long and seek offset in 64 bit var.
|
||||
Patches from Ken Takata might help (2014 Apr 17)
|
||||
Update 2016 Mar 28. Can include all parts into one dist patch.
|
||||
|
||||
Patch to support 64 bit ints for Number. (Ken Takata, 2016 Jan 21)
|
||||
Also in update of Feb 24?
|
||||
Update 2016 Apr 24.
|
||||
|
||||
Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12)
|
||||
Updated 2016 Feb 10
|
||||
|
||||
Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574
|
||||
No test, needs some work to include.
|
||||
>
|
||||
Patch to improve indenting for C++ constructor with initializer list.
|
||||
(Hirohito Higashi, 2016 Mar 31)
|
||||
|
||||
After 7.5 is released:
|
||||
- Drop support for older MS-Windows systems, before XP.
|
||||
Patch from Ken Takata, 2016 Mar 8.
|
||||
|
||||
Add stronger encryption. Could use libsodium (NaCl).
|
||||
https://github.com/jedisct1/libsodium/
|
||||
Possibly include the needed code so that it can be build everywhere.
|
||||
|
||||
Patch to add setbufline(). (email from Yasuhiro Matsumoto, patch by Ozaki
|
||||
Kiichi, 2016 Feb 28)
|
||||
Update Mar 8: https://gist.github.com/mattn/23c1f50999084992ca98
|
||||
Update Mar 13: https://gist.github.com/mattn/23c1f50999084992ca98
|
||||
|
||||
Need to try out instructions in INSSTALLpc.txt about how to install all
|
||||
interfaces and how to build Vim with them.
|
||||
@@ -210,9 +235,6 @@ Appveyor build with self-installing executable, includes getting most
|
||||
interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build
|
||||
result: https://ci.appveyor.com/project/k-takata/vim/history
|
||||
|
||||
Still using freed memory after using setloclist(). (lcd, 2014 Jul 23)
|
||||
More info Jul 24. Not clear why.
|
||||
|
||||
Duplication of completion suggestions for ":!hom". Issue 539.
|
||||
Patch by Christian, 2016 Jan 29
|
||||
>
|
||||
@@ -221,8 +243,15 @@ work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24)
|
||||
|
||||
Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
|
||||
|
||||
jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
|
||||
What if there is an invalid character?
|
||||
Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)
|
||||
|
||||
When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016
|
||||
Apr 17) #762
|
||||
|
||||
Patch to support expression argument to sort() instead of a function name.
|
||||
Yasuhiro Matsumoto, 2013 May 31.
|
||||
Or should we add a more general mechanism, like a lambda() function?
|
||||
Patch by Yasuhiro Matsumoto, 2014 Sep 16, update 2016 Apr 17.
|
||||
|
||||
Should jsonencode()/jsondecode() restrict recursiveness?
|
||||
Or avoid recursiveness.
|
||||
@@ -235,6 +264,10 @@ Patch to make "%:h:h" return "." instead of the full path.
|
||||
|
||||
Remove SPACE_IN_FILENAME ? What could possibly go wrong?
|
||||
|
||||
Patch to change GUI behavior: instead of changing the window size change the
|
||||
lines/columns when menu/toolbar/etc. is added/removed. (Ychin, 2016 Mar 20,
|
||||
#703)
|
||||
|
||||
Installation of .desktop files does not work everywhere.
|
||||
It's now fixed, but the target directory probably isn't right.
|
||||
Add configure check?
|
||||
@@ -242,29 +275,36 @@ Should use /usr/local/share/applications or /usr/share/applications.
|
||||
Or use $XDG_DATA_DIRS.
|
||||
Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4)
|
||||
|
||||
Move the README files that are for including in archives to a subdirectory.
|
||||
"readmedir/" ?
|
||||
|
||||
Access to uninitialized memory in match_backref() regexp_nda.c:4882
|
||||
(Dominique Pelle, 2015 Nov 6)
|
||||
|
||||
":cd C:\Windows\System32\drivers\etc*" does not work, even though the
|
||||
directory exists. (Sergio Gallelli, 2013 Dec 29)
|
||||
|
||||
Patch to avoid redrawing tabline when the popup menu is visible.
|
||||
(Christian Brabandt, 2016 Jan 28)
|
||||
|
||||
Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24)
|
||||
|
||||
7 Add a watchpoint in the debug mode: An expression that breaks execution
|
||||
when evaluating to non-zero. Add the "watchadd expr" command, stop when
|
||||
the value of the expression changes. ":watchdel" deletes an item,
|
||||
":watchlist" lists the items. (Charles Campbell)
|
||||
Patch by Christian Brabandt, 2016 Feb 1.
|
||||
|
||||
If ":bd" also closes a Tab page then the " mark is not set. (Harm te Hennepe,
|
||||
2016 Apr 25, #780)
|
||||
|
||||
Patch to avoid redrawing tabline when the popup menu is visible.
|
||||
(Christian Brabandt, 2016 Jan 28)
|
||||
|
||||
Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24)
|
||||
|
||||
Add value "smart" to 'tagcase': ignore case when tag is all lower case.
|
||||
Patch from Christian Brabandt, 2016 Mar 30, #712.
|
||||
|
||||
Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6)
|
||||
Update Sep 7. Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1.
|
||||
|
||||
When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot
|
||||
restore the mode properly. (Andrew Stewart, 2016 Apr 20)
|
||||
Do not trigger the event?
|
||||
|
||||
Using ":windo" to set options in all windows has the side effect that it
|
||||
changes the window layout and the current window. Make a variant that saves
|
||||
and restores. Use in the matchparen plugin.
|
||||
@@ -283,6 +323,8 @@ https://gist.github.com/presuku/d3d6b230b9b6dcfc0477
|
||||
Patch to make the behavior of "w" more straightforward, but not Vi compatible.
|
||||
With a 'cpo' flag. (Christian Brabandt, 2016 Feb 8)
|
||||
|
||||
Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27, update Apr 13)
|
||||
|
||||
Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3)
|
||||
|
||||
Patch to add Error autocommand. (Anton Lindqvist, 2016 Feb 17)
|
||||
@@ -333,6 +375,9 @@ Patch to add :mapgroup, put mappings in a group like augroup.
|
||||
Value returned by virtcol() changes depending on how lines wrap. This is
|
||||
inconsistent with the documentation.
|
||||
|
||||
Patch to add filtering of the quickfix list. (Yegappan Lakshmanan, 2016 Mar
|
||||
13, last version) Update Mar 21., Apr 2.
|
||||
|
||||
Can we cache the syntax attributes, so that updates for 'relativenumber' and
|
||||
'cursorline'/'cursorcolumn' are a lot faster?
|
||||
|
||||
@@ -344,7 +389,7 @@ Use v:none. var == v:none
|
||||
|
||||
Patch to add arguments to argc() and argv(). (Yegappan Lakshmanan, 2016 Jan
|
||||
24) Also need a way to get the global arg list? Update later on Jan 24
|
||||
Update Mar 5.
|
||||
Update Mar 5. Update Apr 7.
|
||||
|
||||
To support Thai (and other languages) word boundaries, include the ICU
|
||||
library: http://userguide.icu-project.org/boundaryanalysis
|
||||
@@ -352,15 +397,9 @@ library: http://userguide.icu-project.org/boundaryanalysis
|
||||
When complete() first argument is before where insert started and 'backspace'
|
||||
is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19)
|
||||
|
||||
Test 44 fails when [[=A=]] is changed to [[=À=]]. Caused by getcmdline() not
|
||||
handling the 0x80 as a second byte correctly? (Dominique Pelle, 2015 Jun 10)
|
||||
|
||||
Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan
|
||||
30)
|
||||
|
||||
Weird encryption problems on Windows. (Ben Fritz, 2015 Feb 13)
|
||||
Goes away when disabling the swap file. (might1, Feb 16)
|
||||
|
||||
MS-Windows: Crash opening very long file name starting with "\\".
|
||||
(Christian Brock, 2012 Jun 29)
|
||||
|
||||
@@ -389,9 +428,6 @@ Crash in :cnext on MS-Windows. (Ben Fritz, 2015 Oct 27)
|
||||
When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet,
|
||||
the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21)
|
||||
|
||||
Patch to add GUI colors to the terminal, when it supports it. (ZyX, 2013 Jan
|
||||
26, update 2013 Dec 14, another 2014 Nov 22)
|
||||
|
||||
Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015
|
||||
Sep 10)
|
||||
|
||||
@@ -399,7 +435,7 @@ Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
|
||||
Needs a different check for CLEARTYPE_QUALITY.
|
||||
Problem mentioned by Christian Brabandt, 2016 Jan 4.
|
||||
|
||||
Example in editing.txt uses $HOME with the expectating that it ends in a
|
||||
Example in editing.txt uses $HOME with the expectation that it ends in a
|
||||
slash. For me it does, but perhaps not for everybody. Add a function that
|
||||
inserts a slash when needed? pathconcat(dir, path) (Thilo Six, 2015 Aug 12)
|
||||
|
||||
@@ -412,10 +448,6 @@ Patch to fix checking global option value when not using it.
|
||||
When 'showbreak' is set repeating a Visual operation counts the size of the
|
||||
'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20)
|
||||
|
||||
Patch to apply 'fileformats' when starting Vim. (Mike Williams, 2015 Jul 22)
|
||||
|
||||
Patch for matchit plugin related to multibyte chars. (Ken Takata, 2015 Jul 22)
|
||||
|
||||
Patch for multi-byte characters in langmap and applying a mapping on them.
|
||||
(Christian Brabandt, 2015 Jun 12, update July 25)
|
||||
Is this the right solution? Need to cleanup langmap behavior:
|
||||
@@ -426,6 +458,7 @@ Is this the right solution? Need to cleanup langmap behavior:
|
||||
covered by the above change.
|
||||
So that replaying the register doesn't use keymap/langmap and still does the
|
||||
same thing. Remarks on issue 543 (Roland Puntaier).
|
||||
Also see #737: langmap not applied to replaying recording.
|
||||
|
||||
Patch to add grepfile(). (Scott Prager, 2015 May 26)
|
||||
Work in progress.
|
||||
@@ -471,6 +504,7 @@ Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1)
|
||||
Patch for drag&drop reordering of GUI tab pages reordering.
|
||||
(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
|
||||
Now on Git: https://gist.github.com/nocd5/165286495c782b815b94
|
||||
Update 2016 Mar 15.
|
||||
|
||||
Patch on Issue 72: 'autochdir' causes problems for :vimgrep.
|
||||
|
||||
@@ -560,9 +594,6 @@ Jun 8)
|
||||
Bug: Autocompleting ":tag/pat" replaces "/pat" with a match but does not
|
||||
insert a space. (Micha Mos, 2014 Nov 7)
|
||||
|
||||
Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12)
|
||||
Updated 2016 Feb 10
|
||||
|
||||
Patch to add argument to :cquit. (Thinca, 2014 Oct 12)
|
||||
|
||||
No error for missing endwhile. (ZyX, 2014 Mar 20)
|
||||
@@ -596,9 +627,6 @@ What for systems that don't have unsetenv()?
|
||||
|
||||
Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
|
||||
|
||||
Patch to add TabNew, TabNewEntered and TabClosed autocommand events.
|
||||
(Felipe Morales, 2015 Feb 1)
|
||||
|
||||
This does not give an error: (Andre Sihera, 2014 Mar 21)
|
||||
vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1'
|
||||
This neither: (ZyX)
|
||||
@@ -665,14 +693,6 @@ various other commands. (ZyX, 2014 Mar 30)
|
||||
Patch to skip sort if no line matches the expression.
|
||||
(Christian Brabandt, 2014 Jun 25)
|
||||
|
||||
Patch to add sortuniq(). (Cade Forester, 2014 Mar 19)
|
||||
Or add uniq() instead? Patch by lcd47, but it has problems.
|
||||
|
||||
Patch to support expression argument to sort() instead of a function name.
|
||||
Yasuhiro Matsumoto, 2013 May 31.
|
||||
Or should we add a more general mechanism, like a lambda() function?
|
||||
Patch by Yasuhiro Matsumoto, 2014 Sep 16.
|
||||
|
||||
VMS: Select() doesn't work properly, typing ESC may hang Vim. Use sys$qiow
|
||||
instead. (Samuel Ferencik, 2013 Sep 28)
|
||||
|
||||
@@ -802,6 +822,9 @@ May 17: with winlist() and tabpagelist().
|
||||
May 19: with local variables.
|
||||
May 28: with options
|
||||
|
||||
Patch to add getbufinfo(), gettabinfo() and getwininfo(). (Yegappan
|
||||
Lakshmanan, 2016 Apr 2016)
|
||||
|
||||
Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep
|
||||
28) With tests: Oct 9.
|
||||
|
||||
@@ -1591,9 +1614,6 @@ probably causes this.
|
||||
'scrollbind' is not respected when deleting lines or undo. (Milan Vancura,
|
||||
2009 Jan 16)
|
||||
|
||||
Patch to support strikethrough next to bold and italic. (Christian Brabandt,
|
||||
2013 Jul 30) Update from Ken Takata, 2013 Oct 12.
|
||||
|
||||
Document that default font in Athena can be set with resources:
|
||||
XtDefaultFont: "9x15"
|
||||
XtDefaultFontSet: "9x15"
|
||||
@@ -1938,10 +1958,6 @@ Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen
|
||||
with the more prompt. Caused by setting the guitablabel? (Thomas Michael
|
||||
Engelke, 2007 Dec 20 - 2008 Jan 17)
|
||||
|
||||
Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing
|
||||
pointer in long and seek offset in 64 bit var.
|
||||
Patches from Ken Takata might help (2014 Apr 17)
|
||||
|
||||
Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17)
|
||||
|
||||
Win32: When 'shell' is bash shellescape() doesn't always do the right thing.
|
||||
@@ -3732,7 +3748,7 @@ Syntax highlighting:
|
||||
unprintable char another color. Would be useful for ^M at end of line.
|
||||
|
||||
|
||||
Built-in script language:
|
||||
Vim script language:
|
||||
8 Make the filename and line number available to script functions, so that
|
||||
they can give useful debugging info. The whole call stack would be ideal.
|
||||
At least use this for error messages.
|
||||
@@ -3753,14 +3769,10 @@ Built-in script language:
|
||||
7 ":include" command: just like ":source" but doesn't start a new scriptID?
|
||||
Will be tricky for the list of script names.
|
||||
8 Have a look at VSEL. Would it be useful to include? (Bigham)
|
||||
8 Add ":fungroup" command, to group function definitions together. When
|
||||
encountered, all functions in the group are removed. Suggest using an
|
||||
obscure name to avoid name clashes. Require a ":fungroup END" in the same
|
||||
sourced file? Assume the group ends at the end of the file. Handle
|
||||
nested packages?
|
||||
Alternative: Support packages. {package-name}:{function-name}().
|
||||
Packages are loaded automatically when first used, from
|
||||
$VIMRUNTIME/packages (or use a search path).
|
||||
8 Have a prefix for a function to make it unique. When using packages it
|
||||
can be the plugin name.
|
||||
Perhaps also have a way to remove everything that the package added?
|
||||
including autocommands.
|
||||
7 Pre-parse or compile Vim scripts into a bytecode.
|
||||
1. Put the bytecode with the original script, with an ":if
|
||||
has('bytecode')" around it, so that it's only used with a Vim that
|
||||
@@ -3777,8 +3789,6 @@ Built-in script language:
|
||||
8 Add functions:
|
||||
has(":command") Check if ":command" works. compare function
|
||||
with "ex_ni". E.g. for ":simalt".
|
||||
system() With a List argument. Bypasses the shell, use
|
||||
exec() directly. (Bob Hiestand)
|
||||
escape() Add argument to specify what to escape with.
|
||||
modestack() Instead of just the current mode return the
|
||||
stack of Insert / CTRL-O / :normal things.
|
||||
@@ -4881,7 +4891,7 @@ Searching:
|
||||
lines 23 to 45? Or does this conflict with Ex range syntax?
|
||||
8 Allow identical pairs in 'matchpairs'. Restrict the search to the current
|
||||
line.
|
||||
7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an
|
||||
7 Allow longer pairs in 'matchpairs'. Use matchit.vim as an
|
||||
example.
|
||||
8 Make it possible to define the character that "%" checks for in
|
||||
#if/#endif. For nmake it's !if/!endif.
|
||||
|
||||
+59
-25
@@ -1,4 +1,4 @@
|
||||
*usr_05.txt* For Vim version 7.4. Last change: 2012 Nov 20
|
||||
*usr_05.txt* For Vim version 7.4. Last change: 2016 Mar 28
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -12,10 +12,11 @@ Vim's capabilities. Or define your own macros.
|
||||
|05.1| The vimrc file
|
||||
|05.2| The example vimrc file explained
|
||||
|05.3| Simple mappings
|
||||
|05.4| Adding a plugin
|
||||
|05.5| Adding a help file
|
||||
|05.6| The option window
|
||||
|05.7| Often used options
|
||||
|05.4| Adding a package
|
||||
|05.5| Adding a plugin
|
||||
|05.6| Adding a help file
|
||||
|05.7| The option window
|
||||
|05.8| Often used options
|
||||
|
||||
Next chapter: |usr_06.txt| Using syntax highlighting
|
||||
Previous chapter: |usr_04.txt| Making small changes
|
||||
@@ -263,7 +264,45 @@ The ":map" command (with no arguments) lists your current mappings. At
|
||||
least the ones for Normal mode. More about mappings in section |40.1|.
|
||||
|
||||
==============================================================================
|
||||
*05.4* Adding a plugin *add-plugin* *plugin*
|
||||
*05.4* Adding a package *add-package* *matchit-install*
|
||||
|
||||
A package is a set of files that you can add to Vim. There are two kinds of
|
||||
packages: optional and automatically loaded on startup.
|
||||
|
||||
The Vim distribution comes with a few packages that you can optionally use.
|
||||
For example, the matchit plugin. This plugin makes the "%" command jump to
|
||||
matching HTML tags, if/else/endif in Vim scripts, etc. Very useful, although
|
||||
it's not backwards compatible (that's why it is not enabled by default).
|
||||
|
||||
To start using the matchit plugin, add one line to your vimrc file: >
|
||||
packadd! matchit
|
||||
|
||||
That's all! After restarting Vim you can find help about this plugin: >
|
||||
:help matchit
|
||||
|
||||
This works, because when `:packadd` loaded the plugin it also added the
|
||||
package directory in 'runtimepath', so that the help file can be found.
|
||||
|
||||
You can find packages on the Internet in various places. It usually comes as
|
||||
an archive or as a repository. For an archive you can follow these steps:
|
||||
1. create the package directory: >
|
||||
mkdir -p ~/.vim/pack/fancy
|
||||
< "fancy" can be any name of your liking. Use one that describes the
|
||||
package.
|
||||
2. unpack the archive in that directory. This assumes the top
|
||||
directory in the archive is "start": >
|
||||
cd ~/.vim/pack/fancy
|
||||
unzip /tmp/fancy.zip
|
||||
< If the archive layout is different make sure that you end up with a
|
||||
path like this:
|
||||
~/.vim/pack/fancy/start/fancytext/plugin/fancy.vim ~
|
||||
Here "fancytext" is the name of the package, it can be anything
|
||||
else.
|
||||
|
||||
More information about packages can be found here: |packages|.
|
||||
|
||||
==============================================================================
|
||||
*05.5* Adding a plugin *add-plugin* *plugin*
|
||||
|
||||
Vim's functionality can be extended by adding plugins. A plugin is nothing
|
||||
more than a Vim script file that is loaded automatically when Vim starts. You
|
||||
@@ -324,10 +363,9 @@ Example for Unix (assuming you didn't have a plugin directory yet): >
|
||||
|
||||
mkdir ~/.vim
|
||||
mkdir ~/.vim/plugin
|
||||
cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin
|
||||
cp /tmp/yourplugin.vim ~/.vim/plugin
|
||||
|
||||
That's all! Now you can use the commands defined in this plugin to justify
|
||||
text.
|
||||
That's all! Now you can use the commands defined in this plugin.
|
||||
|
||||
Instead of putting plugins directly into the plugin/ directory, you may
|
||||
better organize them by putting them into subdirectories under plugin/.
|
||||
@@ -415,23 +453,19 @@ Further reading:
|
||||
|new-filetype| How to detect a new file type.
|
||||
|
||||
==============================================================================
|
||||
*05.5* Adding a help file *add-local-help* *matchit-install*
|
||||
*05.6* Adding a help file *add-local-help*
|
||||
|
||||
If you are lucky, the plugin you installed also comes with a help file. We
|
||||
will explain how to install the help file, so that you can easily find help
|
||||
for your new plugin.
|
||||
Let us use the "matchit.vim" plugin as an example (it is included with
|
||||
Vim). This plugin makes the "%" command jump to matching HTML tags,
|
||||
if/else/endif in Vim scripts, etc. Very useful, although it's not backwards
|
||||
compatible (that's why it is not enabled by default).
|
||||
This plugin comes with documentation: "matchit.txt". Let's first copy the
|
||||
plugin to the right directory. This time we will do it from inside Vim, so
|
||||
that we can use $VIMRUNTIME. (You may skip some of the "mkdir" commands if
|
||||
you already have the directory.) >
|
||||
Let us use the "doit.vim" plugin as an example. This plugin comes with
|
||||
documentation: "doit.txt". Let's first copy the plugin to the right
|
||||
directory. This time we will do it from inside Vim. (You may skip some of
|
||||
the "mkdir" commands if you already have the directory.) >
|
||||
|
||||
:!mkdir ~/.vim
|
||||
:!mkdir ~/.vim/plugin
|
||||
:!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
|
||||
:!cp /tmp/doit.vim ~/.vim/plugin
|
||||
|
||||
The "cp" command is for Unix, on MS-DOS you can use "copy".
|
||||
|
||||
@@ -441,7 +475,7 @@ Now create a "doc" directory in one of the directories in 'runtimepath'. >
|
||||
|
||||
Copy the help file to the "doc" directory. >
|
||||
|
||||
:!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc
|
||||
:!cp /tmp/doit.txt ~/.vim/doc
|
||||
|
||||
Now comes the trick, which allows you to jump to the subjects in the new help
|
||||
file: Generate the local tags file with the |:helptags| command. >
|
||||
@@ -450,10 +484,10 @@ file: Generate the local tags file with the |:helptags| command. >
|
||||
|
||||
Now you can use the >
|
||||
|
||||
:help g%
|
||||
:help doit
|
||||
|
||||
command to find help for "g%" in the help file you just added. You can see an
|
||||
entry for the local help file when you do: >
|
||||
command to find help for "doit" in the help file you just added. You can see
|
||||
an entry for the local help file when you do: >
|
||||
|
||||
:help local-additions
|
||||
|
||||
@@ -464,7 +498,7 @@ them through the tag.
|
||||
For writing a local help file, see |write-local-help|.
|
||||
|
||||
==============================================================================
|
||||
*05.6* The option window
|
||||
*05.7* The option window
|
||||
|
||||
If you are looking for an option that does what you want, you can search in
|
||||
the help files here: |options|. Another way is by using this command: >
|
||||
@@ -503,7 +537,7 @@ border. This is what the 'scrolloff' option does, it specifies an offset
|
||||
from the window border where scrolling starts.
|
||||
|
||||
==============================================================================
|
||||
*05.7* Often used options
|
||||
*05.8* Often used options
|
||||
|
||||
There are an awful lot of options. Most of them you will hardly ever use.
|
||||
Some of the more useful ones will be mentioned here. Don't forget you can
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_25.txt* For Vim version 7.4. Last change: 2014 Oct 29
|
||||
*usr_25.txt* For Vim version 7.4. Last change: 2016 Mar 28
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -196,12 +196,16 @@ Vim has no built-in way of justifying text. However, there is a neat macro
|
||||
package that does the job. To use this package, execute the following
|
||||
command: >
|
||||
|
||||
:runtime macros/justify.vim
|
||||
:packadd justify
|
||||
|
||||
Or put this line in your |vimrc|: >
|
||||
|
||||
packadd! justify
|
||||
|
||||
This Vim script file defines a new visual command "_j". To justify a block of
|
||||
text, highlight the text in Visual mode and then execute "_j".
|
||||
Look in the file for more explanations. To go there, do "gf" on this name:
|
||||
$VIMRUNTIME/macros/justify.vim.
|
||||
$VIMRUNTIME/pack/dist/opt/justify/plugin/justify.vim.
|
||||
|
||||
An alternative is to filter the text through an external program. Example: >
|
||||
|
||||
|
||||
+10
-3
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 7.4. Last change: 2016 Feb 14
|
||||
*usr_41.txt* For Vim version 7.4. Last change: 2016 Apr 12
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -592,6 +592,7 @@ String manipulation: *string-functions*
|
||||
match() position where a pattern matches in a string
|
||||
matchend() position where a pattern match ends in a string
|
||||
matchstr() match of a pattern in a string
|
||||
matchstrpos() match and postions of a pattern in a string
|
||||
matchlist() like matchstr() and also return submatches
|
||||
stridx() first index of a short string in a long string
|
||||
strridx() last index of a short string in a long string
|
||||
@@ -768,6 +769,7 @@ Date and Time: *date-functions* *time-functions*
|
||||
strftime() convert time to a string
|
||||
reltime() get the current or elapsed time accurately
|
||||
reltimestr() convert reltime() result to a string
|
||||
reltimefloat() convert reltime() result to a Float
|
||||
|
||||
*buffer-functions* *window-functions* *arg-functions*
|
||||
Buffers, windows and the argument list:
|
||||
@@ -889,9 +891,14 @@ Mappings: *mapping-functions*
|
||||
wildmenumode() check if the wildmode is active
|
||||
|
||||
Testing: *test-functions*
|
||||
assert_equal() assert that two expressions values are equal
|
||||
assert_equal() assert that two expressions values are equal
|
||||
assert_notequal() assert that two expressions values are not equal
|
||||
assert_match() assert that a pattern matches the value
|
||||
assert_notmatch() assert that a pattern does not match the value
|
||||
assert_false() assert that an expression is false
|
||||
assert_true() assert that an expression is true
|
||||
assert_exception() assert that a command throws an exception
|
||||
assert_fails() assert that a function call fails
|
||||
|
||||
Inter-process communication:
|
||||
ch_open() open a channel
|
||||
@@ -932,7 +939,7 @@ Various: *various-functions*
|
||||
perleval() evaluate Perl expression (|+perl|)
|
||||
py3eval() evaluate Python expression (|+python3|)
|
||||
pyeval() evaluate Python expression (|+python|)
|
||||
wordcount() get byte/word/char count of buffer
|
||||
wordcount() get byte/word/char count of buffer
|
||||
|
||||
==============================================================================
|
||||
*41.7* Defining a function
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_toc.txt* For Vim version 7.4. Last change: 2010 Jul 20
|
||||
*usr_toc.txt* For Vim version 7.4. Last change: 2016 Mar 25
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -104,10 +104,11 @@ Read this from start to end to learn the essential commands.
|
||||
|05.1| The vimrc file
|
||||
|05.2| The example vimrc file explained
|
||||
|05.3| Simple mappings
|
||||
|05.4| Adding a plugin
|
||||
|05.5| Adding a help file
|
||||
|05.6| The option window
|
||||
|05.7| Often used options
|
||||
|05.4| Adding a package
|
||||
|05.5| Adding a plugin
|
||||
|05.6| Adding a help file
|
||||
|05.7| The option window
|
||||
|05.8| Often used options
|
||||
|
||||
|usr_06.txt| Using syntax highlighting
|
||||
|06.1| Switching it on
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 7.4. Last change: 2016 Feb 27
|
||||
*various.txt* For Vim version 7.4. Last change: 2016 Apr 29
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -426,8 +426,10 @@ m *+tcl* Tcl interface |tcl|
|
||||
m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn|
|
||||
*+terminfo* uses |terminfo| instead of termcap
|
||||
N *+termresponse* support for |t_RV| and |v:termresponse|
|
||||
B *+termguicolors* 24-bit color in xterm-compatible terminals support
|
||||
N *+textobjects* |text-objects| selection
|
||||
*+tgetent* non-Unix only: able to use external termcap
|
||||
N *+timers* the |timer_start()| function
|
||||
N *+title* Setting the window 'title' and 'icon'
|
||||
N *+toolbar* |gui-toolbar|
|
||||
m *+transparency* MacVim only: window background transparency
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version7.txt* For Vim version 7.4. Last change: 2014 Aug 29
|
||||
*version7.txt* For Vim version 7.4. Last change: 2016 Apr 03
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1683,7 +1683,7 @@ work. Use "LPT1" then.
|
||||
The GTK font dialog uses a font size zero when the font name doesn't include a
|
||||
size. Use a default size of 10.
|
||||
|
||||
This example in the documentation didn't work:
|
||||
This example in the documentation didn't work: >
|
||||
:e `=foo . ".c"`
|
||||
Skip over the expression in `=expr` when looking for comments, |, % and #.
|
||||
|
||||
@@ -10160,7 +10160,7 @@ an error. Was caused by patch 7.2.132.
|
||||
Make the references to features in the help more consistent. (Sylvain Hitier)
|
||||
|
||||
==============================================================================
|
||||
VERSION 7.4 *version-7.4* *version7.4*
|
||||
VERSION 7.4 *version-7.4* *version7.4* *vim-7.4*
|
||||
|
||||
This section is about improvements made between version 7.3 and 7.4.
|
||||
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
*version8.txt* For Vim version 8.0. Last change: 2016 Apr 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
NOTE: THIS FILE IS STILL BEING WORKED ON
|
||||
|
||||
*vim8* *vim-8* *version-8.0* *version8.0*
|
||||
Welcome to Vim 8! A large number of bugs have been fixed and several
|
||||
features have been added. This file mentions all the new items and changes to
|
||||
existing features since Vim 7.4. Bug fixes, the patches for Vim 7.4, can be
|
||||
found below |vim-7.4|. Use this command to see the version you are using: >
|
||||
:version
|
||||
|
||||
See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0.
|
||||
See |version4.txt| for differences between Vim 3.x and Vim 4.x.
|
||||
See |version5.txt| for differences between Vim 4.x and Vim 5.x.
|
||||
See |version6.txt| for differences between Vim 5.x and Vim 6.x.
|
||||
See |version7.txt| for differences between Vim 6.x and Vim 7.x.
|
||||
|
||||
INCOMPATIBLE CHANGES |incompatible-8|
|
||||
|
||||
NEW FEATURES |new-8|
|
||||
|
||||
Vim script enhancements |new-vim-script-8|
|
||||
|
||||
IMPROVEMENTS |improvements-8|
|
||||
|
||||
COMPILE TIME CHANGES |compile-changes-8|
|
||||
|
||||
PATCHES |patches-8|
|
||||
|
||||
|
||||
==============================================================================
|
||||
INCOMPATIBLE CHANGES *incompatible-8*
|
||||
|
||||
These changes are incompatible with previous releases. Check this list if you
|
||||
run into a problem when upgrading from Vim 7.4 to 8.0.
|
||||
|
||||
The support for MS-DOS has been removed. It hasn't been working for a while
|
||||
and removing it cleans up the code quite a bit.
|
||||
|
||||
The support for Windows 16 bit (Windows 95 and older) has been removed.
|
||||
|
||||
Minor incompatibilities:
|
||||
|
||||
For filetype detection: ...
|
||||
|
||||
==============================================================================
|
||||
NEW FEATURES *new-8*
|
||||
|
||||
First a list of the bigger new features. A comprehensive list is below.
|
||||
|
||||
|
||||
Asynchronous I/O support, channels ~
|
||||
|
||||
Vim can now exchange messages with another process in the background. The
|
||||
messages are received and handled while Vim is waiting for a character. See
|
||||
|channel-demo| for an example, communicating with a Python server.
|
||||
|
||||
Closely related to channels is JSON support. JSON is widely supported and can
|
||||
easily be used for inter-process communication, allowing for writing a server
|
||||
in any language. The functions to use are |json_encode()| and |json_decode()|.
|
||||
|
||||
|
||||
Jobs ~
|
||||
|
||||
Vim can now start a job, communicate with it and stop it. This is very useful
|
||||
to run a process for completion, syntax checking, etc. Channels are used to
|
||||
communicate with the job. Jobs can also read from or write to a buffer or a
|
||||
file. See |job_start()|.
|
||||
|
||||
|
||||
Timers ~
|
||||
|
||||
Also asynchronous are timers. They can fire once or repeatedly and invoke a
|
||||
function to do any work. For example: >
|
||||
let tempTimer = timer_start(4000, 'CheckTemp')
|
||||
This will make a call four seconds (4000 milli seconds) later, like: >
|
||||
call CheckTemp()
|
||||
|
||||
|
||||
Partials ~
|
||||
|
||||
Vim already had a Funcref, a reference to a function. A partial also refers
|
||||
to a function, and additionally binds arguments and/or a dictionary. This is
|
||||
especially useful for callbacks on channels and timers. E.g., for the timer
|
||||
example above, to pass an argument to the function: >
|
||||
let tempTimer = timer_start(4000, function('CheckTemp', ['out']))
|
||||
This will a make call four seconds later, like: >
|
||||
call CheckTemp('out')
|
||||
|
||||
|
||||
Packages ~
|
||||
|
||||
Plugins keep growing and more of them are available than ever before. To keep
|
||||
the collection of plugins manageable package support has been added. This is
|
||||
a convenient way to get one or more plugins, drop them in a directory and
|
||||
possibly keep them updated. Vim will load them automatically, or only when
|
||||
desired. See |packages|.
|
||||
|
||||
|
||||
New style tests ~
|
||||
|
||||
This is for Vim developers. So far writing tests for Vim has not been easy.
|
||||
Vim 8 adds assert functions and a framework to run tests. This makes it a lot
|
||||
simpler to write tests and keep them updated.
|
||||
|
||||
These functions have been added:
|
||||
|assert_equal()|
|
||||
|assert_notequal()|
|
||||
|assert_exception()|
|
||||
|assert_fails()|
|
||||
|assert_false()|
|
||||
|assert_match()|
|
||||
|assert_notmatch()|
|
||||
|assert_true()|
|
||||
|alloc_fail()|
|
||||
|disable_char_avail_for_testing()|
|
||||
|
||||
|
||||
Window IDs ~
|
||||
|
||||
Previously windows could only be accessed by their number. And every time a
|
||||
window would open, close or move that number changes. Each window now has a
|
||||
unique ID, so that they are easy to find.
|
||||
|
||||
|
||||
Wrapping lines with indent ~
|
||||
|
||||
The 'breakindent' option has been added to be able to wrap lines without
|
||||
changing the amount of indent.
|
||||
|
||||
|
||||
Windows: Direct-X support ~
|
||||
|
||||
This adds the 'renderoptions' option to allow for switching on Direct-X
|
||||
(DirectWrite) support on MS-Windows.
|
||||
|
||||
|
||||
GTK+ 3 support ~
|
||||
|
||||
GTK+ 2 is getting old, GTK+ 3 is here. Support has been added and it already
|
||||
works quite well, mostly just like GTK+ 2.
|
||||
|
||||
|
||||
Vim script enhancements *new-vim-script-8*
|
||||
-----------------------
|
||||
|
||||
In Vim script the following types have been added:
|
||||
|
||||
|Special| |v:false|, |v:true|, |v:none| and |v:null|
|
||||
|Channel| connection to another process for asynchronous I/O
|
||||
|Job| process control
|
||||
|
||||
Many functions and commands have been added to support the new types.
|
||||
|
||||
|
||||
|
||||
Various new items *new-items-8*
|
||||
-----------------
|
||||
|
||||
Normal mode commands: ~
|
||||
|
||||
|
||||
Insert mode commands: ~
|
||||
|
||||
|
||||
Options: ~
|
||||
|
||||
|
||||
Ex commands: ~
|
||||
|
||||
|
||||
Ex command modifiers: ~
|
||||
|
||||
|
||||
Ex command arguments: ~
|
||||
|
||||
|
||||
New and extended functions: ~
|
||||
|
||||
|
||||
|
||||
New Vim variables: ~
|
||||
|
||||
|v:vim_did_enter| Set when VimEnter autocommands are triggered
|
||||
|
||||
|
||||
New autocommand events: ~
|
||||
|
||||
|
||||
|
||||
New highlight groups: ~
|
||||
|
||||
|
||||
New items in search patterns: ~
|
||||
|
||||
|
||||
New Syntax/Indent/FTplugin files: ~
|
||||
|
||||
|
||||
New Keymaps: ~
|
||||
|
||||
|
||||
New message translations: ~
|
||||
|
||||
|
||||
Others: ~
|
||||
|
||||
|
||||
==============================================================================
|
||||
IMPROVEMENTS *improvements-8*
|
||||
|
||||
The existing blowfish encryption turned out to be much weaker than it was
|
||||
supposed to be. The blowfish2 method has been added to fix that. Note that
|
||||
this still isn't a state-of-the-art encryption, but good enough for most
|
||||
usage. See 'cryptmethod'.
|
||||
|
||||
==============================================================================
|
||||
COMPILE TIME CHANGES *compile-changes-8*
|
||||
|
||||
Dropped the support for MS-DOS. It was too big to fit in memory.
|
||||
|
||||
|
||||
==============================================================================
|
||||
PATCHES *patches-8* *bug-fixes-8*
|
||||
|
||||
The list of patches that got included since 7.4.0. This includes all the new
|
||||
features, but does not include runtime file changes (syntax, indent, help,
|
||||
etc.)
|
||||
|
||||
TODO: INCLUDE PATCH LIST.
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
+1
-1
@@ -321,7 +321,7 @@ When N is omitted, open one tab page for each file.
|
||||
\-R
|
||||
Read-only mode.
|
||||
The 'readonly' option will be set.
|
||||
You can still edit the buffer, but will be prevented from accidently
|
||||
You can still edit the buffer, but will be prevented from accidentally
|
||||
overwriting a file.
|
||||
If you do want to overwrite a file, add an exclamation mark to the Ex command,
|
||||
as in ":w!".
|
||||
|
||||
+12
-4
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2015 Dec 03
|
||||
" Last Change: 2016 Apr 29
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -17,7 +17,7 @@ augroup filetypedetect
|
||||
|
||||
" Ignored extensions
|
||||
if exists("*fnameescape")
|
||||
au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew
|
||||
au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew,?\+.pacsave,?\+.pacnew
|
||||
\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
|
||||
au BufNewFile,BufRead *~
|
||||
\ let s:name = expand("<afile>") |
|
||||
@@ -1861,11 +1861,19 @@ au BufNewFile,BufRead catalog setf catalog
|
||||
au BufNewFile,BufRead sgml.catalog* call s:StarSetf('catalog')
|
||||
|
||||
" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
|
||||
" Gentoo ebuilds are actually bash scripts
|
||||
au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass call SetFileTypeSH("bash")
|
||||
" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts
|
||||
au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass,PKGBUILD* call SetFileTypeSH("bash")
|
||||
au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
|
||||
au BufNewFile,BufRead */etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
|
||||
|
||||
" Shell script (Arch Linux) or PHP file (Drupal)
|
||||
au BufNewFile,BufRead *.install
|
||||
\ if getline(1) =~ '<?php' |
|
||||
\ setf php |
|
||||
\ else |
|
||||
\ call SetFileTypeSH("bash") |
|
||||
\ endif
|
||||
|
||||
" Also called from scripts.vim.
|
||||
func! SetFileTypeSH(name)
|
||||
if expand("<amatch>") =~ g:ft_ignore_pat
|
||||
|
||||
@@ -74,6 +74,7 @@ TryExec=gvim
|
||||
Exec=gvim -f %F
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Keywords=Text;editor;
|
||||
Icon=gvim
|
||||
Categories=Utility;TextEditor;
|
||||
StartupNotify=true
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
" An example for a gvimrc file.
|
||||
" The commands in this are executed when the GUI is started.
|
||||
" The commands in this are executed when the GUI is started, after the vimrc
|
||||
" has been executed.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last change: 2001 Sep 02
|
||||
" Last change: 2016 Apr 05
|
||||
"
|
||||
" To use it, copy it to
|
||||
" for Unix and OS/2: ~/.gvimrc
|
||||
@@ -27,17 +28,11 @@ map! <S-Insert> <MiddleMouse>
|
||||
" Only do this for Vim version 5.0 and later.
|
||||
if version >= 500
|
||||
|
||||
" I like highlighting strings inside C comments
|
||||
let c_comment_strings=1
|
||||
|
||||
" Switch on syntax highlighting if it wasn't on yet.
|
||||
if !exists("syntax_on")
|
||||
syntax on
|
||||
endif
|
||||
|
||||
" Switch on search pattern highlighting.
|
||||
set hlsearch
|
||||
|
||||
" For Win32 version, have "K" lookup the keyword in a help file
|
||||
"if has("win32")
|
||||
" let winhelpfile='windows.hlp'
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Header: "{{{
|
||||
" Maintainer: Bram Moolenaar
|
||||
" Original Author: Andy Wokula <anwoku@yahoo.de>
|
||||
" Last Change: 2015 Sep 25
|
||||
" Last Change: 2016 Mar 30
|
||||
" Version: 1.0
|
||||
" Description: HTML indent script with cached state for faster indenting on a
|
||||
" range of lines.
|
||||
@@ -240,13 +240,13 @@ call s:AddITags(s:indent_tags, [
|
||||
\ 'sup', 'table', 'textarea', 'title', 'tt', 'u', 'ul', 'var', 'th', 'td',
|
||||
\ 'tr', 'tbody', 'tfoot', 'thead'])
|
||||
|
||||
" Tags added 2011 Sep 09 (especially HTML5 tags):
|
||||
" New HTML5 elements:
|
||||
call s:AddITags(s:indent_tags, [
|
||||
\ 'area', 'article', 'aside', 'audio', 'bdi', 'canvas',
|
||||
\ 'command', 'datalist', 'details', 'embed', 'figure', 'footer',
|
||||
\ 'header', 'group', 'keygen', 'mark', 'math', 'meter', 'nav', 'output',
|
||||
\ 'progress', 'ruby', 'section', 'svg', 'texture', 'time', 'video',
|
||||
\ 'wbr', 'text'])
|
||||
\ 'command', 'data', 'datalist', 'details', 'embed', 'figcaption',
|
||||
\ 'figure', 'footer', 'header', 'keygen', 'mark', 'meter', 'nav', 'output',
|
||||
\ 'progress', 'rp', 'rt', 'ruby', 'section', 'source', 'summary', 'svg',
|
||||
\ 'time', 'track', 'video', 'wbr'])
|
||||
|
||||
" Tags added for web components:
|
||||
call s:AddITags(s:indent_tags, [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim indent file
|
||||
" Language: Vim script
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2016 Jan 24
|
||||
" Last Change: 2016 Apr 19
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
@@ -60,7 +60,7 @@ function GetVimIndentIntern()
|
||||
else
|
||||
let ind = ind + shiftwidth() * 3
|
||||
endif
|
||||
elseif prev_text =~ '^\s*aug\%[roup]' && prev_text !~ '^\s*aug\%[roup]\s*!\=\s\+END'
|
||||
elseif prev_text =~ '^\s*aug\%[roup]' && prev_text !~ '^\s*aug\%[roup]\s*!\=\s\+[eE][nN][dD]'
|
||||
let ind = ind + shiftwidth()
|
||||
else
|
||||
" A line starting with :au does not increment/decrement indent.
|
||||
|
||||
+15
-12
@@ -8,23 +8,26 @@ maze Macros that solve a maze (amazing!).
|
||||
urm Macros that simulate a simple computer: "Universal Register Machine"
|
||||
|
||||
|
||||
|
||||
The other files contain some handy utilities. They also serve as examples for
|
||||
how to use Vi and Vim functionality.
|
||||
|
||||
dvorak for when you use a Dvorak keyboard
|
||||
|
||||
justify.vim user function for justifying text
|
||||
|
||||
matchit.vim + matchit.txt make % match if-fi, HTML tags, and much more
|
||||
|
||||
less.sh + less.vim make Vim work like less (or more)
|
||||
|
||||
shellmenu.vim menus for editing shell scripts in the GUI version
|
||||
|
||||
swapmous.vim swap left and right mouse buttons
|
||||
|
||||
editexisting.vim when editing a file that is already edited with
|
||||
another Vim instance
|
||||
The following have been moved to an optional package. Add the command to your
|
||||
vimrc file to use the package:
|
||||
|
||||
This one is only for Unix. It can be found in the extra archive:
|
||||
file_select.vim macros that make a handy file selector
|
||||
packadd! dvorak " Dvorak keyboard support; adds mappings
|
||||
|
||||
packadd! editexisting " when editing a file that is already edited with
|
||||
" another Vim instance, go to that Vim instance
|
||||
|
||||
packadd! justify " justifying text.
|
||||
|
||||
packadd! matchit " makes the % command work better
|
||||
|
||||
packadd! shellmenu " menus for editing shell scripts in the GUI version
|
||||
|
||||
packadd! swapmouse " swap left and right mouse buttons
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
When using a dvorak keyboard this file may be of help to you.
|
||||
These mappings have been made by Lawrence Kesteloot <kesteloo@cs.unc.edu>.
|
||||
What they do is that the most often used keys, like hjkl, are put in a more
|
||||
easy to use position.
|
||||
It may take some time to learn using this.
|
||||
|
||||
Put these lines in your .vimrc:
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
" Key to go into dvorak mode:
|
||||
map ,d :source ~/.dvorak
|
||||
" Key to get out of dvorak mode:
|
||||
map ,q :source ~/.qwerty
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
|
||||
write these lines into the file ~/.dvorak:
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
" Dvorak keyboard, only in insert mode and ex mode.
|
||||
" You may want to add a list of map's too.
|
||||
imap! a a
|
||||
imap! b x
|
||||
imap! c j
|
||||
imap! d e
|
||||
imap! e .
|
||||
imap! f u
|
||||
imap! g i
|
||||
imap! h d
|
||||
imap! i c
|
||||
imap! j h
|
||||
imap! k t
|
||||
imap! l n
|
||||
imap! m m
|
||||
imap! n b
|
||||
imap! o r
|
||||
imap! p l
|
||||
imap! q '
|
||||
imap! r p
|
||||
imap! s o
|
||||
imap! t y
|
||||
imap! u g
|
||||
imap! v k
|
||||
imap! w ,
|
||||
imap! x q
|
||||
imap! y f
|
||||
imap! z ;
|
||||
imap! ; s
|
||||
imap! ' -
|
||||
imap! " _
|
||||
imap! , w
|
||||
imap! . v
|
||||
imap! / z
|
||||
imap! A A
|
||||
imap! B X
|
||||
imap! C J
|
||||
imap! D E
|
||||
imap! E >
|
||||
imap! F U
|
||||
imap! G I
|
||||
imap! H D
|
||||
imap! I C
|
||||
imap! J H
|
||||
imap! K T
|
||||
imap! L N
|
||||
imap! M M
|
||||
imap! N B
|
||||
imap! O R
|
||||
imap! P L
|
||||
imap! Q "
|
||||
imap! R P
|
||||
imap! S O
|
||||
imap! T Y
|
||||
imap! U G
|
||||
imap! V K
|
||||
imap! W <
|
||||
imap! X Q
|
||||
imap! Y F
|
||||
imap! Z :
|
||||
imap! < W
|
||||
imap! > V
|
||||
imap! ? Z
|
||||
imap! : S
|
||||
imap! [ /
|
||||
imap! ] =
|
||||
imap! { ?
|
||||
imap! } +
|
||||
imap! - [
|
||||
imap! _ {
|
||||
imap! = ]
|
||||
imap! + }
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
|
||||
write these lines into the file ~/.qwerty
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
" Qwerty keyboard
|
||||
unmap! a
|
||||
unmap! b
|
||||
unmap! c
|
||||
unmap! d
|
||||
unmap! e
|
||||
unmap! f
|
||||
unmap! g
|
||||
unmap! h
|
||||
unmap! i
|
||||
unmap! j
|
||||
unmap! k
|
||||
unmap! l
|
||||
unmap! m
|
||||
unmap! n
|
||||
unmap! o
|
||||
unmap! p
|
||||
unmap! q
|
||||
unmap! r
|
||||
unmap! s
|
||||
unmap! t
|
||||
unmap! u
|
||||
unmap! v
|
||||
unmap! w
|
||||
unmap! x
|
||||
unmap! y
|
||||
unmap! z
|
||||
unmap! ;
|
||||
unmap! '
|
||||
unmap! \"
|
||||
unmap! ,
|
||||
unmap! .
|
||||
unmap! /
|
||||
unmap! A
|
||||
unmap! B
|
||||
unmap! C
|
||||
unmap! D
|
||||
unmap! E
|
||||
unmap! F
|
||||
unmap! G
|
||||
unmap! H
|
||||
unmap! I
|
||||
unmap! J
|
||||
unmap! K
|
||||
unmap! L
|
||||
unmap! M
|
||||
unmap! N
|
||||
unmap! O
|
||||
unmap! P
|
||||
unmap! Q
|
||||
unmap! R
|
||||
unmap! S
|
||||
unmap! T
|
||||
unmap! U
|
||||
unmap! V
|
||||
unmap! W
|
||||
unmap! X
|
||||
unmap! Y
|
||||
unmap! Z
|
||||
unmap! <
|
||||
unmap! >
|
||||
unmap! ?
|
||||
unmap! :
|
||||
unmap! [
|
||||
unmap! ]
|
||||
unmap! {
|
||||
unmap! }
|
||||
unmap! -
|
||||
unmap! _
|
||||
unmap! =
|
||||
unmap! +
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
@@ -1,119 +1,3 @@
|
||||
" Vim Plugin: Edit the file with an existing Vim if possible
|
||||
" Maintainer: Bram Moolenaar
|
||||
" Last Change: 2014 Dec 06
|
||||
|
||||
" This is a plugin, drop it in your (Unix) ~/.vim/plugin or (Win32)
|
||||
" $VIM/vimfiles/plugin directory. Or make a symbolic link, so that you
|
||||
" automatically use the latest version.
|
||||
|
||||
" This plugin serves two purposes:
|
||||
" 1. On startup, if we were invoked with one file name argument and the file
|
||||
" is not modified then try to find another Vim instance that is editing
|
||||
" this file. If there is one then bring it to the foreground and exit.
|
||||
" 2. When a file is edited and a swap file exists for it, try finding that
|
||||
" other Vim and bring it to the foreground. Requires Vim 7, because it
|
||||
" uses the SwapExists autocommand event.
|
||||
if v:version < 700
|
||||
finish
|
||||
endif
|
||||
|
||||
" Function that finds the Vim instance that is editing "filename" and brings
|
||||
" it to the foreground.
|
||||
func s:EditElsewhere(filename)
|
||||
let fname_esc = substitute(a:filename, "'", "''", "g")
|
||||
|
||||
let servers = serverlist()
|
||||
while servers != ''
|
||||
" Get next server name in "servername"; remove it from "servers".
|
||||
let i = match(servers, "\n")
|
||||
if i == -1
|
||||
let servername = servers
|
||||
let servers = ''
|
||||
else
|
||||
let servername = strpart(servers, 0, i)
|
||||
let servers = strpart(servers, i + 1)
|
||||
endif
|
||||
|
||||
" Skip ourselves.
|
||||
if servername ==? v:servername
|
||||
continue
|
||||
endif
|
||||
|
||||
" Check if this server is editing our file.
|
||||
if remote_expr(servername, "bufloaded('" . fname_esc . "')")
|
||||
" Yes, bring it to the foreground.
|
||||
if has("win32")
|
||||
call remote_foreground(servername)
|
||||
endif
|
||||
call remote_expr(servername, "foreground()")
|
||||
|
||||
if remote_expr(servername, "exists('*EditExisting')")
|
||||
" Make sure the file is visible in a window (not hidden).
|
||||
" If v:swapcommand exists and is set, send it to the server.
|
||||
if exists("v:swapcommand")
|
||||
let c = substitute(v:swapcommand, "'", "''", "g")
|
||||
call remote_expr(servername, "EditExisting('" . fname_esc . "', '" . c . "')")
|
||||
else
|
||||
call remote_expr(servername, "EditExisting('" . fname_esc . "', '')")
|
||||
endif
|
||||
endif
|
||||
|
||||
if !(has('vim_starting') && has('gui_running') && has('gui_win32'))
|
||||
" Tell the user what is happening. Not when the GUI is starting
|
||||
" though, it would result in a message box.
|
||||
echomsg "File is being edited by " . servername
|
||||
sleep 2
|
||||
endif
|
||||
return 'q'
|
||||
endif
|
||||
endwhile
|
||||
return ''
|
||||
endfunc
|
||||
|
||||
" When the plugin is loaded and there is one file name argument: Find another
|
||||
" Vim server that is editing this file right now.
|
||||
if argc() == 1 && !&modified
|
||||
if s:EditElsewhere(expand("%:p")) == 'q'
|
||||
quit
|
||||
endif
|
||||
endif
|
||||
|
||||
" Setup for handling the situation that an existing swap file is found.
|
||||
try
|
||||
au! SwapExists * let v:swapchoice = s:EditElsewhere(expand("<afile>:p"))
|
||||
catch
|
||||
" Without SwapExists we don't do anything for ":edit" commands
|
||||
endtry
|
||||
|
||||
" Function used on the server to make the file visible and possibly execute a
|
||||
" command.
|
||||
func! EditExisting(fname, command)
|
||||
" Get the window number of the file in the current tab page.
|
||||
let winnr = bufwinnr(a:fname)
|
||||
if winnr <= 0
|
||||
" Not found, look in other tab pages.
|
||||
let bufnr = bufnr(a:fname)
|
||||
for i in range(tabpagenr('$'))
|
||||
if index(tabpagebuflist(i + 1), bufnr) >= 0
|
||||
" Make this tab page the current one and find the window number.
|
||||
exe 'tabnext ' . (i + 1)
|
||||
let winnr = bufwinnr(a:fname)
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
if winnr > 0
|
||||
exe winnr . "wincmd w"
|
||||
elseif exists('*fnameescape')
|
||||
exe "split " . fnameescape(a:fname)
|
||||
else
|
||||
exe "split " . escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
|
||||
endif
|
||||
|
||||
if a:command != ''
|
||||
exe "normal! " . a:command
|
||||
endif
|
||||
|
||||
redraw
|
||||
endfunc
|
||||
" Load the editexisting package.
|
||||
" For those users who were loading the editexisting plugin from here.
|
||||
packadd editexisting
|
||||
|
||||
+3
-316
@@ -1,316 +1,3 @@
|
||||
" Function to left and right align text.
|
||||
"
|
||||
" Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk>
|
||||
" Created: 980806 14:13 (or around that time anyway)
|
||||
" Revised: 001103 00:36 (See "Revisions" below)
|
||||
|
||||
|
||||
" function Justify( [ textwidth [, maxspaces [, indent] ] ] )
|
||||
"
|
||||
" Justify() will left and right align a line by filling in an
|
||||
" appropriate amount of spaces. Extra spaces are added to existing
|
||||
" spaces starting from the right side of the line. As an example, the
|
||||
" following documentation has been justified.
|
||||
"
|
||||
" The function takes the following arguments:
|
||||
|
||||
" textwidth argument
|
||||
" ------------------
|
||||
" If not specified, the value of the 'textwidth' option is used. If
|
||||
" 'textwidth' is zero a value of 80 is used.
|
||||
"
|
||||
" Additionally the arguments 'tw' and '' are accepted. The value of
|
||||
" 'textwidth' will be used. These are handy, if you just want to specify
|
||||
" the maxspaces argument.
|
||||
|
||||
" maxspaces argument
|
||||
" ------------------
|
||||
" If specified, alignment will only be done, if the longest space run
|
||||
" after alignment is no longer than maxspaces.
|
||||
"
|
||||
" An argument of '' is accepted, should the user like to specify all
|
||||
" arguments.
|
||||
"
|
||||
" To aid user defined commands, negative values are accepted aswell.
|
||||
" Using a negative value specifies the default behaviour: any length of
|
||||
" space runs will be used to justify the text.
|
||||
|
||||
" indent argument
|
||||
" ---------------
|
||||
" This argument specifies how a line should be indented. The default is
|
||||
" to keep the current indentation.
|
||||
"
|
||||
" Negative values: Keep current amount of leading whitespace.
|
||||
" Positive values: Indent all lines with leading whitespace using this
|
||||
" amount of whitespace.
|
||||
"
|
||||
" Note that the value 0, needs to be quoted as a string. This value
|
||||
" leads to a left flushed text.
|
||||
"
|
||||
" Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be
|
||||
" added. In this case, if the value of indent is positive, the amount of
|
||||
" whitespace to be added will be multiplied by the value of the
|
||||
" 'shiftwidth' and 'tabstop' settings. If these units are used, the
|
||||
" argument must be given as a string, eg. Justify('','','2sw').
|
||||
"
|
||||
" If the values of 'sw' or 'tw' are negative, they are treated as if
|
||||
" they were 0, which means that the text is flushed left. There is no
|
||||
" check if a negative number prefix is used to change the sign of a
|
||||
" negative 'sw' or 'ts' value.
|
||||
"
|
||||
" As with the other arguments, '' may be used to get the default
|
||||
" behaviour.
|
||||
|
||||
|
||||
" Notes:
|
||||
"
|
||||
" If the line, adjusted for space runs and leading/trailing whitespace,
|
||||
" is wider than the used textwidth, the line will be left untouched (no
|
||||
" whitespace removed). This should be equivalent to the behaviour of
|
||||
" :left, :right and :center.
|
||||
"
|
||||
" If the resulting line is shorter than the used textwidth it is left
|
||||
" untouched.
|
||||
"
|
||||
" All space runs in the line are truncated before the alignment is
|
||||
" carried out.
|
||||
"
|
||||
" If you have set 'noexpandtab', :retab! is used to replace space runs
|
||||
" with whitespace using the value of 'tabstop'. This should be
|
||||
" conformant with :left, :right and :center.
|
||||
"
|
||||
" If joinspaces is set, an extra space is added after '.', '?' and '!'.
|
||||
" If 'cpooptions' include 'j', extra space is only added after '.'.
|
||||
" (This may on occasion conflict with maxspaces.)
|
||||
|
||||
|
||||
" Related mappings:
|
||||
"
|
||||
" Mappings that will align text using the current text width, using at
|
||||
" most four spaces in a space run and keeping current indentation.
|
||||
nmap _j :%call Justify('tw',4)<CR>
|
||||
vmap _j :call Justify('tw',4)<CR>
|
||||
"
|
||||
" Mappings that will remove space runs and format lines (might be useful
|
||||
" prior to aligning the text).
|
||||
nmap ,gq :%s/\s\+/ /g<CR>gq1G
|
||||
vmap ,gq :s/\s\+/ /g<CR>gvgq
|
||||
|
||||
|
||||
" User defined command:
|
||||
"
|
||||
" The following is an ex command that works as a shortcut to the Justify
|
||||
" function. Arguments to Justify() can be added after the command.
|
||||
com! -range -nargs=* Justify <line1>,<line2>call Justify(<f-args>)
|
||||
"
|
||||
" The following commands are all equivalent:
|
||||
"
|
||||
" 1. Simplest use of Justify():
|
||||
" :call Justify()
|
||||
" :Justify
|
||||
"
|
||||
" 2. The _j mapping above via the ex command:
|
||||
" :%Justify tw 4
|
||||
"
|
||||
" 3. Justify visualised text at 72nd column while indenting all
|
||||
" previously indented text two shiftwidths
|
||||
" :'<,'>call Justify(72,'','2sw')
|
||||
" :'<,'>Justify 72 -1 2sw
|
||||
"
|
||||
" This documentation has been justified using the following command:
|
||||
":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" /
|
||||
|
||||
" Revisions:
|
||||
" 001103: If 'joinspaces' was set, calculations could be wrong.
|
||||
" Tabs at start of line could also lead to errors.
|
||||
" Use setline() instead of "exec 's/foo/bar/' - safer.
|
||||
" Cleaned up the code a bit.
|
||||
"
|
||||
" Todo: Convert maps to the new script specific form
|
||||
|
||||
" Error function
|
||||
function! Justify_error(message)
|
||||
echohl Error
|
||||
echo "Justify([tw, [maxspaces [, indent]]]): " . a:message
|
||||
echohl None
|
||||
endfunction
|
||||
|
||||
|
||||
" Now for the real thing
|
||||
function! Justify(...) range
|
||||
|
||||
if a:0 > 3
|
||||
call Justify_error("Too many arguments (max 3)")
|
||||
return 1
|
||||
endif
|
||||
|
||||
" Set textwidth (accept 'tw' and '' as arguments)
|
||||
if a:0 >= 1
|
||||
if a:1 =~ '^\(tw\)\=$'
|
||||
let tw = &tw
|
||||
elseif a:1 =~ '^\d\+$'
|
||||
let tw = a:1
|
||||
else
|
||||
call Justify_error("tw must be a number (>0), '' or 'tw'")
|
||||
return 2
|
||||
endif
|
||||
else
|
||||
let tw = &tw
|
||||
endif
|
||||
if tw == 0
|
||||
let tw = 80
|
||||
endif
|
||||
|
||||
" Set maximum number of spaces between WORDs
|
||||
if a:0 >= 2
|
||||
if a:2 == ''
|
||||
let maxspaces = tw
|
||||
elseif a:2 =~ '^-\d\+$'
|
||||
let maxspaces = tw
|
||||
elseif a:2 =~ '^\d\+$'
|
||||
let maxspaces = a:2
|
||||
else
|
||||
call Justify_error("maxspaces must be a number or ''")
|
||||
return 3
|
||||
endif
|
||||
else
|
||||
let maxspaces = tw
|
||||
endif
|
||||
if maxspaces <= 1
|
||||
call Justify_error("maxspaces should be larger than 1")
|
||||
return 4
|
||||
endif
|
||||
|
||||
" Set the indentation style (accept sw and ts units)
|
||||
let indent_fix = ''
|
||||
if a:0 >= 3
|
||||
if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$'
|
||||
let indent = -1
|
||||
elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$'
|
||||
let indent = 0
|
||||
elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$'
|
||||
let indent = substitute(a:3, '\D', '', 'g')
|
||||
elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$'
|
||||
let indent = 1
|
||||
else
|
||||
call Justify_error("indent: a number with 'sw'/'ts' unit")
|
||||
return 5
|
||||
endif
|
||||
if indent >= 0
|
||||
while indent > 0
|
||||
let indent_fix = indent_fix . ' '
|
||||
let indent = indent - 1
|
||||
endwhile
|
||||
let indent_sw = 0
|
||||
if a:3 =~ '\(shiftwidth\|sw\)'
|
||||
let indent_sw = &sw
|
||||
elseif a:3 =~ '\(tabstop\|ts\)'
|
||||
let indent_sw = &ts
|
||||
endif
|
||||
let indent_fix2 = ''
|
||||
while indent_sw > 0
|
||||
let indent_fix2 = indent_fix2 . indent_fix
|
||||
let indent_sw = indent_sw - 1
|
||||
endwhile
|
||||
let indent_fix = indent_fix2
|
||||
endif
|
||||
else
|
||||
let indent = -1
|
||||
endif
|
||||
|
||||
" Avoid substitution reports
|
||||
let save_report = &report
|
||||
set report=1000000
|
||||
|
||||
" Check 'joinspaces' and 'cpo'
|
||||
if &js == 1
|
||||
if &cpo =~ 'j'
|
||||
let join_str = '\(\. \)'
|
||||
else
|
||||
let join_str = '\([.!?!] \)'
|
||||
endif
|
||||
endif
|
||||
|
||||
let cur = a:firstline
|
||||
while cur <= a:lastline
|
||||
|
||||
let str_orig = getline(cur)
|
||||
let save_et = &et
|
||||
set et
|
||||
exec cur . "retab"
|
||||
let &et = save_et
|
||||
let str = getline(cur)
|
||||
|
||||
let indent_str = indent_fix
|
||||
let indent_n = strlen(indent_str)
|
||||
" Shall we remember the current indentation
|
||||
if indent < 0
|
||||
let indent_orig = matchstr(str_orig, '^\s*')
|
||||
if strlen(indent_orig) > 0
|
||||
let indent_str = indent_orig
|
||||
let indent_n = strlen(matchstr(str, '^\s*'))
|
||||
endif
|
||||
endif
|
||||
|
||||
" Trim trailing, leading and running whitespace
|
||||
let str = substitute(str, '\s\+$', '', '')
|
||||
let str = substitute(str, '^\s\+', '', '')
|
||||
let str = substitute(str, '\s\+', ' ', 'g')
|
||||
let str_n = strdisplaywidth(str)
|
||||
|
||||
" Possible addition of space after punctuation
|
||||
if exists("join_str")
|
||||
let str = substitute(str, join_str, '\1 ', 'g')
|
||||
endif
|
||||
let join_n = strdisplaywidth(str) - str_n
|
||||
|
||||
" Can extraspaces be added?
|
||||
" Note that str_n may be less than strlen(str) [joinspaces above]
|
||||
if strdisplaywidth(str) <= tw - indent_n && str_n > 0
|
||||
" How many spaces should be added
|
||||
let s_add = tw - str_n - indent_n - join_n
|
||||
let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n
|
||||
let s_dup = s_add / s_nr
|
||||
let s_mod = s_add % s_nr
|
||||
|
||||
" Test if the changed line fits with tw
|
||||
if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw
|
||||
|
||||
" Duplicate spaces
|
||||
while s_dup > 0
|
||||
let str = substitute(str, '\( \+\)', ' \1', 'g')
|
||||
let s_dup = s_dup - 1
|
||||
endwhile
|
||||
|
||||
" Add extra spaces from the end
|
||||
while s_mod > 0
|
||||
let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '')
|
||||
let s_mod = s_mod - 1
|
||||
endwhile
|
||||
|
||||
" Indent the line
|
||||
if indent_n > 0
|
||||
let str = substitute(str, '^', indent_str, '' )
|
||||
endif
|
||||
|
||||
" Replace the line
|
||||
call setline(cur, str)
|
||||
|
||||
" Convert to whitespace
|
||||
if &et == 0
|
||||
exec cur . 'retab!'
|
||||
endif
|
||||
|
||||
endif " Change of line
|
||||
endif " Possible change
|
||||
|
||||
let cur = cur + 1
|
||||
endwhile
|
||||
|
||||
norm ^
|
||||
|
||||
let &report = save_report
|
||||
|
||||
endfunction
|
||||
|
||||
" EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai
|
||||
" Load the justify package.
|
||||
" For those users who were loading the justify plugin from here.
|
||||
packadd justify
|
||||
|
||||
+3
-813
@@ -1,813 +1,3 @@
|
||||
" matchit.vim: (global plugin) Extended "%" matching
|
||||
" Last Change: Fri Jan 25 10:00 AM 2008 EST
|
||||
" Maintainer: Benji Fisher PhD <benji@member.AMS.org>
|
||||
" Version: 1.13.2, for Vim 6.3+
|
||||
" URL: http://www.vim.org/script.php?script_id=39
|
||||
|
||||
" Documentation:
|
||||
" The documentation is in a separate file, matchit.txt .
|
||||
|
||||
" Credits:
|
||||
" Vim editor by Bram Moolenaar (Thanks, Bram!)
|
||||
" Original script and design by Raul Segura Acevedo
|
||||
" Support for comments by Douglas Potts
|
||||
" Support for back references and other improvements by Benji Fisher
|
||||
" Support for many languages by Johannes Zellner
|
||||
" Suggestions for improvement, bug reports, and support for additional
|
||||
" languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark
|
||||
" Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner.
|
||||
|
||||
" Debugging:
|
||||
" If you'd like to try the built-in debugging commands...
|
||||
" :MatchDebug to activate debugging for the current buffer
|
||||
" This saves the values of several key script variables as buffer-local
|
||||
" variables. See the MatchDebug() function, below, for details.
|
||||
|
||||
" TODO: I should think about multi-line patterns for b:match_words.
|
||||
" This would require an option: how many lines to scan (default 1).
|
||||
" This would be useful for Python, maybe also for *ML.
|
||||
" TODO: Maybe I should add a menu so that people will actually use some of
|
||||
" the features that I have implemented.
|
||||
" TODO: Eliminate the MultiMatch function. Add yet another argument to
|
||||
" Match_wrapper() instead.
|
||||
" TODO: Allow :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1'
|
||||
" TODO: Make backrefs safer by using '\V' (very no-magic).
|
||||
" TODO: Add a level of indirection, so that custom % scripts can use my
|
||||
" work but extend it.
|
||||
|
||||
" allow user to prevent loading
|
||||
" and prevent duplicate loading
|
||||
if exists("loaded_matchit") || &cp
|
||||
finish
|
||||
endif
|
||||
let loaded_matchit = 1
|
||||
let s:last_mps = ""
|
||||
let s:last_words = ":"
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
nnoremap <silent> % :<C-U>call <SID>Match_wrapper('',1,'n') <CR>
|
||||
nnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'n') <CR>
|
||||
vnoremap <silent> % :<C-U>call <SID>Match_wrapper('',1,'v') <CR>m'gv``
|
||||
vnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'v') <CR>m'gv``
|
||||
onoremap <silent> % v:<C-U>call <SID>Match_wrapper('',1,'o') <CR>
|
||||
onoremap <silent> g% v:<C-U>call <SID>Match_wrapper('',0,'o') <CR>
|
||||
|
||||
" Analogues of [{ and ]} using matching patterns:
|
||||
nnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "n") <CR>
|
||||
nnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W", "n") <CR>
|
||||
vmap [% <Esc>[%m'gv``
|
||||
vmap ]% <Esc>]%m'gv``
|
||||
" vnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "v") <CR>m'gv``
|
||||
" vnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W", "v") <CR>m'gv``
|
||||
onoremap <silent> [% v:<C-U>call <SID>MultiMatch("bW", "o") <CR>
|
||||
onoremap <silent> ]% v:<C-U>call <SID>MultiMatch("W", "o") <CR>
|
||||
|
||||
" text object:
|
||||
vmap a% <Esc>[%v]%
|
||||
|
||||
" Auto-complete mappings: (not yet "ready for prime time")
|
||||
" TODO Read :help write-plugin for the "right" way to let the user
|
||||
" specify a key binding.
|
||||
" let g:match_auto = '<C-]>'
|
||||
" let g:match_autoCR = '<C-CR>'
|
||||
" if exists("g:match_auto")
|
||||
" execute "inoremap " . g:match_auto . ' x<Esc>"=<SID>Autocomplete()<CR>Pls'
|
||||
" endif
|
||||
" if exists("g:match_autoCR")
|
||||
" execute "inoremap " . g:match_autoCR . ' <CR><C-R>=<SID>Autocomplete()<CR>'
|
||||
" endif
|
||||
" if exists("g:match_gthhoh")
|
||||
" execute "inoremap " . g:match_gthhoh . ' <C-O>:call <SID>Gthhoh()<CR>'
|
||||
" endif " gthhoh = "Get the heck out of here!"
|
||||
|
||||
let s:notslash = '\\\@<!\%(\\\\\)*'
|
||||
|
||||
function! s:Match_wrapper(word, forward, mode) range
|
||||
" In s:CleanUp(), :execute "set" restore_options .
|
||||
let restore_options = (&ic ? " " : " no") . "ignorecase"
|
||||
if exists("b:match_ignorecase")
|
||||
let &ignorecase = b:match_ignorecase
|
||||
endif
|
||||
let restore_options = " ve=" . &ve . restore_options
|
||||
set ve=
|
||||
" If this function was called from Visual mode, make sure that the cursor
|
||||
" is at the correct end of the Visual range:
|
||||
if a:mode == "v"
|
||||
execute "normal! gv\<Esc>"
|
||||
endif
|
||||
" In s:CleanUp(), we may need to check whether the cursor moved forward.
|
||||
let startline = line(".")
|
||||
let startcol = col(".")
|
||||
" Use default behavior if called with a count.
|
||||
if v:count
|
||||
exe "normal! " . v:count . "%"
|
||||
return s:CleanUp(restore_options, a:mode, startline, startcol)
|
||||
end
|
||||
|
||||
" First step: if not already done, set the script variables
|
||||
" s:do_BR flag for whether there are backrefs
|
||||
" s:pat parsed version of b:match_words
|
||||
" s:all regexp based on s:pat and the default groups
|
||||
"
|
||||
if !exists("b:match_words") || b:match_words == ""
|
||||
let match_words = ""
|
||||
" Allow b:match_words = "GetVimMatchWords()" .
|
||||
elseif b:match_words =~ ":"
|
||||
let match_words = b:match_words
|
||||
else
|
||||
execute "let match_words =" b:match_words
|
||||
endif
|
||||
" Thanks to Preben "Peppe" Guldberg and Bram Moolenaar for this suggestion!
|
||||
if (match_words != s:last_words) || (&mps != s:last_mps) ||
|
||||
\ exists("b:match_debug")
|
||||
let s:last_words = match_words
|
||||
let s:last_mps = &mps
|
||||
" The next several lines were here before
|
||||
" BF started messing with this script.
|
||||
" quote the special chars in 'matchpairs', replace [,:] with \| and then
|
||||
" append the builtin pairs (/*, */, #if, #ifdef, #else, #elif, #endif)
|
||||
" let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+',
|
||||
" \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>'
|
||||
let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
|
||||
\ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>'
|
||||
" s:all = pattern with all the keywords
|
||||
let match_words = match_words . (strlen(match_words) ? "," : "") . default
|
||||
if match_words !~ s:notslash . '\\\d'
|
||||
let s:do_BR = 0
|
||||
let s:pat = match_words
|
||||
else
|
||||
let s:do_BR = 1
|
||||
let s:pat = s:ParseWords(match_words)
|
||||
endif
|
||||
let s:all = substitute(s:pat, s:notslash . '\zs[,:]\+', '\\|', 'g')
|
||||
let s:all = '\%(' . s:all . '\)'
|
||||
" let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)'
|
||||
if exists("b:match_debug")
|
||||
let b:match_pat = s:pat
|
||||
endif
|
||||
endif
|
||||
|
||||
" Second step: set the following local variables:
|
||||
" matchline = line on which the cursor started
|
||||
" curcol = number of characters before match
|
||||
" prefix = regexp for start of line to start of match
|
||||
" suffix = regexp for end of match to end of line
|
||||
" Require match to end on or after the cursor and prefer it to
|
||||
" start on or before the cursor.
|
||||
let matchline = getline(startline)
|
||||
if a:word != ''
|
||||
" word given
|
||||
if a:word !~ s:all
|
||||
echohl WarningMsg|echo 'Missing rule for word:"'.a:word.'"'|echohl NONE
|
||||
return s:CleanUp(restore_options, a:mode, startline, startcol)
|
||||
endif
|
||||
let matchline = a:word
|
||||
let curcol = 0
|
||||
let prefix = '^\%('
|
||||
let suffix = '\)$'
|
||||
" Now the case when "word" is not given
|
||||
else " Find the match that ends on or after the cursor and set curcol.
|
||||
let regexp = s:Wholematch(matchline, s:all, startcol-1)
|
||||
let curcol = match(matchline, regexp)
|
||||
" If there is no match, give up.
|
||||
if curcol == -1
|
||||
return s:CleanUp(restore_options, a:mode, startline, startcol)
|
||||
endif
|
||||
let endcol = matchend(matchline, regexp)
|
||||
let suf = strlen(matchline) - endcol
|
||||
let prefix = (curcol ? '^.*\%' . (curcol + 1) . 'c\%(' : '^\%(')
|
||||
let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$' : '\)$')
|
||||
endif
|
||||
if exists("b:match_debug")
|
||||
let b:match_match = matchstr(matchline, regexp)
|
||||
let b:match_col = curcol+1
|
||||
endif
|
||||
|
||||
" Third step: Find the group and single word that match, and the original
|
||||
" (backref) versions of these. Then, resolve the backrefs.
|
||||
" Set the following local variable:
|
||||
" group = colon-separated list of patterns, one of which matches
|
||||
" = ini:mid:fin or ini:fin
|
||||
"
|
||||
" Reconstruct the version with unresolved backrefs.
|
||||
let patBR = substitute(match_words.',',
|
||||
\ s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
|
||||
let patBR = substitute(patBR, s:notslash.'\zs:\{2,}', ':', 'g')
|
||||
" Now, set group and groupBR to the matching group: 'if:endif' or
|
||||
" 'while:endwhile' or whatever. A bit of a kluge: s:Choose() returns
|
||||
" group . "," . groupBR, and we pick it apart.
|
||||
let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
|
||||
let i = matchend(group, s:notslash . ",")
|
||||
let groupBR = strpart(group, i)
|
||||
let group = strpart(group, 0, i-1)
|
||||
" Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
|
||||
if s:do_BR " Do the hard part: resolve those backrefs!
|
||||
let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
|
||||
endif
|
||||
if exists("b:match_debug")
|
||||
let b:match_wholeBR = groupBR
|
||||
let i = matchend(groupBR, s:notslash . ":")
|
||||
let b:match_iniBR = strpart(groupBR, 0, i-1)
|
||||
endif
|
||||
|
||||
" Fourth step: Set the arguments for searchpair().
|
||||
let i = matchend(group, s:notslash . ":")
|
||||
let j = matchend(group, '.*' . s:notslash . ":")
|
||||
let ini = strpart(group, 0, i-1)
|
||||
let mid = substitute(strpart(group, i,j-i-1), s:notslash.'\zs:', '\\|', 'g')
|
||||
let fin = strpart(group, j)
|
||||
"Un-escape the remaining , and : characters.
|
||||
let ini = substitute(ini, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
|
||||
let mid = substitute(mid, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
|
||||
let fin = substitute(fin, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
|
||||
" searchpair() requires that these patterns avoid \(\) groups.
|
||||
let ini = substitute(ini, s:notslash . '\zs\\(', '\\%(', 'g')
|
||||
let mid = substitute(mid, s:notslash . '\zs\\(', '\\%(', 'g')
|
||||
let fin = substitute(fin, s:notslash . '\zs\\(', '\\%(', 'g')
|
||||
" Set mid. This is optimized for readability, not micro-efficiency!
|
||||
if a:forward && matchline =~ prefix . fin . suffix
|
||||
\ || !a:forward && matchline =~ prefix . ini . suffix
|
||||
let mid = ""
|
||||
endif
|
||||
" Set flag. This is optimized for readability, not micro-efficiency!
|
||||
if a:forward && matchline =~ prefix . fin . suffix
|
||||
\ || !a:forward && matchline !~ prefix . ini . suffix
|
||||
let flag = "bW"
|
||||
else
|
||||
let flag = "W"
|
||||
endif
|
||||
" Set skip.
|
||||
if exists("b:match_skip")
|
||||
let skip = b:match_skip
|
||||
elseif exists("b:match_comment") " backwards compatibility and testing!
|
||||
let skip = "r:" . b:match_comment
|
||||
else
|
||||
let skip = 's:comment\|string'
|
||||
endif
|
||||
let skip = s:ParseSkip(skip)
|
||||
if exists("b:match_debug")
|
||||
let b:match_ini = ini
|
||||
let b:match_tail = (strlen(mid) ? mid.'\|' : '') . fin
|
||||
endif
|
||||
|
||||
" Fifth step: actually start moving the cursor and call searchpair().
|
||||
" Later, :execute restore_cursor to get to the original screen.
|
||||
let restore_cursor = virtcol(".") . "|"
|
||||
normal! g0
|
||||
let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor
|
||||
normal! H
|
||||
let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
|
||||
execute restore_cursor
|
||||
call cursor(0, curcol + 1)
|
||||
" normal! 0
|
||||
" if curcol
|
||||
" execute "normal!" . curcol . "l"
|
||||
" endif
|
||||
if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
|
||||
let skip = "0"
|
||||
else
|
||||
execute "if " . skip . "| let skip = '0' | endif"
|
||||
endif
|
||||
let sp_return = searchpair(ini, mid, fin, flag, skip)
|
||||
let final_position = "call cursor(" . line(".") . "," . col(".") . ")"
|
||||
" Restore cursor position and original screen.
|
||||
execute restore_cursor
|
||||
normal! m'
|
||||
if sp_return > 0
|
||||
execute final_position
|
||||
endif
|
||||
return s:CleanUp(restore_options, a:mode, startline, startcol, mid.'\|'.fin)
|
||||
endfun
|
||||
|
||||
" Restore options and do some special handling for Operator-pending mode.
|
||||
" The optional argument is the tail of the matching group.
|
||||
fun! s:CleanUp(options, mode, startline, startcol, ...)
|
||||
execute "set" a:options
|
||||
" Open folds, if appropriate.
|
||||
if a:mode != "o"
|
||||
if &foldopen =~ "percent"
|
||||
normal! zv
|
||||
endif
|
||||
" In Operator-pending mode, we want to include the whole match
|
||||
" (for example, d%).
|
||||
" This is only a problem if we end up moving in the forward direction.
|
||||
elseif (a:startline < line(".")) ||
|
||||
\ (a:startline == line(".") && a:startcol < col("."))
|
||||
if a:0
|
||||
" Check whether the match is a single character. If not, move to the
|
||||
" end of the match.
|
||||
let matchline = getline(".")
|
||||
let currcol = col(".")
|
||||
let regexp = s:Wholematch(matchline, a:1, currcol-1)
|
||||
let endcol = matchend(matchline, regexp)
|
||||
if endcol > currcol " This is NOT off by one!
|
||||
call cursor(0, endcol)
|
||||
endif
|
||||
endif " a:0
|
||||
endif " a:mode != "o" && etc.
|
||||
return 0
|
||||
endfun
|
||||
|
||||
" Example (simplified HTML patterns): if
|
||||
" a:groupBR = '<\(\k\+\)>:</\1>'
|
||||
" a:prefix = '^.\{3}\('
|
||||
" a:group = '<\(\k\+\)>:</\(\k\+\)>'
|
||||
" a:suffix = '\).\{2}$'
|
||||
" a:matchline = "123<tag>12" or "123</tag>12"
|
||||
" then extract "tag" from a:matchline and return "<tag>:</tag>" .
|
||||
fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline)
|
||||
if a:matchline !~ a:prefix .
|
||||
\ substitute(a:group, s:notslash . '\zs:', '\\|', 'g') . a:suffix
|
||||
return a:group
|
||||
endif
|
||||
let i = matchend(a:groupBR, s:notslash . ':')
|
||||
let ini = strpart(a:groupBR, 0, i-1)
|
||||
let tailBR = strpart(a:groupBR, i)
|
||||
let word = s:Choose(a:group, a:matchline, ":", "", a:prefix, a:suffix,
|
||||
\ a:groupBR)
|
||||
let i = matchend(word, s:notslash . ":")
|
||||
let wordBR = strpart(word, i)
|
||||
let word = strpart(word, 0, i-1)
|
||||
" Now, a:matchline =~ a:prefix . word . a:suffix
|
||||
if wordBR != ini
|
||||
let table = s:Resolve(ini, wordBR, "table")
|
||||
else
|
||||
" let table = "----------"
|
||||
let table = ""
|
||||
let d = 0
|
||||
while d < 10
|
||||
if tailBR =~ s:notslash . '\\' . d
|
||||
" let table[d] = d
|
||||
let table = table . d
|
||||
else
|
||||
let table = table . "-"
|
||||
endif
|
||||
let d = d + 1
|
||||
endwhile
|
||||
endif
|
||||
let d = 9
|
||||
while d
|
||||
if table[d] != "-"
|
||||
let backref = substitute(a:matchline, a:prefix.word.a:suffix,
|
||||
\ '\'.table[d], "")
|
||||
" Are there any other characters that should be escaped?
|
||||
let backref = escape(backref, '*,:')
|
||||
execute s:Ref(ini, d, "start", "len")
|
||||
let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len)
|
||||
let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d,
|
||||
\ escape(backref, '\\&'), 'g')
|
||||
endif
|
||||
let d = d-1
|
||||
endwhile
|
||||
if exists("b:match_debug")
|
||||
if s:do_BR
|
||||
let b:match_table = table
|
||||
let b:match_word = word
|
||||
else
|
||||
let b:match_table = ""
|
||||
let b:match_word = ""
|
||||
endif
|
||||
endif
|
||||
return ini . ":" . tailBR
|
||||
endfun
|
||||
|
||||
" Input a comma-separated list of groups with backrefs, such as
|
||||
" a:groups = '\(foo\):end\1,\(bar\):end\1'
|
||||
" and return a comma-separated list of groups with backrefs replaced:
|
||||
" return '\(foo\):end\(foo\),\(bar\):end\(bar\)'
|
||||
fun! s:ParseWords(groups)
|
||||
let groups = substitute(a:groups.",", s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
|
||||
let groups = substitute(groups, s:notslash . '\zs:\{2,}', ':', 'g')
|
||||
let parsed = ""
|
||||
while groups =~ '[^,:]'
|
||||
let i = matchend(groups, s:notslash . ':')
|
||||
let j = matchend(groups, s:notslash . ',')
|
||||
let ini = strpart(groups, 0, i-1)
|
||||
let tail = strpart(groups, i, j-i-1) . ":"
|
||||
let groups = strpart(groups, j)
|
||||
let parsed = parsed . ini
|
||||
let i = matchend(tail, s:notslash . ':')
|
||||
while i != -1
|
||||
" In 'if:else:endif', ini='if' and word='else' and then word='endif'.
|
||||
let word = strpart(tail, 0, i-1)
|
||||
let tail = strpart(tail, i)
|
||||
let i = matchend(tail, s:notslash . ':')
|
||||
let parsed = parsed . ":" . s:Resolve(ini, word, "word")
|
||||
endwhile " Now, tail has been used up.
|
||||
let parsed = parsed . ","
|
||||
endwhile " groups =~ '[^,:]'
|
||||
let parsed = substitute(parsed, ',$', '', '')
|
||||
return parsed
|
||||
endfun
|
||||
|
||||
" TODO I think this can be simplified and/or made more efficient.
|
||||
" TODO What should I do if a:start is out of range?
|
||||
" Return a regexp that matches all of a:string, such that
|
||||
" matchstr(a:string, regexp) represents the match for a:pat that starts
|
||||
" as close to a:start as possible, before being preferred to after, and
|
||||
" ends after a:start .
|
||||
" Usage:
|
||||
" let regexp = s:Wholematch(getline("."), 'foo\|bar', col(".")-1)
|
||||
" let i = match(getline("."), regexp)
|
||||
" let j = matchend(getline("."), regexp)
|
||||
" let match = matchstr(getline("."), regexp)
|
||||
fun! s:Wholematch(string, pat, start)
|
||||
let group = '\%(' . a:pat . '\)'
|
||||
let prefix = (a:start ? '\(^.*\%<' . (a:start + 2) . 'c\)\zs' : '^')
|
||||
let len = strlen(a:string)
|
||||
let suffix = (a:start+1 < len ? '\(\%>'.(a:start+1).'c.*$\)\@=' : '$')
|
||||
if a:string !~ prefix . group . suffix
|
||||
let prefix = ''
|
||||
endif
|
||||
return prefix . group . suffix
|
||||
endfun
|
||||
|
||||
" No extra arguments: s:Ref(string, d) will
|
||||
" find the d'th occurrence of '\(' and return it, along with everything up
|
||||
" to and including the matching '\)'.
|
||||
" One argument: s:Ref(string, d, "start") returns the index of the start
|
||||
" of the d'th '\(' and any other argument returns the length of the group.
|
||||
" Two arguments: s:Ref(string, d, "foo", "bar") returns a string to be
|
||||
" executed, having the effect of
|
||||
" :let foo = s:Ref(string, d, "start")
|
||||
" :let bar = s:Ref(string, d, "len")
|
||||
fun! s:Ref(string, d, ...)
|
||||
let len = strlen(a:string)
|
||||
if a:d == 0
|
||||
let start = 0
|
||||
else
|
||||
let cnt = a:d
|
||||
let match = a:string
|
||||
while cnt
|
||||
let cnt = cnt - 1
|
||||
let index = matchend(match, s:notslash . '\\(')
|
||||
if index == -1
|
||||
return ""
|
||||
endif
|
||||
let match = strpart(match, index)
|
||||
endwhile
|
||||
let start = len - strlen(match)
|
||||
if a:0 == 1 && a:1 == "start"
|
||||
return start - 2
|
||||
endif
|
||||
let cnt = 1
|
||||
while cnt
|
||||
let index = matchend(match, s:notslash . '\\(\|\\)') - 1
|
||||
if index == -2
|
||||
return ""
|
||||
endif
|
||||
" Increment if an open, decrement if a ')':
|
||||
let cnt = cnt + (match[index]=="(" ? 1 : -1) " ')'
|
||||
" let cnt = stridx('0(', match[index]) + cnt
|
||||
let match = strpart(match, index+1)
|
||||
endwhile
|
||||
let start = start - 2
|
||||
let len = len - start - strlen(match)
|
||||
endif
|
||||
if a:0 == 1
|
||||
return len
|
||||
elseif a:0 == 2
|
||||
return "let " . a:1 . "=" . start . "| let " . a:2 . "=" . len
|
||||
else
|
||||
return strpart(a:string, start, len)
|
||||
endif
|
||||
endfun
|
||||
|
||||
" Count the number of disjoint copies of pattern in string.
|
||||
" If the pattern is a literal string and contains no '0' or '1' characters
|
||||
" then s:Count(string, pattern, '0', '1') should be faster than
|
||||
" s:Count(string, pattern).
|
||||
fun! s:Count(string, pattern, ...)
|
||||
let pat = escape(a:pattern, '\\')
|
||||
if a:0 > 1
|
||||
let foo = substitute(a:string, '[^'.a:pattern.']', "a:1", "g")
|
||||
let foo = substitute(a:string, pat, a:2, "g")
|
||||
let foo = substitute(foo, '[^' . a:2 . ']', "", "g")
|
||||
return strlen(foo)
|
||||
endif
|
||||
let result = 0
|
||||
let foo = a:string
|
||||
let index = matchend(foo, pat)
|
||||
while index != -1
|
||||
let result = result + 1
|
||||
let foo = strpart(foo, index)
|
||||
let index = matchend(foo, pat)
|
||||
endwhile
|
||||
return result
|
||||
endfun
|
||||
|
||||
" s:Resolve('\(a\)\(b\)', '\(c\)\2\1\1\2') should return table.word, where
|
||||
" word = '\(c\)\(b\)\(a\)\3\2' and table = '-32-------'. That is, the first
|
||||
" '\1' in target is replaced by '\(a\)' in word, table[1] = 3, and this
|
||||
" indicates that all other instances of '\1' in target are to be replaced
|
||||
" by '\3'. The hard part is dealing with nesting...
|
||||
" Note that ":" is an illegal character for source and target,
|
||||
" unless it is preceded by "\".
|
||||
fun! s:Resolve(source, target, output)
|
||||
let word = a:target
|
||||
let i = matchend(word, s:notslash . '\\\d') - 1
|
||||
let table = "----------"
|
||||
while i != -2 " There are back references to be replaced.
|
||||
let d = word[i]
|
||||
let backref = s:Ref(a:source, d)
|
||||
" The idea is to replace '\d' with backref. Before we do this,
|
||||
" replace any \(\) groups in backref with :1, :2, ... if they
|
||||
" correspond to the first, second, ... group already inserted
|
||||
" into backref. Later, replace :1 with \1 and so on. The group
|
||||
" number w+b within backref corresponds to the group number
|
||||
" s within a:source.
|
||||
" w = number of '\(' in word before the current one
|
||||
let w = s:Count(
|
||||
\ substitute(strpart(word, 0, i-1), '\\\\', '', 'g'), '\(', '1')
|
||||
let b = 1 " number of the current '\(' in backref
|
||||
let s = d " number of the current '\(' in a:source
|
||||
while b <= s:Count(substitute(backref, '\\\\', '', 'g'), '\(', '1')
|
||||
\ && s < 10
|
||||
if table[s] == "-"
|
||||
if w + b < 10
|
||||
" let table[s] = w + b
|
||||
let table = strpart(table, 0, s) . (w+b) . strpart(table, s+1)
|
||||
endif
|
||||
let b = b + 1
|
||||
let s = s + 1
|
||||
else
|
||||
execute s:Ref(backref, b, "start", "len")
|
||||
let ref = strpart(backref, start, len)
|
||||
let backref = strpart(backref, 0, start) . ":". table[s]
|
||||
\ . strpart(backref, start+len)
|
||||
let s = s + s:Count(substitute(ref, '\\\\', '', 'g'), '\(', '1')
|
||||
endif
|
||||
endwhile
|
||||
let word = strpart(word, 0, i-1) . backref . strpart(word, i+1)
|
||||
let i = matchend(word, s:notslash . '\\\d') - 1
|
||||
endwhile
|
||||
let word = substitute(word, s:notslash . '\zs:', '\\', 'g')
|
||||
if a:output == "table"
|
||||
return table
|
||||
elseif a:output == "word"
|
||||
return word
|
||||
else
|
||||
return table . word
|
||||
endif
|
||||
endfun
|
||||
|
||||
" Assume a:comma = ",". Then the format for a:patterns and a:1 is
|
||||
" a:patterns = "<pat1>,<pat2>,..."
|
||||
" a:1 = "<alt1>,<alt2>,..."
|
||||
" If <patn> is the first pattern that matches a:string then return <patn>
|
||||
" if no optional arguments are given; return <patn>,<altn> if a:1 is given.
|
||||
fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...)
|
||||
let tail = (a:patterns =~ a:comma."$" ? a:patterns : a:patterns . a:comma)
|
||||
let i = matchend(tail, s:notslash . a:comma)
|
||||
if a:0
|
||||
let alttail = (a:1 =~ a:comma."$" ? a:1 : a:1 . a:comma)
|
||||
let j = matchend(alttail, s:notslash . a:comma)
|
||||
endif
|
||||
let current = strpart(tail, 0, i-1)
|
||||
if a:branch == ""
|
||||
let currpat = current
|
||||
else
|
||||
let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
|
||||
endif
|
||||
while a:string !~ a:prefix . currpat . a:suffix
|
||||
let tail = strpart(tail, i)
|
||||
let i = matchend(tail, s:notslash . a:comma)
|
||||
if i == -1
|
||||
return -1
|
||||
endif
|
||||
let current = strpart(tail, 0, i-1)
|
||||
if a:branch == ""
|
||||
let currpat = current
|
||||
else
|
||||
let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
|
||||
endif
|
||||
if a:0
|
||||
let alttail = strpart(alttail, j)
|
||||
let j = matchend(alttail, s:notslash . a:comma)
|
||||
endif
|
||||
endwhile
|
||||
if a:0
|
||||
let current = current . a:comma . strpart(alttail, 0, j-1)
|
||||
endif
|
||||
return current
|
||||
endfun
|
||||
|
||||
" Call this function to turn on debugging information. Every time the main
|
||||
" script is run, buffer variables will be saved. These can be used directly
|
||||
" or viewed using the menu items below.
|
||||
if !exists(":MatchDebug")
|
||||
command! -nargs=0 MatchDebug call s:Match_debug()
|
||||
endif
|
||||
|
||||
fun! s:Match_debug()
|
||||
let b:match_debug = 1 " Save debugging information.
|
||||
" pat = all of b:match_words with backrefs parsed
|
||||
amenu &Matchit.&pat :echo b:match_pat<CR>
|
||||
" match = bit of text that is recognized as a match
|
||||
amenu &Matchit.&match :echo b:match_match<CR>
|
||||
" curcol = cursor column of the start of the matching text
|
||||
amenu &Matchit.&curcol :echo b:match_col<CR>
|
||||
" wholeBR = matching group, original version
|
||||
amenu &Matchit.wh&oleBR :echo b:match_wholeBR<CR>
|
||||
" iniBR = 'if' piece, original version
|
||||
amenu &Matchit.ini&BR :echo b:match_iniBR<CR>
|
||||
" ini = 'if' piece, with all backrefs resolved from match
|
||||
amenu &Matchit.&ini :echo b:match_ini<CR>
|
||||
" tail = 'else\|endif' piece, with all backrefs resolved from match
|
||||
amenu &Matchit.&tail :echo b:match_tail<CR>
|
||||
" fin = 'endif' piece, with all backrefs resolved from match
|
||||
amenu &Matchit.&word :echo b:match_word<CR>
|
||||
" '\'.d in ini refers to the same thing as '\'.table[d] in word.
|
||||
amenu &Matchit.t&able :echo '0:' . b:match_table . ':9'<CR>
|
||||
endfun
|
||||
|
||||
" Jump to the nearest unmatched "(" or "if" or "<tag>" if a:spflag == "bW"
|
||||
" or the nearest unmatched "</tag>" or "endif" or ")" if a:spflag == "W".
|
||||
" Return a "mark" for the original position, so that
|
||||
" let m = MultiMatch("bW", "n") ... execute m
|
||||
" will return to the original position. If there is a problem, do not
|
||||
" move the cursor and return "", unless a count is given, in which case
|
||||
" go up or down as many levels as possible and again return "".
|
||||
" TODO This relies on the same patterns as % matching. It might be a good
|
||||
" idea to give it its own matching patterns.
|
||||
fun! s:MultiMatch(spflag, mode)
|
||||
if !exists("b:match_words") || b:match_words == ""
|
||||
return ""
|
||||
end
|
||||
let restore_options = (&ic ? "" : "no") . "ignorecase"
|
||||
if exists("b:match_ignorecase")
|
||||
let &ignorecase = b:match_ignorecase
|
||||
endif
|
||||
let startline = line(".")
|
||||
let startcol = col(".")
|
||||
|
||||
" First step: if not already done, set the script variables
|
||||
" s:do_BR flag for whether there are backrefs
|
||||
" s:pat parsed version of b:match_words
|
||||
" s:all regexp based on s:pat and the default groups
|
||||
" This part is copied and slightly modified from s:Match_wrapper().
|
||||
let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
|
||||
\ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>'
|
||||
" Allow b:match_words = "GetVimMatchWords()" .
|
||||
if b:match_words =~ ":"
|
||||
let match_words = b:match_words
|
||||
else
|
||||
execute "let match_words =" b:match_words
|
||||
endif
|
||||
if (match_words != s:last_words) || (&mps != s:last_mps) ||
|
||||
\ exists("b:match_debug")
|
||||
let s:last_words = match_words
|
||||
let s:last_mps = &mps
|
||||
if match_words !~ s:notslash . '\\\d'
|
||||
let s:do_BR = 0
|
||||
let s:pat = match_words
|
||||
else
|
||||
let s:do_BR = 1
|
||||
let s:pat = s:ParseWords(match_words)
|
||||
endif
|
||||
let s:all = '\%(' . substitute(s:pat . (strlen(s:pat)?",":"") . default,
|
||||
\ '[,:]\+','\\|','g') . '\)'
|
||||
if exists("b:match_debug")
|
||||
let b:match_pat = s:pat
|
||||
endif
|
||||
endif
|
||||
|
||||
" Second step: figure out the patterns for searchpair()
|
||||
" and save the screen, cursor position, and 'ignorecase'.
|
||||
" - TODO: A lot of this is copied from s:Match_wrapper().
|
||||
" - maybe even more functionality should be split off
|
||||
" - into separate functions!
|
||||
let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default
|
||||
let open = substitute(s:pat . cdefault,
|
||||
\ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g')
|
||||
let open = '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '')
|
||||
let close = substitute(s:pat . cdefault,
|
||||
\ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g')
|
||||
let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)'
|
||||
if exists("b:match_skip")
|
||||
let skip = b:match_skip
|
||||
elseif exists("b:match_comment") " backwards compatibility and testing!
|
||||
let skip = "r:" . b:match_comment
|
||||
else
|
||||
let skip = 's:comment\|string'
|
||||
endif
|
||||
let skip = s:ParseSkip(skip)
|
||||
" let restore_cursor = line(".") . "G" . virtcol(".") . "|"
|
||||
" normal! H
|
||||
" let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
|
||||
let restore_cursor = virtcol(".") . "|"
|
||||
normal! g0
|
||||
let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor
|
||||
normal! H
|
||||
let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
|
||||
execute restore_cursor
|
||||
|
||||
" Third step: call searchpair().
|
||||
" Replace '\('--but not '\\('--with '\%(' and ',' with '\|'.
|
||||
let openpat = substitute(open, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
|
||||
let openpat = substitute(openpat, ',', '\\|', 'g')
|
||||
let closepat = substitute(close, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
|
||||
let closepat = substitute(closepat, ',', '\\|', 'g')
|
||||
if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
|
||||
let skip = '0'
|
||||
else
|
||||
execute "if " . skip . "| let skip = '0' | endif"
|
||||
endif
|
||||
mark '
|
||||
let level = v:count1
|
||||
while level
|
||||
if searchpair(openpat, '', closepat, a:spflag, skip) < 1
|
||||
call s:CleanUp(restore_options, a:mode, startline, startcol)
|
||||
return ""
|
||||
endif
|
||||
let level = level - 1
|
||||
endwhile
|
||||
|
||||
" Restore options and return a string to restore the original position.
|
||||
call s:CleanUp(restore_options, a:mode, startline, startcol)
|
||||
return restore_cursor
|
||||
endfun
|
||||
|
||||
" Search backwards for "if" or "while" or "<tag>" or ...
|
||||
" and return "endif" or "endwhile" or "</tag>" or ... .
|
||||
" For now, this uses b:match_words and the same script variables
|
||||
" as s:Match_wrapper() . Later, it may get its own patterns,
|
||||
" either from a buffer variable or passed as arguments.
|
||||
" fun! s:Autocomplete()
|
||||
" echo "autocomplete not yet implemented :-("
|
||||
" if !exists("b:match_words") || b:match_words == ""
|
||||
" return ""
|
||||
" end
|
||||
" let startpos = s:MultiMatch("bW")
|
||||
"
|
||||
" if startpos == ""
|
||||
" return ""
|
||||
" endif
|
||||
" " - TODO: figure out whether 'if' or '<tag>' matched, and construct
|
||||
" " - the appropriate closing.
|
||||
" let matchline = getline(".")
|
||||
" let curcol = col(".") - 1
|
||||
" " - TODO: Change the s:all argument if there is a new set of match pats.
|
||||
" let regexp = s:Wholematch(matchline, s:all, curcol)
|
||||
" let suf = strlen(matchline) - matchend(matchline, regexp)
|
||||
" let prefix = (curcol ? '^.\{' . curcol . '}\%(' : '^\%(')
|
||||
" let suffix = (suf ? '\).\{' . suf . '}$' : '\)$')
|
||||
" " Reconstruct the version with unresolved backrefs.
|
||||
" let patBR = substitute(b:match_words.',', '[,:]*,[,:]*', ',', 'g')
|
||||
" let patBR = substitute(patBR, ':\{2,}', ':', "g")
|
||||
" " Now, set group and groupBR to the matching group: 'if:endif' or
|
||||
" " 'while:endwhile' or whatever.
|
||||
" let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
|
||||
" let i = matchend(group, s:notslash . ",")
|
||||
" let groupBR = strpart(group, i)
|
||||
" let group = strpart(group, 0, i-1)
|
||||
" " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
|
||||
" if s:do_BR
|
||||
" let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
|
||||
" endif
|
||||
" " let g:group = group
|
||||
"
|
||||
" " - TODO: Construct the closing from group.
|
||||
" let fake = "end" . expand("<cword>")
|
||||
" execute startpos
|
||||
" return fake
|
||||
" endfun
|
||||
|
||||
" Close all open structures. "Get the heck out of here!"
|
||||
" fun! s:Gthhoh()
|
||||
" let close = s:Autocomplete()
|
||||
" while strlen(close)
|
||||
" put=close
|
||||
" let close = s:Autocomplete()
|
||||
" endwhile
|
||||
" endfun
|
||||
|
||||
" Parse special strings as typical skip arguments for searchpair():
|
||||
" s:foo becomes (current syntax item) =~ foo
|
||||
" S:foo becomes (current syntax item) !~ foo
|
||||
" r:foo becomes (line before cursor) =~ foo
|
||||
" R:foo becomes (line before cursor) !~ foo
|
||||
fun! s:ParseSkip(str)
|
||||
let skip = a:str
|
||||
if skip[1] == ":"
|
||||
if skip[0] == "s"
|
||||
let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" .
|
||||
\ strpart(skip,2) . "'"
|
||||
elseif skip[0] == "S"
|
||||
let skip = "synIDattr(synID(line('.'),col('.'),1),'name') !~? '" .
|
||||
\ strpart(skip,2) . "'"
|
||||
elseif skip[0] == "r"
|
||||
let skip = "strpart(getline('.'),0,col('.'))=~'" . strpart(skip,2). "'"
|
||||
elseif skip[0] == "R"
|
||||
let skip = "strpart(getline('.'),0,col('.'))!~'" . strpart(skip,2). "'"
|
||||
endif
|
||||
endif
|
||||
return skip
|
||||
endfun
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim:sts=2:sw=2:
|
||||
" Load the matchit package.
|
||||
" For those users who were loading the matchit plugin from here.
|
||||
packadd matchit
|
||||
|
||||
@@ -1,94 +1,3 @@
|
||||
" When you're writing shell scripts and you are in doubt which test to use,
|
||||
" which shell environment variables are defined, what the syntax of the case
|
||||
" statement is, and you need to invoke 'man sh'?
|
||||
"
|
||||
" Your problems are over now!
|
||||
"
|
||||
" Attached is a Vim script file for turning gvim into a shell script editor.
|
||||
" It may also be used as an example how to use menus in Vim.
|
||||
"
|
||||
" Written by: Lennart Schultz <les@dmi.min.dk>
|
||||
|
||||
imenu Stmts.for for in
do
doneki kk0elli
|
||||
imenu Stmts.case case in
) ;;
esacbki k0elli
|
||||
imenu Stmts.if if
then
fiki kk0elli
|
||||
imenu Stmts.if-else if
then
else
fiki kki kk0elli
|
||||
imenu Stmts.elif elif
then
ki kk0elli
|
||||
imenu Stmts.while while
do
doneki kk0elli
|
||||
imenu Stmts.break break
|
||||
imenu Stmts.continue continue
|
||||
imenu Stmts.function () {
}ki k0i
|
||||
imenu Stmts.return return
|
||||
imenu Stmts.return-true return 0
|
||||
imenu Stmts.return-false return 1
|
||||
imenu Stmts.exit exit
|
||||
imenu Stmts.shift shift
|
||||
imenu Stmts.trap trap
|
||||
imenu Test.existence [ -e ]hi
|
||||
imenu Test.existence - file [ -f ]hi
|
||||
imenu Test.existence - file (not empty) [ -s ]hi
|
||||
imenu Test.existence - directory [ -d ]hi
|
||||
imenu Test.existence - executable [ -x ]hi
|
||||
imenu Test.existence - readable [ -r ]hi
|
||||
imenu Test.existence - writable [ -w ]hi
|
||||
imenu Test.String is empty [ x = "x$" ]hhi
|
||||
imenu Test.String is not empty [ x != "x$" ]hhi
|
||||
imenu Test.Strings is equal [ "" = "" ]hhhhhhhi
|
||||
imenu Test.Strings is not equal [ "" != "" ]hhhhhhhhi
|
||||
imenu Test.Values is greater than [ -gt ]hhhhhhi
|
||||
imenu Test.Values is greater equal [ -ge ]hhhhhhi
|
||||
imenu Test.Values is equal [ -eq ]hhhhhhi
|
||||
imenu Test.Values is not equal [ -ne ]hhhhhhi
|
||||
imenu Test.Values is less than [ -lt ]hhhhhhi
|
||||
imenu Test.Values is less equal [ -le ]hhhhhhi
|
||||
imenu ParmSub.Substitute word if parm not set ${:-}hhi
|
||||
imenu ParmSub.Set parm to word if not set ${:=}hhi
|
||||
imenu ParmSub.Substitute word if parm set else nothing ${:+}hhi
|
||||
imenu ParmSub.If parm not set print word and exit ${:?}hhi
|
||||
imenu SpShVars.Number of positional parameters ${#}
|
||||
imenu SpShVars.All positional parameters (quoted spaces) ${*}
|
||||
imenu SpShVars.All positional parameters (unquoted spaces) ${@}
|
||||
imenu SpShVars.Flags set ${-}
|
||||
imenu SpShVars.Return code of last command ${?}
|
||||
imenu SpShVars.Process number of this shell ${$}
|
||||
imenu SpShVars.Process number of last background command ${!}
|
||||
imenu Environ.HOME ${HOME}
|
||||
imenu Environ.PATH ${PATH}
|
||||
imenu Environ.CDPATH ${CDPATH}
|
||||
imenu Environ.MAIL ${MAIL}
|
||||
imenu Environ.MAILCHECK ${MAILCHECK}
|
||||
imenu Environ.PS1 ${PS1}
|
||||
imenu Environ.PS2 ${PS2}
|
||||
imenu Environ.IFS ${IFS}
|
||||
imenu Environ.SHACCT ${SHACCT}
|
||||
imenu Environ.SHELL ${SHELL}
|
||||
imenu Environ.LC_CTYPE ${LC_CTYPE}
|
||||
imenu Environ.LC_MESSAGES ${LC_MESSAGES}
|
||||
imenu Builtins.cd cd
|
||||
imenu Builtins.echo echo
|
||||
imenu Builtins.eval eval
|
||||
imenu Builtins.exec exec
|
||||
imenu Builtins.export export
|
||||
imenu Builtins.getopts getopts
|
||||
imenu Builtins.hash hash
|
||||
imenu Builtins.newgrp newgrp
|
||||
imenu Builtins.pwd pwd
|
||||
imenu Builtins.read read
|
||||
imenu Builtins.readonly readonly
|
||||
imenu Builtins.return return
|
||||
imenu Builtins.times times
|
||||
imenu Builtins.type type
|
||||
imenu Builtins.umask umask
|
||||
imenu Builtins.wait wait
|
||||
imenu Set.set set
|
||||
imenu Set.unset unset
|
||||
imenu Set.mark modified or modified variables set -a
|
||||
imenu Set.exit when command returns non-zero exit code set -e
|
||||
imenu Set.Disable file name generation set -f
|
||||
imenu Set.remember function commands set -h
|
||||
imenu Set.All keyword arguments are placed in the environment set -k
|
||||
imenu Set.Read commands but do not execute them set -n
|
||||
imenu Set.Exit after reading and executing one command set -t
|
||||
imenu Set.Treat unset variables as an error when substituting set -u
|
||||
imenu Set.Print shell input lines as they are read set -v
|
||||
imenu Set.Print commands and their arguments as they are executed set -x
|
||||
" Load the shellmenu package.
|
||||
" For those users who were loading the shellmenu plugin from here.
|
||||
packadd shellmenu
|
||||
|
||||
@@ -1,22 +1,3 @@
|
||||
" These macros swap the left and right mouse buttons (for left handed)
|
||||
" Don't forget to do ":set mouse=a" or the mouse won't work at all
|
||||
noremap <LeftMouse> <RightMouse>
|
||||
noremap <2-LeftMouse> <2-RightMouse>
|
||||
noremap <3-LeftMouse> <3-RightMouse>
|
||||
noremap <4-LeftMouse> <4-RightMouse>
|
||||
noremap <LeftDrag> <RightDrag>
|
||||
noremap <LeftRelease> <RightRelease>
|
||||
noremap <RightMouse> <LeftMouse>
|
||||
noremap <2-RightMouse> <2-LeftMouse>
|
||||
noremap <3-RightMouse> <3-LeftMouse>
|
||||
noremap <4-RightMouse> <4-LeftMouse>
|
||||
noremap <RightDrag> <LeftDrag>
|
||||
noremap <RightRelease> <LeftRelease>
|
||||
noremap g<LeftMouse> <C-RightMouse>
|
||||
noremap g<RightMouse> <C-LeftMouse>
|
||||
noremap! <LeftMouse> <RightMouse>
|
||||
noremap! <LeftDrag> <RightDrag>
|
||||
noremap! <LeftRelease> <RightRelease>
|
||||
noremap! <RightMouse> <LeftMouse>
|
||||
noremap! <RightDrag> <LeftDrag>
|
||||
noremap! <RightRelease> <LeftRelease>
|
||||
" Load the swapmouse package.
|
||||
" For those users who were loading the swapmous plugin from here.
|
||||
packadd swapmouse
|
||||
|
||||
+11
-5
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2016 Feb 21
|
||||
" Last Change: 2016 Apr 30
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
if bufwinnr("option-window") > 0
|
||||
@@ -412,6 +412,10 @@ call append("$", "highlight\twhich highlighting to use for various occasions")
|
||||
call <SID>OptionG("hl", &hl)
|
||||
call append("$", "hlsearch\thighlight all matches for the last used search pattern")
|
||||
call <SID>BinOptionG("hls", &hls)
|
||||
if has("termguicolors")
|
||||
call append("$", "termguicolors\tuse GUI colors for the terminal")
|
||||
call <SID>BinOptionG("tgc", &tgc)
|
||||
endif
|
||||
if has("syntax")
|
||||
call append("$", "cursorcolumn\thighlight the screen column of the cursor")
|
||||
call append("$", "\t(local to window)")
|
||||
@@ -753,6 +757,10 @@ call <SID>Header("editing text")
|
||||
call append("$", "undolevels\tmaximum number of changes that can be undone")
|
||||
call append("$", "\t(global or local to buffer)")
|
||||
call append("$", " \tset ul=" . &ul)
|
||||
call append("$", "undofile\tautomatically save and restore undo history")
|
||||
call <SID>BinOptionG("udf", &udf)
|
||||
call append("$", "undodir\tlist of directories for undo files")
|
||||
call <SID>OptionG("udir", &udir)
|
||||
call append("$", "undoreload\tmaximum number lines to save for undo on a buffer reload")
|
||||
call append("$", " \tset ur=" . &ur)
|
||||
call append("$", "modified\tchanges have been made and not written to a file")
|
||||
@@ -1089,10 +1097,6 @@ if has("vertsplit")
|
||||
call append("$", "cmdwinheight\theight of the command-line window")
|
||||
call <SID>OptionG("cwh", &cwh)
|
||||
endif
|
||||
call append("$", "undofile\tautomatically save and restore undo history")
|
||||
call <SID>BinOptionG("udf", &udf)
|
||||
call append("$", "undodir\tlist of directories for undo files")
|
||||
call <SID>OptionG("udir", &udir)
|
||||
|
||||
|
||||
call <SID>Header("executing external commands")
|
||||
@@ -1269,6 +1273,8 @@ if has("multi_byte")
|
||||
endif
|
||||
call append("$", "ambiwidth\twidth of ambiguous width characters")
|
||||
call <SID>OptionG("ambw", &ambw)
|
||||
call append("$", "emoji\temoji characters are full width")
|
||||
call <SID>BinOptionG("emo", &emo)
|
||||
endif
|
||||
|
||||
|
||||
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
" Back to Qwerty keyboard after using Dvorak.
|
||||
|
||||
iunmap a
|
||||
iunmap b
|
||||
iunmap c
|
||||
iunmap d
|
||||
iunmap e
|
||||
iunmap f
|
||||
iunmap g
|
||||
iunmap h
|
||||
iunmap i
|
||||
iunmap j
|
||||
iunmap k
|
||||
iunmap l
|
||||
iunmap m
|
||||
iunmap n
|
||||
iunmap o
|
||||
iunmap p
|
||||
iunmap q
|
||||
iunmap r
|
||||
iunmap s
|
||||
iunmap t
|
||||
iunmap u
|
||||
iunmap v
|
||||
iunmap w
|
||||
iunmap x
|
||||
iunmap y
|
||||
iunmap z
|
||||
iunmap ;
|
||||
iunmap '
|
||||
iunmap "
|
||||
iunmap ,
|
||||
iunmap .
|
||||
iunmap /
|
||||
iunmap A
|
||||
iunmap B
|
||||
iunmap C
|
||||
iunmap D
|
||||
iunmap E
|
||||
iunmap F
|
||||
iunmap G
|
||||
iunmap H
|
||||
iunmap I
|
||||
iunmap J
|
||||
iunmap K
|
||||
iunmap L
|
||||
iunmap M
|
||||
iunmap N
|
||||
iunmap O
|
||||
iunmap P
|
||||
iunmap Q
|
||||
iunmap R
|
||||
iunmap S
|
||||
iunmap T
|
||||
iunmap U
|
||||
iunmap V
|
||||
iunmap W
|
||||
iunmap X
|
||||
iunmap Y
|
||||
iunmap Z
|
||||
iunmap <
|
||||
iunmap >
|
||||
iunmap ?
|
||||
iunmap :
|
||||
iunmap [
|
||||
iunmap ]
|
||||
iunmap {
|
||||
iunmap }
|
||||
iunmap -
|
||||
iunmap _
|
||||
iunmap =
|
||||
iunmap +
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
" Dvorak keyboard, only in Insert mode.
|
||||
"
|
||||
" Change "inoremap" to "map!" to also use in Ex mode.
|
||||
" Also change disable.vim then: "iunmap" to "unmap!".
|
||||
"
|
||||
" You may want to add a list of map's too.
|
||||
|
||||
inoremap a a
|
||||
inoremap b x
|
||||
inoremap c j
|
||||
inoremap d e
|
||||
inoremap e .
|
||||
inoremap f u
|
||||
inoremap g i
|
||||
inoremap h d
|
||||
inoremap i c
|
||||
inoremap j h
|
||||
inoremap k t
|
||||
inoremap l n
|
||||
inoremap m m
|
||||
inoremap n b
|
||||
inoremap o r
|
||||
inoremap p l
|
||||
inoremap q '
|
||||
inoremap r p
|
||||
inoremap s o
|
||||
inoremap t y
|
||||
inoremap u g
|
||||
inoremap v k
|
||||
inoremap w ,
|
||||
inoremap x q
|
||||
inoremap y f
|
||||
inoremap z ;
|
||||
inoremap ; s
|
||||
inoremap ' -
|
||||
inoremap " _
|
||||
inoremap , w
|
||||
inoremap . v
|
||||
inoremap / z
|
||||
inoremap A A
|
||||
inoremap B X
|
||||
inoremap C J
|
||||
inoremap D E
|
||||
inoremap E >
|
||||
inoremap F U
|
||||
inoremap G I
|
||||
inoremap H D
|
||||
inoremap I C
|
||||
inoremap J H
|
||||
inoremap K T
|
||||
inoremap L N
|
||||
inoremap M M
|
||||
inoremap N B
|
||||
inoremap O R
|
||||
inoremap P L
|
||||
inoremap Q "
|
||||
inoremap R P
|
||||
inoremap S O
|
||||
inoremap T Y
|
||||
inoremap U G
|
||||
inoremap V K
|
||||
inoremap W <
|
||||
inoremap X Q
|
||||
inoremap Y F
|
||||
inoremap Z :
|
||||
inoremap < W
|
||||
inoremap > V
|
||||
inoremap ? Z
|
||||
inoremap : S
|
||||
inoremap [ /
|
||||
inoremap ] =
|
||||
inoremap { ?
|
||||
inoremap } +
|
||||
inoremap - [
|
||||
inoremap _ {
|
||||
inoremap = ]
|
||||
inoremap + }
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
" When using a dvorak keyboard this file may be of help to you.
|
||||
" These mappings have been made by Lawrence Kesteloot <kesteloo@cs.unc.edu>.
|
||||
" What they do is that the most often used keys, like hjkl, are put in a more
|
||||
" easy to use position.
|
||||
" It may take some time to learn using this.
|
||||
|
||||
if exists("g:loaded_dvorak_plugin")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_dvorak_plugin = 1
|
||||
|
||||
" Key to go into dvorak mode:
|
||||
map ,d :runtime dvorak/enable.vim<CR>
|
||||
|
||||
" Key to get out of dvorak mode:
|
||||
map ,q :runtime dvorak/disable.vim<CR>
|
||||
@@ -0,0 +1,114 @@
|
||||
" Vim Plugin: Edit the file with an existing Vim if possible
|
||||
" Maintainer: Bram Moolenaar
|
||||
" Last Change: 2016 Mar 28
|
||||
|
||||
" To use add ":packadd! editexisting" in your vimrc file.
|
||||
|
||||
" This plugin serves two purposes:
|
||||
" 1. On startup, if we were invoked with one file name argument and the file
|
||||
" is not modified then try to find another Vim instance that is editing
|
||||
" this file. If there is one then bring it to the foreground and exit.
|
||||
" 2. When a file is edited and a swap file exists for it, try finding that
|
||||
" other Vim and bring it to the foreground. Requires Vim 7, because it
|
||||
" uses the SwapExists autocommand event.
|
||||
|
||||
" Function that finds the Vim instance that is editing "filename" and brings
|
||||
" it to the foreground.
|
||||
func s:EditElsewhere(filename)
|
||||
let fname_esc = substitute(a:filename, "'", "''", "g")
|
||||
|
||||
let servers = serverlist()
|
||||
while servers != ''
|
||||
" Get next server name in "servername"; remove it from "servers".
|
||||
let i = match(servers, "\n")
|
||||
if i == -1
|
||||
let servername = servers
|
||||
let servers = ''
|
||||
else
|
||||
let servername = strpart(servers, 0, i)
|
||||
let servers = strpart(servers, i + 1)
|
||||
endif
|
||||
|
||||
" Skip ourselves.
|
||||
if servername ==? v:servername
|
||||
continue
|
||||
endif
|
||||
|
||||
" Check if this server is editing our file.
|
||||
if remote_expr(servername, "bufloaded('" . fname_esc . "')")
|
||||
" Yes, bring it to the foreground.
|
||||
if has("win32")
|
||||
call remote_foreground(servername)
|
||||
endif
|
||||
call remote_expr(servername, "foreground()")
|
||||
|
||||
if remote_expr(servername, "exists('*EditExisting')")
|
||||
" Make sure the file is visible in a window (not hidden).
|
||||
" If v:swapcommand exists and is set, send it to the server.
|
||||
if exists("v:swapcommand")
|
||||
let c = substitute(v:swapcommand, "'", "''", "g")
|
||||
call remote_expr(servername, "EditExisting('" . fname_esc . "', '" . c . "')")
|
||||
else
|
||||
call remote_expr(servername, "EditExisting('" . fname_esc . "', '')")
|
||||
endif
|
||||
endif
|
||||
|
||||
if !(has('vim_starting') && has('gui_running') && has('gui_win32'))
|
||||
" Tell the user what is happening. Not when the GUI is starting
|
||||
" though, it would result in a message box.
|
||||
echomsg "File is being edited by " . servername
|
||||
sleep 2
|
||||
endif
|
||||
return 'q'
|
||||
endif
|
||||
endwhile
|
||||
return ''
|
||||
endfunc
|
||||
|
||||
" When the plugin is loaded and there is one file name argument: Find another
|
||||
" Vim server that is editing this file right now.
|
||||
if argc() == 1 && !&modified
|
||||
if s:EditElsewhere(expand("%:p")) == 'q'
|
||||
quit
|
||||
endif
|
||||
endif
|
||||
|
||||
" Setup for handling the situation that an existing swap file is found.
|
||||
try
|
||||
au! SwapExists * let v:swapchoice = s:EditElsewhere(expand("<afile>:p"))
|
||||
catch
|
||||
" Without SwapExists we don't do anything for ":edit" commands
|
||||
endtry
|
||||
|
||||
" Function used on the server to make the file visible and possibly execute a
|
||||
" command.
|
||||
func! EditExisting(fname, command)
|
||||
" Get the window number of the file in the current tab page.
|
||||
let winnr = bufwinnr(a:fname)
|
||||
if winnr <= 0
|
||||
" Not found, look in other tab pages.
|
||||
let bufnr = bufnr(a:fname)
|
||||
for i in range(tabpagenr('$'))
|
||||
if index(tabpagebuflist(i + 1), bufnr) >= 0
|
||||
" Make this tab page the current one and find the window number.
|
||||
exe 'tabnext ' . (i + 1)
|
||||
let winnr = bufwinnr(a:fname)
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
if winnr > 0
|
||||
exe winnr . "wincmd w"
|
||||
elseif exists('*fnameescape')
|
||||
exe "split " . fnameescape(a:fname)
|
||||
else
|
||||
exe "split " . escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
|
||||
endif
|
||||
|
||||
if a:command != ''
|
||||
exe "normal! " . a:command
|
||||
endif
|
||||
|
||||
redraw
|
||||
endfunc
|
||||
+316
@@ -0,0 +1,316 @@
|
||||
" Function to left and right align text.
|
||||
"
|
||||
" Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk>
|
||||
" Created: 980806 14:13 (or around that time anyway)
|
||||
" Revised: 001103 00:36 (See "Revisions" below)
|
||||
|
||||
|
||||
" function Justify( [ textwidth [, maxspaces [, indent] ] ] )
|
||||
"
|
||||
" Justify() will left and right align a line by filling in an
|
||||
" appropriate amount of spaces. Extra spaces are added to existing
|
||||
" spaces starting from the right side of the line. As an example, the
|
||||
" following documentation has been justified.
|
||||
"
|
||||
" The function takes the following arguments:
|
||||
|
||||
" textwidth argument
|
||||
" ------------------
|
||||
" If not specified, the value of the 'textwidth' option is used. If
|
||||
" 'textwidth' is zero a value of 80 is used.
|
||||
"
|
||||
" Additionally the arguments 'tw' and '' are accepted. The value of
|
||||
" 'textwidth' will be used. These are handy, if you just want to specify
|
||||
" the maxspaces argument.
|
||||
|
||||
" maxspaces argument
|
||||
" ------------------
|
||||
" If specified, alignment will only be done, if the longest space run
|
||||
" after alignment is no longer than maxspaces.
|
||||
"
|
||||
" An argument of '' is accepted, should the user like to specify all
|
||||
" arguments.
|
||||
"
|
||||
" To aid user defined commands, negative values are accepted aswell.
|
||||
" Using a negative value specifies the default behaviour: any length of
|
||||
" space runs will be used to justify the text.
|
||||
|
||||
" indent argument
|
||||
" ---------------
|
||||
" This argument specifies how a line should be indented. The default is
|
||||
" to keep the current indentation.
|
||||
"
|
||||
" Negative values: Keep current amount of leading whitespace.
|
||||
" Positive values: Indent all lines with leading whitespace using this
|
||||
" amount of whitespace.
|
||||
"
|
||||
" Note that the value 0, needs to be quoted as a string. This value
|
||||
" leads to a left flushed text.
|
||||
"
|
||||
" Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be
|
||||
" added. In this case, if the value of indent is positive, the amount of
|
||||
" whitespace to be added will be multiplied by the value of the
|
||||
" 'shiftwidth' and 'tabstop' settings. If these units are used, the
|
||||
" argument must be given as a string, eg. Justify('','','2sw').
|
||||
"
|
||||
" If the values of 'sw' or 'tw' are negative, they are treated as if
|
||||
" they were 0, which means that the text is flushed left. There is no
|
||||
" check if a negative number prefix is used to change the sign of a
|
||||
" negative 'sw' or 'ts' value.
|
||||
"
|
||||
" As with the other arguments, '' may be used to get the default
|
||||
" behaviour.
|
||||
|
||||
|
||||
" Notes:
|
||||
"
|
||||
" If the line, adjusted for space runs and leading/trailing whitespace,
|
||||
" is wider than the used textwidth, the line will be left untouched (no
|
||||
" whitespace removed). This should be equivalent to the behaviour of
|
||||
" :left, :right and :center.
|
||||
"
|
||||
" If the resulting line is shorter than the used textwidth it is left
|
||||
" untouched.
|
||||
"
|
||||
" All space runs in the line are truncated before the alignment is
|
||||
" carried out.
|
||||
"
|
||||
" If you have set 'noexpandtab', :retab! is used to replace space runs
|
||||
" with whitespace using the value of 'tabstop'. This should be
|
||||
" conformant with :left, :right and :center.
|
||||
"
|
||||
" If joinspaces is set, an extra space is added after '.', '?' and '!'.
|
||||
" If 'cpooptions' include 'j', extra space is only added after '.'.
|
||||
" (This may on occasion conflict with maxspaces.)
|
||||
|
||||
|
||||
" Related mappings:
|
||||
"
|
||||
" Mappings that will align text using the current text width, using at
|
||||
" most four spaces in a space run and keeping current indentation.
|
||||
nmap _j :%call Justify('tw',4)<CR>
|
||||
vmap _j :call Justify('tw',4)<CR>
|
||||
"
|
||||
" Mappings that will remove space runs and format lines (might be useful
|
||||
" prior to aligning the text).
|
||||
nmap ,gq :%s/\s\+/ /g<CR>gq1G
|
||||
vmap ,gq :s/\s\+/ /g<CR>gvgq
|
||||
|
||||
|
||||
" User defined command:
|
||||
"
|
||||
" The following is an ex command that works as a shortcut to the Justify
|
||||
" function. Arguments to Justify() can be added after the command.
|
||||
com! -range -nargs=* Justify <line1>,<line2>call Justify(<f-args>)
|
||||
"
|
||||
" The following commands are all equivalent:
|
||||
"
|
||||
" 1. Simplest use of Justify():
|
||||
" :call Justify()
|
||||
" :Justify
|
||||
"
|
||||
" 2. The _j mapping above via the ex command:
|
||||
" :%Justify tw 4
|
||||
"
|
||||
" 3. Justify visualised text at 72nd column while indenting all
|
||||
" previously indented text two shiftwidths
|
||||
" :'<,'>call Justify(72,'','2sw')
|
||||
" :'<,'>Justify 72 -1 2sw
|
||||
"
|
||||
" This documentation has been justified using the following command:
|
||||
":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" /
|
||||
|
||||
" Revisions:
|
||||
" 001103: If 'joinspaces' was set, calculations could be wrong.
|
||||
" Tabs at start of line could also lead to errors.
|
||||
" Use setline() instead of "exec 's/foo/bar/' - safer.
|
||||
" Cleaned up the code a bit.
|
||||
"
|
||||
" Todo: Convert maps to the new script specific form
|
||||
|
||||
" Error function
|
||||
function! Justify_error(message)
|
||||
echohl Error
|
||||
echo "Justify([tw, [maxspaces [, indent]]]): " . a:message
|
||||
echohl None
|
||||
endfunction
|
||||
|
||||
|
||||
" Now for the real thing
|
||||
function! Justify(...) range
|
||||
|
||||
if a:0 > 3
|
||||
call Justify_error("Too many arguments (max 3)")
|
||||
return 1
|
||||
endif
|
||||
|
||||
" Set textwidth (accept 'tw' and '' as arguments)
|
||||
if a:0 >= 1
|
||||
if a:1 =~ '^\(tw\)\=$'
|
||||
let tw = &tw
|
||||
elseif a:1 =~ '^\d\+$'
|
||||
let tw = a:1
|
||||
else
|
||||
call Justify_error("tw must be a number (>0), '' or 'tw'")
|
||||
return 2
|
||||
endif
|
||||
else
|
||||
let tw = &tw
|
||||
endif
|
||||
if tw == 0
|
||||
let tw = 80
|
||||
endif
|
||||
|
||||
" Set maximum number of spaces between WORDs
|
||||
if a:0 >= 2
|
||||
if a:2 == ''
|
||||
let maxspaces = tw
|
||||
elseif a:2 =~ '^-\d\+$'
|
||||
let maxspaces = tw
|
||||
elseif a:2 =~ '^\d\+$'
|
||||
let maxspaces = a:2
|
||||
else
|
||||
call Justify_error("maxspaces must be a number or ''")
|
||||
return 3
|
||||
endif
|
||||
else
|
||||
let maxspaces = tw
|
||||
endif
|
||||
if maxspaces <= 1
|
||||
call Justify_error("maxspaces should be larger than 1")
|
||||
return 4
|
||||
endif
|
||||
|
||||
" Set the indentation style (accept sw and ts units)
|
||||
let indent_fix = ''
|
||||
if a:0 >= 3
|
||||
if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$'
|
||||
let indent = -1
|
||||
elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$'
|
||||
let indent = 0
|
||||
elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$'
|
||||
let indent = substitute(a:3, '\D', '', 'g')
|
||||
elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$'
|
||||
let indent = 1
|
||||
else
|
||||
call Justify_error("indent: a number with 'sw'/'ts' unit")
|
||||
return 5
|
||||
endif
|
||||
if indent >= 0
|
||||
while indent > 0
|
||||
let indent_fix = indent_fix . ' '
|
||||
let indent = indent - 1
|
||||
endwhile
|
||||
let indent_sw = 0
|
||||
if a:3 =~ '\(shiftwidth\|sw\)'
|
||||
let indent_sw = &sw
|
||||
elseif a:3 =~ '\(tabstop\|ts\)'
|
||||
let indent_sw = &ts
|
||||
endif
|
||||
let indent_fix2 = ''
|
||||
while indent_sw > 0
|
||||
let indent_fix2 = indent_fix2 . indent_fix
|
||||
let indent_sw = indent_sw - 1
|
||||
endwhile
|
||||
let indent_fix = indent_fix2
|
||||
endif
|
||||
else
|
||||
let indent = -1
|
||||
endif
|
||||
|
||||
" Avoid substitution reports
|
||||
let save_report = &report
|
||||
set report=1000000
|
||||
|
||||
" Check 'joinspaces' and 'cpo'
|
||||
if &js == 1
|
||||
if &cpo =~ 'j'
|
||||
let join_str = '\(\. \)'
|
||||
else
|
||||
let join_str = '\([.!?!] \)'
|
||||
endif
|
||||
endif
|
||||
|
||||
let cur = a:firstline
|
||||
while cur <= a:lastline
|
||||
|
||||
let str_orig = getline(cur)
|
||||
let save_et = &et
|
||||
set et
|
||||
exec cur . "retab"
|
||||
let &et = save_et
|
||||
let str = getline(cur)
|
||||
|
||||
let indent_str = indent_fix
|
||||
let indent_n = strlen(indent_str)
|
||||
" Shall we remember the current indentation
|
||||
if indent < 0
|
||||
let indent_orig = matchstr(str_orig, '^\s*')
|
||||
if strlen(indent_orig) > 0
|
||||
let indent_str = indent_orig
|
||||
let indent_n = strlen(matchstr(str, '^\s*'))
|
||||
endif
|
||||
endif
|
||||
|
||||
" Trim trailing, leading and running whitespace
|
||||
let str = substitute(str, '\s\+$', '', '')
|
||||
let str = substitute(str, '^\s\+', '', '')
|
||||
let str = substitute(str, '\s\+', ' ', 'g')
|
||||
let str_n = strdisplaywidth(str)
|
||||
|
||||
" Possible addition of space after punctuation
|
||||
if exists("join_str")
|
||||
let str = substitute(str, join_str, '\1 ', 'g')
|
||||
endif
|
||||
let join_n = strdisplaywidth(str) - str_n
|
||||
|
||||
" Can extraspaces be added?
|
||||
" Note that str_n may be less than strlen(str) [joinspaces above]
|
||||
if strdisplaywidth(str) <= tw - indent_n && str_n > 0
|
||||
" How many spaces should be added
|
||||
let s_add = tw - str_n - indent_n - join_n
|
||||
let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n
|
||||
let s_dup = s_add / s_nr
|
||||
let s_mod = s_add % s_nr
|
||||
|
||||
" Test if the changed line fits with tw
|
||||
if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw
|
||||
|
||||
" Duplicate spaces
|
||||
while s_dup > 0
|
||||
let str = substitute(str, '\( \+\)', ' \1', 'g')
|
||||
let s_dup = s_dup - 1
|
||||
endwhile
|
||||
|
||||
" Add extra spaces from the end
|
||||
while s_mod > 0
|
||||
let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '')
|
||||
let s_mod = s_mod - 1
|
||||
endwhile
|
||||
|
||||
" Indent the line
|
||||
if indent_n > 0
|
||||
let str = substitute(str, '^', indent_str, '' )
|
||||
endif
|
||||
|
||||
" Replace the line
|
||||
call setline(cur, str)
|
||||
|
||||
" Convert to whitespace
|
||||
if &et == 0
|
||||
exec cur . 'retab!'
|
||||
endif
|
||||
|
||||
endif " Change of line
|
||||
endif " Possible change
|
||||
|
||||
let cur = cur + 1
|
||||
endwhile
|
||||
|
||||
norm ^
|
||||
|
||||
let &report = save_report
|
||||
|
||||
endfunction
|
||||
|
||||
" EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai
|
||||
@@ -4,7 +4,7 @@ For instructions on installing this file, type
|
||||
:help matchit-install
|
||||
inside Vim.
|
||||
|
||||
For Vim version 6.3. Last change: 2007 Aug 29
|
||||
For Vim version 6.3. Last change: 2016 Mar 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Benji Fisher
|
||||
@@ -152,13 +152,10 @@ setting |b:match_skip|.
|
||||
==============================================================================
|
||||
2. Activation *matchit-activate*
|
||||
|
||||
You can use this script as a plugin, by copying it to your plugin directory.
|
||||
See |add-global-plugin| for instructions. You can also add a line to your
|
||||
|vimrc| file, such as >
|
||||
:source $VIMRUNTIME/macros/matchit.vim
|
||||
or >
|
||||
:runtime macros/matchit.vim
|
||||
Either way, the script should start working the next time you start up Vim.
|
||||
To use the matchit plugin add this line to your |vimrc|: >
|
||||
packadd! matchit
|
||||
|
||||
The script should start working the next time you start Vim.
|
||||
|
||||
(Earlier versions of the script did nothing unless a |buffer-variable| named
|
||||
|b:match_words| was defined. Even earlier versions contained autocommands
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user