mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 03:48:18 +00:00
Merge pull request #3470 from ZyX-I/pr-3198
XDG base directory specification support
This commit is contained in:
@@ -104,9 +104,9 @@ o Setting the Arabic fonts
|
||||
font name akin to that used in Linux/Unix systems.
|
||||
(e.g. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)
|
||||
|
||||
You can append the 'guifont' set command to your .vimrc file
|
||||
You can append the 'guifont' set command to your vimrc file
|
||||
in order to get the same above noted results. In other words,
|
||||
you can include ':set guifont=your_ARABIC_FONT' to your .vimrc
|
||||
you can include ':set guifont=your_ARABIC_FONT' to your vimrc
|
||||
file.
|
||||
|
||||
+ Under the X Window environment, you can also start VIM with
|
||||
@@ -118,9 +118,9 @@ o Setting the appropriate character Encoding
|
||||
>
|
||||
:set encoding=utf-8
|
||||
<
|
||||
to your .vimrc file (entering the command manually into you VIM
|
||||
to your vimrc file (entering the command manually into you VIM
|
||||
window is highly discouraged). In short, include ':set
|
||||
encoding=utf-8' to your .vimrc file.
|
||||
encoding=utf-8' to your vimrc file.
|
||||
|
||||
Attempts to use Arabic without UTF-8 will result the following
|
||||
warning message,
|
||||
@@ -149,7 +149,7 @@ o Enable Arabic settings [short-cut]
|
||||
4. enable rightleftcmd mode (affecting the command-line)
|
||||
5. enable arabicshape mode (do visual character alterations)
|
||||
|
||||
You may also append the command to your .vimrc file and simply
|
||||
You may also append the command to your vimrc file and simply
|
||||
include ':set arabic' to it.
|
||||
|
||||
You are also capable of disabling Arabic support via
|
||||
@@ -184,8 +184,8 @@ o Enable Arabic settings [short-cut]
|
||||
:set keymap=arabic
|
||||
<
|
||||
in your VIM window. You can also append the 'keymap' set command to
|
||||
your .vimrc file. In other words, you can include ':set keymap=arabic'
|
||||
to your .vimrc file.
|
||||
your vimrc file. In other words, you can include ':set keymap=arabic'
|
||||
to your vimrc file.
|
||||
|
||||
To turn toggle (or switch) your keymapping between Arabic and the
|
||||
default mapping (English), it is advised that users use the 'CTRL-^'
|
||||
@@ -206,8 +206,8 @@ o Enable Arabic settings [short-cut]
|
||||
:set delcombine
|
||||
<
|
||||
in our VIM window. You can also append the 'delcombine' set command
|
||||
to your .vimrc file. In other words, you can include ':set delcombine'
|
||||
to your .vimrc file.
|
||||
to your vimrc file. In other words, you can include ':set delcombine'
|
||||
to your vimrc file.
|
||||
|
||||
+ Arabic right-to-left Mode
|
||||
|
||||
@@ -221,8 +221,8 @@ o Enable Arabic settings [short-cut]
|
||||
- While in Left-to-right mode, enter ':set rl' in the command line
|
||||
('rl' is the abbreviation for rightleft).
|
||||
|
||||
- Put the ':set rl' line in your '.vimrc' file to start Vim in
|
||||
right-to-left mode permanently.
|
||||
- Put the ':set rl' line in your vimrc file to start Vim in
|
||||
right-to-left mode permanently.
|
||||
|
||||
+ Arabic right-to-left command-line Mode
|
||||
|
||||
@@ -248,8 +248,8 @@ o Enable Arabic settings [short-cut]
|
||||
:set arabicshape
|
||||
<
|
||||
in our VIM window. You can also append the 'arabicshape' set
|
||||
command to your .vimrc file. In other words, you can include
|
||||
':set arabicshape' to your .vimrc file.
|
||||
command to your vimrc file. In other words, you can include
|
||||
':set arabicshape' to your vimrc file.
|
||||
|
||||
|
||||
Keymap/Keyboard *arabickeymap*
|
||||
|
@@ -28,7 +28,7 @@ a file, when entering or leaving a buffer or window, and when exiting Vim.
|
||||
For example, you can create an autocommand to set the 'cindent' option for
|
||||
files matching *.c. You can also use autocommands to implement advanced
|
||||
features, such as editing compressed files (see |gzip-example|). The usual
|
||||
place to put autocommands is in your .vimrc or .exrc file.
|
||||
place to put autocommands is in your vimrc file.
|
||||
|
||||
*E203* *E204* *E143* *E855*
|
||||
WARNING: Using autocommands is very powerful, and may lead to unexpected side
|
||||
@@ -73,8 +73,8 @@ exception is that "<sfile>" is expanded when the autocmd is defined. Example:
|
||||
|
||||
Here Vim expands <sfile> to the name of the file containing this line.
|
||||
|
||||
When your .vimrc file is sourced twice, the autocommands will appear twice.
|
||||
To avoid this, put this command in your .vimrc file, before defining
|
||||
When your vimrc file is sourced twice, the autocommands will appear twice.
|
||||
To avoid this, put this command in your vimrc file, before defining
|
||||
autocommands: >
|
||||
|
||||
:autocmd! " Remove ALL autocommands for the current group.
|
||||
@@ -695,7 +695,7 @@ FuncUndefined When a user function is used but it isn't
|
||||
GUIEnter After starting the GUI successfully, and after
|
||||
opening the window. It is triggered before
|
||||
VimEnter when using gvim. Can be used to
|
||||
position the window from a .gvimrc file: >
|
||||
position the window from a gvimrc file: >
|
||||
:autocmd GUIEnter * winpos 100 50
|
||||
< *GUIFailed*
|
||||
GUIFailed After starting the GUI failed. Vim may
|
||||
@@ -907,7 +907,7 @@ UserGettingBored When the user presses the same key 42 times.
|
||||
Just kidding! :-)
|
||||
*VimEnter*
|
||||
VimEnter After doing all the startup stuff, including
|
||||
loading .vimrc files, executing the "-c cmd"
|
||||
loading vimrc files, executing the "-c cmd"
|
||||
arguments, creating all windows and loading
|
||||
the buffers in them.
|
||||
*VimLeave*
|
||||
@@ -994,7 +994,7 @@ expect.
|
||||
Environment variables can be used in a pattern: >
|
||||
:autocmd BufRead $VIMRUNTIME/doc/*.txt set expandtab
|
||||
And ~ can be used for the home directory (if $HOME is defined): >
|
||||
:autocmd BufWritePost ~/.vimrc so ~/.vimrc
|
||||
:autocmd BufWritePost ~/.config/nvim/init.vim so <afile>
|
||||
:autocmd BufRead ~archive/* set readonly
|
||||
The environment variable is expanded when the autocommand is defined, not when
|
||||
the autocommand is executed. This is different from the command!
|
||||
@@ -1135,7 +1135,7 @@ Example: >
|
||||
:augroup END
|
||||
|
||||
This prevents having the autocommands defined twice (e.g., after sourcing the
|
||||
.vimrc file again).
|
||||
vimrc file again).
|
||||
|
||||
==============================================================================
|
||||
9. Executing autocommands *autocmd-execute*
|
||||
@@ -1157,7 +1157,7 @@ option will not cause any commands to be executed.
|
||||
It's possible to use this inside an autocommand too,
|
||||
so you can base the autocommands for one extension on
|
||||
another extension. Example: >
|
||||
:au BufEnter *.cpp so ~/.vimrc_cpp
|
||||
:au BufEnter *.cpp so ~/.config/nvim/init_cpp.vim
|
||||
:au BufEnter *.cpp doau BufEnter x.c
|
||||
< Be careful to avoid endless loops. See
|
||||
|autocmd-nested|.
|
||||
|
@@ -109,7 +109,7 @@ CTRL-W Delete the |word| before the cursor. This depends on the
|
||||
CTRL-U Remove all characters between the cursor position and
|
||||
the beginning of the line. Previous versions of vim
|
||||
deleted all characters on the line. If that is the
|
||||
preferred behavior, add the following to your .vimrc: >
|
||||
preferred behavior, add the following to your vimrc: >
|
||||
:cnoremap <C-U> <C-E><C-U>
|
||||
<
|
||||
*c_<Insert>* *c_Insert*
|
||||
@@ -456,7 +456,7 @@ that take a file name.
|
||||
If you would like using <S-Tab> for CTRL-P in an xterm, put this command in
|
||||
your .cshrc: >
|
||||
xmodmap -e "keysym Tab = Tab Find"
|
||||
And this in your .vimrc: >
|
||||
And this in your vimrc: >
|
||||
:cmap <Esc>[1~ <C-P>
|
||||
|
||||
==============================================================================
|
||||
@@ -823,8 +823,8 @@ These modifiers can be given, in this order:
|
||||
precede any :r or :e.
|
||||
:r Root of the file name (the last extension removed). When
|
||||
there is only an extension (file name that starts with '.',
|
||||
e.g., ".vimrc"), it is not removed. Can be repeated to remove
|
||||
several extensions (last one first).
|
||||
e.g., ".nvimrc"), it is not removed. Can be repeated to
|
||||
remove several extensions (last one first).
|
||||
:e Extension of the file name. Only makes sense when used alone.
|
||||
When there is no extension the result is empty.
|
||||
When there is only an extension (file name that starts with
|
||||
|
@@ -52,7 +52,7 @@ Use this command to start Vim:
|
||||
>
|
||||
valgrind --log-file=valgrind.log --leak-check=full ./vim
|
||||
|
||||
Note: Vim will run much slower. If your .vimrc is big or you have several
|
||||
Note: Vim will run much slower. If your vimrc is big or you have several
|
||||
plugins you need to be patient for startup, or run with the "-u NONE"
|
||||
argument.
|
||||
|
||||
|
@@ -66,7 +66,7 @@ make changes after loading a file, these will be included in the displayed
|
||||
diffs. You might have to do ":diffupdate" now and then, not all changes are
|
||||
immediately taken into account.
|
||||
|
||||
In your .vimrc file you could do something special when Vim was started in
|
||||
In your vimrc file you could do something special when Vim was started in
|
||||
diff mode. You could use a construct like this: >
|
||||
|
||||
if &diff
|
||||
|
@@ -3441,7 +3441,7 @@ getfperm({fname}) *getfperm()*
|
||||
If a user does not have a given permission the flag for this
|
||||
is replaced with the string "-". Examples: >
|
||||
:echo getfperm("/etc/passwd")
|
||||
:echo getfperm(expand("~/.vimrc"))
|
||||
:echo getfperm(expand("~/.config/nvim/init.vim"))
|
||||
< This will hopefully (from a security point of view) display
|
||||
the string "rw-r--r--" or even "rw-------".
|
||||
|
||||
@@ -4668,10 +4668,10 @@ msgpackdump({list}) {Nvim} *msgpackdump()*
|
||||
msgpackparse({list}) {Nvim} *msgpackparse()*
|
||||
Convert a |readfile()|-style list to a list of VimL objects.
|
||||
Example: >
|
||||
let fname = expand('~/.nvim/shada/main.shada')
|
||||
let fname = expand('~/.config/nvim/shada/main.shada')
|
||||
let mpack = readfile(fname, 'b')
|
||||
let shada_objects = msgpackparse(mpack)
|
||||
< This will read ~/.nvim/shada/main.shada file to
|
||||
< This will read ~/.config/nvim/shada/main.shada file to
|
||||
`shada_objects` list.
|
||||
|
||||
Limitations:
|
||||
@@ -4770,8 +4770,8 @@ pathshorten({expr}) *pathshorten()*
|
||||
result. The tail, the file name, is kept as-is. The other
|
||||
components in the path are reduced to single letters. Leading
|
||||
'~' and '.' characters are kept. Example: >
|
||||
:echo pathshorten('~/.vim/autoload/myfile.vim')
|
||||
< ~/.v/a/myfile.vim ~
|
||||
:echo pathshorten('~/.config/nvim/autoload/file1.vim')
|
||||
< ~/.v/a/file1.vim ~
|
||||
It doesn't matter if the path exists or not.
|
||||
|
||||
pow({x}, {y}) *pow()*
|
||||
@@ -7274,8 +7274,8 @@ like this: >
|
||||
|
||||
When such a function is called, and it is not defined yet, Vim will search the
|
||||
"autoload" directories in 'runtimepath' for a script file called
|
||||
"filename.vim". For example "~/.vim/autoload/filename.vim". That file should
|
||||
then define the function like this: >
|
||||
"filename.vim". For example "~/.config/nvim/autoload/filename.vim". That
|
||||
file should then define the function like this: >
|
||||
|
||||
function filename#funcname()
|
||||
echo "Done!"
|
||||
@@ -9080,7 +9080,7 @@ A few options contain an expression. When this expression is evaluated it may
|
||||
have to be done in the sandbox to avoid a security risk. But the sandbox is
|
||||
restrictive, thus this only happens when the option was set from an insecure
|
||||
location. Insecure in this context are:
|
||||
- sourcing a .vimrc or .exrc in the current directory
|
||||
- sourcing a .nvimrc or .exrc in the current directory
|
||||
- while executing in the sandbox
|
||||
- value coming from a modeline
|
||||
|
||||
|
@@ -122,8 +122,7 @@ o Setting the Farsi fonts
|
||||
':set guifont=far-a01' in the Vim window.
|
||||
|
||||
You can have 'guifont' set to far-a01 by Vim during the Vim startup
|
||||
by appending the ':set guifont=far-a01' into your .vimrc file
|
||||
(in case of NT/95/98 platforms _vimrc).
|
||||
by appending the ':set guifont=far-a01' into your vimrc file.
|
||||
|
||||
Under the X Window environment, you can also start Vim with the
|
||||
'-fn far-a01' option.
|
||||
@@ -139,7 +138,7 @@ o Farsi Keymapping Activation
|
||||
To activate the Farsi keymapping, set either 'altkeymap' or 'fkmap'.
|
||||
This is done by entering ':set akm' or ':set fk' in the Vim window.
|
||||
You can have 'altkeymap' or 'fkmap' set as default by appending ':set akm'
|
||||
or ':set fk' in your .vimrc file or _vimrc in case of NT/95/98 platforms.
|
||||
or ':set fk' in your vimrc file.
|
||||
|
||||
To turn off the Farsi keymapping as a default second language keymapping,
|
||||
reset the 'altkeymap' by entering ':set noakm'.
|
||||
@@ -156,8 +155,8 @@ o right-to-left Farsi Mode
|
||||
+ While in Left-to-right mode, enter 'set rl' in the command line ('rl' is
|
||||
the abbreviation for rightleft).
|
||||
|
||||
+ Put the 'set rl' line in your '.vimrc' file to start Vim in
|
||||
right-to-left mode permanently.
|
||||
+ Put the 'set rl' line in your vimrc file to start Vim in right-to-left
|
||||
mode permanently.
|
||||
|
||||
Encoding
|
||||
--------
|
||||
|
@@ -162,8 +162,7 @@ A. If you want to overrule all default file type checks.
|
||||
1. Create your user runtime directory. You would normally use the first
|
||||
item of the 'runtimepath' option. Then create the directory "ftdetect"
|
||||
inside it. Example for Unix: >
|
||||
:!mkdir ~/.vim
|
||||
:!mkdir ~/.vim/ftdetect
|
||||
:!mkdir -p ~/.config/nvim/ftdetect
|
||||
<
|
||||
2. Create a file that contains an autocommand to detect the file type.
|
||||
Example: >
|
||||
@@ -173,7 +172,7 @@ A. If you want to overrule all default file type checks.
|
||||
check the contents of the file to recognize it.
|
||||
Write this file as "mine.vim" in the "ftdetect" directory in your user
|
||||
runtime directory. For example, for Unix: >
|
||||
:w ~/.vim/ftdetect/mine.vim
|
||||
:w ~/.config/nvim/ftdetect/mine.vim
|
||||
|
||||
< 3. To use the new filetype detection you must restart Vim.
|
||||
|
||||
@@ -196,7 +195,7 @@ B. If you want to detect your file after the default file type checks.
|
||||
C. If your file type can be detected by the file name.
|
||||
1. Create your user runtime directory. You would normally use the first
|
||||
item of the 'runtimepath' option. Example for Unix: >
|
||||
:!mkdir ~/.vim
|
||||
:!mkdir -p ~/.config/nvim
|
||||
<
|
||||
2. Create a file that contains autocommands to detect the file type.
|
||||
Example: >
|
||||
@@ -210,7 +209,7 @@ C. If your file type can be detected by the file name.
|
||||
augroup END
|
||||
< Write this file as "filetype.vim" in your user runtime directory. For
|
||||
example, for Unix: >
|
||||
:w ~/.vim/filetype.vim
|
||||
:w ~/.config/nvim/filetype.vim
|
||||
|
||||
< 3. To use the new filetype detection you must restart Vim.
|
||||
|
||||
@@ -224,7 +223,7 @@ D. If your filetype can only be detected by inspecting the contents of the
|
||||
|
||||
1. Create your user runtime directory. You would normally use the first
|
||||
item of the 'runtimepath' option. Example for Unix: >
|
||||
:!mkdir ~/.vim
|
||||
:!mkdir -p ~/.config/nvim
|
||||
<
|
||||
2. Create a vim script file for doing this. Example: >
|
||||
if did_filetype() " filetype already set..
|
||||
@@ -238,7 +237,7 @@ D. If your filetype can only be detected by inspecting the contents of the
|
||||
< See $VIMRUNTIME/scripts.vim for more examples.
|
||||
Write this file as "scripts.vim" in your user runtime directory. For
|
||||
example, for Unix: >
|
||||
:w ~/.vim/scripts.vim
|
||||
:w ~/.config/nvim/scripts.vim
|
||||
<
|
||||
3. The detection will work right away, no need to restart Vim.
|
||||
|
||||
@@ -268,12 +267,12 @@ all loaded. For example, if this command: >
|
||||
|
||||
produces this output:
|
||||
|
||||
runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~
|
||||
runtimepath=/etc/vim,~/.config/nvim,/usr/local/share/vim/vim60 ~
|
||||
|
||||
then Vim will load all plugins in these directories and below:
|
||||
|
||||
/etc/vim/plugin/ ~
|
||||
~/.vim/plugin/ ~
|
||||
~/.config/nvim/plugin/ ~
|
||||
/usr/local/share/vim/vim60/plugin/ ~
|
||||
|
||||
Note that the last one is the value of $VIMRUNTIME which has been expanded.
|
||||
@@ -329,7 +328,7 @@ ways to change this:
|
||||
1. Add a few settings.
|
||||
You must create a new filetype plugin in a directory early in
|
||||
'runtimepath'. For Unix, for example you could use this file: >
|
||||
vim ~/.vim/ftplugin/fortran.vim
|
||||
vim ~/.config/nvim/ftplugin/fortran.vim
|
||||
< You can set those settings and mappings that you would like to add. Note
|
||||
that the global plugin will be loaded after this, it may overrule the
|
||||
settings that you do here. If this is the case, you need to use one of the
|
||||
@@ -338,7 +337,7 @@ ways to change this:
|
||||
2. Make a copy of the plugin and change it.
|
||||
You must put the copy in a directory early in 'runtimepath'. For Unix, for
|
||||
example, you could do this: >
|
||||
cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim
|
||||
cp $VIMRUNTIME/ftplugin/fortran.vim ~/.config/nvim/ftplugin/fortran.vim
|
||||
< Then you can edit the copied file to your liking. Since the b:did_ftplugin
|
||||
variable will be set, the global plugin will not be loaded.
|
||||
A disadvantage of this method is that when the distributed plugin gets
|
||||
@@ -347,7 +346,7 @@ ways to change this:
|
||||
3. Overrule the settings after loading the global plugin.
|
||||
You must create a new filetype plugin in a directory from the end of
|
||||
'runtimepath'. For Unix, for example, you could use this file: >
|
||||
vim ~/.vim/after/ftplugin/fortran.vim
|
||||
vim ~/.config/nvim/after/ftplugin/fortran.vim
|
||||
< In this file you can change just those settings that you want to change.
|
||||
|
||||
==============================================================================
|
||||
@@ -376,7 +375,7 @@ Global mappings:
|
||||
NOTE: The global mappings are accessed by sourcing the
|
||||
ftplugin/changelog.vim file first, e.g. with >
|
||||
runtime ftplugin/changelog.vim
|
||||
< in your |.vimrc|.
|
||||
< in your |init.vim|.
|
||||
<Leader>o Switches to the ChangeLog buffer opened for the
|
||||
current directory, or opens it in a new buffer if it
|
||||
exists in the current directory. Then it does the
|
||||
@@ -478,7 +477,7 @@ FORTRAN *ft-fortran-plugin*
|
||||
|
||||
Options:
|
||||
'expandtab' is switched on to avoid tabs as required by the Fortran
|
||||
standards unless the user has set fortran_have_tabs in .vimrc.
|
||||
standards unless the user has set fortran_have_tabs in vimrc.
|
||||
'textwidth' is set to 72 for fixed source format as required by the
|
||||
Fortran standards and to 80 for free source format.
|
||||
'formatoptions' is set to break code and comment lines and to preserve long
|
||||
|
@@ -58,7 +58,7 @@ To disable them use ":unlet". Example:
|
||||
|
||||
You can just use ":" and type these into the command line to set these
|
||||
temporarily before loading an Ada file. You can make these option settings
|
||||
permanent by adding the "let" command(s), without a colon, to your "~/.vimrc"
|
||||
permanent by adding the "let" command(s), without a colon, to your |init.vim|
|
||||
file.
|
||||
|
||||
Even on a slow (90Mhz) PC this mode works quickly, but if you find the
|
||||
|
@@ -149,7 +149,7 @@ The above will also handle these cases: >
|
||||
);
|
||||
|
||||
By default, the ftplugin only searches for CREATE statements. You can also
|
||||
override this via your |vimrc| with the following: >
|
||||
override this via your |init.vim| with the following: >
|
||||
let g:ftplugin_sql_statements = 'create,alter'
|
||||
|
||||
The filetype plugin defines three types of comments: >
|
||||
@@ -227,7 +227,7 @@ you must either create:
|
||||
3. Manual steps / commands
|
||||
|
||||
The majority of people work with only one vendor's database product, it would
|
||||
be nice to specify a default in your |vimrc|.
|
||||
be nice to specify a default in your |init.vim|.
|
||||
|
||||
|
||||
2.1 SQLSetType *sqlsettype* *SQLSetType*
|
||||
@@ -273,12 +273,12 @@ This will echo: >
|
||||
-----------------------
|
||||
As mentioned earlier, the default syntax rules for Vim is based on Oracle
|
||||
(PL/SQL). You can override this default by placing one of the following in
|
||||
your |vimrc|: >
|
||||
your |init.vim|: >
|
||||
let g:sql_type_default = 'sqlanywhere'
|
||||
let g:sql_type_default = 'sqlinformix'
|
||||
let g:sql_type_default = 'mysql'
|
||||
|
||||
If you added the following to your |vimrc|: >
|
||||
If you added the following to your |init.vim|: >
|
||||
let g:sql_type_default = 'sqlinformix'
|
||||
|
||||
The next time edit a SQL file the following scripts will be automatically
|
||||
@@ -304,11 +304,8 @@ To help identify these scripts, try to create the files with a "sql" prefix.
|
||||
If you decide you wish to create customizations for the SQLite database, you
|
||||
can create any of the following: >
|
||||
Unix
|
||||
~/.vim/syntax/sqlite.vim
|
||||
~/.vim/indent/sqlite.vim
|
||||
Windows
|
||||
$VIM/vimfiles/syntax/sqlite.vim
|
||||
$VIM/vimfiles/indent/sqlite.vim
|
||||
~/.config/nvim/syntax/sqlite.vim
|
||||
~/.config/nvim/indent/sqlite.vim
|
||||
|
||||
No changes are necessary to the SQLSetType function. It will automatically
|
||||
pickup the new SQL files and load them when you issue the SQLSetType command.
|
||||
@@ -341,8 +338,8 @@ The defaults static maps are: >
|
||||
imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
|
||||
imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
|
||||
|
||||
The use of "<C-C>" can be user chosen by using the following in your |.vimrc| as it
|
||||
may not work properly on all platforms: >
|
||||
The use of "<C-C>" can be user chosen by using the following in your
|
||||
|init.vim| as it may not work properly on all platforms: >
|
||||
let g:ftplugin_sql_omni_key = '<C-C>'
|
||||
>
|
||||
The static maps (which are based on the syntax highlight groups) follow this
|
||||
@@ -440,7 +437,7 @@ the space bar):
|
||||
- This allows you to quickly drill down into a
|
||||
table to view its columns and back again.
|
||||
- <Right> and <Left> can be also be chosen via
|
||||
your |.vimrc| >
|
||||
your |init.vim| >
|
||||
let g:ftplugin_sql_omni_key_right = '<Right>'
|
||||
let g:ftplugin_sql_omni_key_left = '<Left>'
|
||||
|
||||
@@ -604,7 +601,7 @@ database.
|
||||
----------------------------
|
||||
|
||||
The SQL completion plugin can be customized through various options set in
|
||||
your |vimrc|: >
|
||||
your |init.vim|: >
|
||||
omni_sql_no_default_maps
|
||||
< - Default: This variable is not defined
|
||||
- If this variable is defined, no maps are created for OMNI
|
||||
@@ -723,7 +720,7 @@ will be specifying different syntax highlight groups.
|
||||
|
||||
If you do not wish the default maps created or the key choices do not work on
|
||||
your platform (often a case on *nix) you define the following variable in
|
||||
your |vimrc|: >
|
||||
your |init.vim|: >
|
||||
let g:omni_sql_no_default_maps = 1
|
||||
|
||||
Do no edit ftplugin/sql.vim directly! If you change this file your changes
|
||||
|
@@ -26,10 +26,10 @@ How to start the GUI depends on the system used. Mostly you can run the
|
||||
GUI version of Vim with:
|
||||
gvim [options] [files...]
|
||||
|
||||
*gui-init* *gvimrc* *.gvimrc* *_gvimrc* *$MYGVIMRC*
|
||||
*ginit.vim* *gui-init* *gvimrc* *$MYGVIMRC*
|
||||
The gvimrc file is where GUI-specific startup commands should be placed. It
|
||||
is always sourced after the |vimrc| file. If you have one then the $MYGVIMRC
|
||||
environment variable has its name.
|
||||
is always sourced after the |init.vim| file. If you have one then the
|
||||
$MYGVIMRC environment variable has its name.
|
||||
|
||||
When the GUI starts up initializations are carried out, in this order:
|
||||
- The 'term' option is set to "builtin_gui" and terminal options are reset to
|
||||
@@ -39,7 +39,7 @@ When the GUI starts up initializations are carried out, in this order:
|
||||
see |$VIMRUNTIME|. To skip loading the system menu include 'M' in
|
||||
'guioptions'. *buffers-menu* *no_buffers_menu*
|
||||
The system menu file includes a "Buffers" menu. If you don't want this, set
|
||||
the "no_buffers_menu" variable in your .vimrc (not .gvimrc!): >
|
||||
the "no_buffers_menu" variable in your init.vim (not ginit.vim!): >
|
||||
:let no_buffers_menu = 1
|
||||
< NOTE: Switching on syntax highlighting also loads the menu file, thus
|
||||
disabling the Buffers menu must be done before ":syntax on".
|
||||
@@ -51,29 +51,26 @@ When the GUI starts up initializations are carried out, in this order:
|
||||
initializations are skipped. When {gvimrc} is "NONE" no file will be read
|
||||
for initializations.
|
||||
- For Unix and MS-Windows, if the system gvimrc exists, it is sourced. The
|
||||
name of this file is normally "$VIM/gvimrc". You can check this with
|
||||
name of this file is normally "$VIM/ginit.vim". You can check this with
|
||||
":version". Also see |$VIM|.
|
||||
- The following are tried, and only the first one that exists is used:
|
||||
- If the GVIMINIT environment variable exists and is not empty, it is
|
||||
executed as an Ex command.
|
||||
- If the user gvimrc file exists, it is sourced. The name of this file is
|
||||
normally "$HOME/.gvimrc". You can check this with ":version".
|
||||
- For Win32, when $HOME is not set, "$VIM\_gvimrc" is used.
|
||||
- When a "_gvimrc" file is not found, ".gvimrc" is tried too. And vice
|
||||
versa.
|
||||
normally "$XDG_CONFIG_HOME/nvim/ginit.vim" ($XDG_CONFIG_HOME defaults to
|
||||
~/.config).
|
||||
The name of the first file found is stored in $MYGVIMRC, unless it was
|
||||
already set.
|
||||
- If the 'exrc' option is set (which is NOT the default) the file ./.gvimrc
|
||||
- If the 'exrc' option is set (which is NOT the default) the file ./.ngvimrc
|
||||
is sourced, if it exists and isn't the same file as the system or user
|
||||
gvimrc file. If this file is not owned by you, some security restrictions
|
||||
apply. When ".gvimrc" is not found, "_gvimrc" is tried too. For Macintosh
|
||||
and DOS/Win32 "_gvimrc" is tried first.
|
||||
apply. When ".ngvimrc" is not found, "_ngvimrc" is tried too.
|
||||
|
||||
NOTE: All but the first one are not carried out if Vim was started with
|
||||
"-u NONE" and no "-U" argument was given, or when started with "-U NONE".
|
||||
|
||||
All this happens AFTER the normal Vim initializations, like reading your
|
||||
.vimrc file. See |initialization|.
|
||||
vimrc file. See |initialization|.
|
||||
But the GUI window is only opened after all the initializations have been
|
||||
carried out. If you want some commands to be executed just after opening the
|
||||
GUI window, use the |GUIEnter| autocommand event. Example: >
|
||||
@@ -84,9 +81,8 @@ and initialize other things that you may want to set up differently from the
|
||||
terminal version.
|
||||
|
||||
Recommended place for your personal GUI initializations:
|
||||
Unix $HOME/.gvimrc or $HOME/.vim/gvimrc
|
||||
MS-DOS and Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc
|
||||
or $VIM/_gvimrc
|
||||
Unix $XDG_CONFIG_HOME/.config/nvim/ginit.vim
|
||||
(default for $XDG_CONFIG_HOME is ~/.config)
|
||||
|
||||
The personal initialization files are searched in the order specified above
|
||||
and only the first one that is found is read.
|
||||
@@ -464,7 +460,7 @@ The default menus are read from the file "$VIMRUNTIME/menu.vim". See
|
||||
Starting off with the default set is a good idea. You can add more items, or,
|
||||
if you don't like the defaults at all, start with removing all menus
|
||||
|:unmenu-all|. You can also avoid the default menus being loaded by adding
|
||||
this line to your .vimrc file (NOT your .gvimrc file!): >
|
||||
this line to your vimrc file (NOT your gvimrc file!): >
|
||||
:let did_install_default_menus = 1
|
||||
If you also want to avoid the Syntax menu: >
|
||||
:let did_install_syntax_menu = 1
|
||||
@@ -479,7 +475,7 @@ Although this documentation is in the GUI section, you can actually use menus
|
||||
in console mode too. You will have to load |menu.vim| explicitly then, it is
|
||||
not done by default. You can use the |:emenu| command and command-line
|
||||
completion with 'wildmenu' to access the menu entries almost like a real menu
|
||||
system. To do this, put these commands in your .vimrc file: >
|
||||
system. To do this, put these commands in your vimrc file: >
|
||||
:source $VIMRUNTIME/menu.vim
|
||||
:set wildmenu
|
||||
:set cpo-=<
|
||||
|
@@ -316,7 +316,7 @@ When referring to a Vim option in the help file, place the option name between
|
||||
two single quotes, eg. 'statusline'
|
||||
|
||||
When referring to any other technical term, such as a filename or function
|
||||
parameter, surround it in backticks (`), eg. `~/.path/to/nvimrc`.
|
||||
parameter, surround it in backticks (`), eg. `~/.path/to/init.vim`.
|
||||
|
||||
|
||||
HIGHLIGHTING
|
||||
|
@@ -241,8 +241,8 @@ through your tags file(s).
|
||||
3. Cscope options *cscope-options*
|
||||
|
||||
Use the |:set| command to set all cscope options. Ideally, you would do
|
||||
this in one of your startup files (e.g., .vimrc). Some cscope related
|
||||
variables are only valid within |.vimrc|. Setting them after vim has
|
||||
this in one of your startup files (e.g., vimrc). Some cscope related
|
||||
variables are only valid within |init.vim|. Setting them after vim has
|
||||
started will have no effect!
|
||||
|
||||
*cscopeprg* *csprg*
|
||||
@@ -292,10 +292,10 @@ Examples: >
|
||||
*cscopeverbose* *csverb*
|
||||
If 'cscopeverbose' is not set (the default), messages will not be printed
|
||||
indicating success or failure when adding a cscope database. Ideally, you
|
||||
should reset this option in your |.vimrc| before adding any cscope databases,
|
||||
and after adding them, set it. From then on, when you add more databases
|
||||
within Vim, you will get a (hopefully) useful message should the database fail
|
||||
to be added. Examples: >
|
||||
should reset this option in your |init.vim| before adding any cscope
|
||||
databases, and after adding them, set it. From then on, when you add more
|
||||
databases within Vim, you will get a (hopefully) useful message should the
|
||||
database fail to be added. Examples: >
|
||||
:set csverb
|
||||
:set nocsverb
|
||||
<
|
||||
@@ -317,7 +317,7 @@ refer to the cscope man page for more details.
|
||||
|
||||
Assuming you have a cscope database, you need to "add" the database to Vim.
|
||||
This establishes a cscope "connection" and makes it available for Vim to use.
|
||||
You can do this in your .vimrc file, or you can do it manually after starting
|
||||
You can do this in your vimrc file, or you can do it manually after starting
|
||||
vim. For example, to add the cscope database "cscope.out", you would do:
|
||||
|
||||
:cs add cscope.out
|
||||
@@ -366,7 +366,7 @@ is not configurable (e.g., you can't do a tselect instead).
|
||||
==============================================================================
|
||||
6. Suggested usage *cscope-suggestions*
|
||||
|
||||
Put these entries in your .vimrc (adjust the pathname accordingly to your
|
||||
Put these entries in your vimrc (adjust the pathname accordingly to your
|
||||
setup): >
|
||||
|
||||
if has("cscope")
|
||||
|
@@ -718,7 +718,7 @@ also left unindented because continue statements are also used for purposes
|
||||
other than ending a do loop. Programs such as Tidy can convert structured
|
||||
do/continue loops to the do/enddo form. Do loops of the do/enddo variety can
|
||||
be indented. If you use only structured loops of the do/enddo form, you should
|
||||
declare this by setting the fortran_do_enddo variable in your .vimrc as
|
||||
declare this by setting the fortran_do_enddo variable in your vimrc as
|
||||
follows >
|
||||
|
||||
let fortran_do_enddo=1
|
||||
@@ -737,7 +737,7 @@ The indenting of program units (subroutines, functions, modules, and program
|
||||
blocks) is enabled by default but can be suppressed if a lighter, screen-width
|
||||
preserving indent style is desired. To suppress the indenting of program
|
||||
units for all fortran files set the global fortran_indent_less variable in
|
||||
your .vimrc as follows >
|
||||
your vimrc as follows >
|
||||
|
||||
let fortran_indent_less=1
|
||||
|
||||
@@ -969,7 +969,7 @@ VERILOG *ft-verilog-indent*
|
||||
General block statements such as if, for, case, always, initial, function,
|
||||
specify and begin, etc., are indented. The module block statements (first
|
||||
level blocks) are not indented by default. you can turn on the indent with
|
||||
setting a variable in the .vimrc as follows: >
|
||||
setting a variable in the vimrc as follows: >
|
||||
|
||||
let b:verilog_indent_modules = 1
|
||||
|
||||
@@ -1017,7 +1017,7 @@ To turn this off, add >
|
||||
|
||||
let g:vhdl_indent_genportmap = 0
|
||||
|
||||
to the .vimrc file, which causes the previous alignment example to change: >
|
||||
to the vimrc file, which causes the previous alignment example to change: >
|
||||
|
||||
ENTITY sync IS
|
||||
PORT (
|
||||
@@ -1041,7 +1041,7 @@ To turn this off, add >
|
||||
|
||||
let g:vhdl_indent_rhsassign = 0
|
||||
|
||||
to the .vimrc file, which causes the previous alignment example to change: >
|
||||
to the vimrc file, which causes the previous alignment example to change: >
|
||||
|
||||
sig_out <= (bus_a(1) AND
|
||||
(sig_b OR sig_c)) OR
|
||||
|
@@ -1257,9 +1257,9 @@ A compiled .exe for MS-Windows can be found at:
|
||||
|
||||
If you want to complete system functions you can do something like this. Use
|
||||
ctags to generate a tags file for all the system header files: >
|
||||
% ctags -R -f ~/.vim/systags /usr/include /usr/local/include
|
||||
% ctags -R -f ~/.config/nvim/systags /usr/include /usr/local/include
|
||||
In your vimrc file add this tags file to the 'tags' option: >
|
||||
set tags+=~/.vim/systags
|
||||
set tags+=~/.config/nvim/systags
|
||||
|
||||
When using CTRL-X CTRL-O after a name without any "." or "->" it is completed
|
||||
from the tags file directly. This works for any identifier, also function
|
||||
@@ -1459,7 +1459,7 @@ minimal language-sensitive completion.
|
||||
To enable syntax code completion you can run: >
|
||||
setlocal omnifunc=syntaxcomplete#Complete
|
||||
|
||||
You can automate this by placing the following in your |.vimrc| (after any
|
||||
You can automate this by placing the following in your |init.vim| (after any
|
||||
":filetype" command): >
|
||||
if has("autocmd") && exists("+omnifunc")
|
||||
autocmd Filetype *
|
||||
|
@@ -435,7 +435,7 @@ last defined. Example: >
|
||||
|
||||
:verbose map <C-W>*
|
||||
n <C-W>* * <C-W><C-S>*
|
||||
Last set from /home/abcd/.vimrc
|
||||
Last set from ~/.config/nvim/init.vim
|
||||
|
||||
See |:verbose-cmd| for more information.
|
||||
|
||||
@@ -1046,7 +1046,7 @@ You type: ab esc ^V^V^V^V^V^[
|
||||
You see: ab esc ^V^V^[
|
||||
|
||||
The command-line contains two actual ^Vs before the ^[. This is
|
||||
how it should appear in your .exrc file, if you choose to go that
|
||||
how it should appear in your vimrc file, if you choose to go that
|
||||
route. The first ^V is there to quote the second ^V; the :ab
|
||||
command uses ^V as its own quote character, so you can include quoted
|
||||
whitespace or the | character in the abbreviation. The :ab command
|
||||
|
@@ -222,7 +222,7 @@ To use a locale in Vim only, use the |:language| command: >
|
||||
|
||||
:language ko
|
||||
|
||||
Put this in your ~/.vimrc file to use it always.
|
||||
Put this in your |init.vim| file to use it always.
|
||||
|
||||
Or specify $LANG when starting Vim:
|
||||
|
||||
@@ -684,7 +684,7 @@ that works well you can use this command to see its name: >
|
||||
|
||||
:set guifont
|
||||
|
||||
Then add a command to your |gvimrc| file to set 'guifont': >
|
||||
Then add a command to your |ginit.vim| file to set 'guifont': >
|
||||
|
||||
:set guifont=courier_new:h12
|
||||
|
||||
@@ -928,7 +928,7 @@ Cursor color when IME or XIM is on *CursorIM*
|
||||
This works in the same way when using XIM.
|
||||
|
||||
You can select cursor color when status is on by using highlight group
|
||||
CursorIM. For example, add these lines to your |gvimrc|: >
|
||||
CursorIM. For example, add these lines to your |ginit.vim|: >
|
||||
|
||||
if has('multi_byte_ime')
|
||||
highlight Cursor guifg=NONE guibg=Green
|
||||
|
@@ -216,7 +216,7 @@ there is no different error message for that.
|
||||
Command not allowed from exrc/vimrc in current dir or tag search
|
||||
|
||||
Some commands are not allowed for security reasons. These commands mostly
|
||||
come from a .exrc or .vimrc file in the current directory, or from a tags
|
||||
come from a .exrc or .nvimrc file in the current directory, or from a tags
|
||||
file. Also see 'secure'.
|
||||
|
||||
*E74* >
|
||||
|
@@ -149,7 +149,7 @@ If you find a menu translation file for your language with a different name,
|
||||
create a file in your own runtime directory to load that one. The name of
|
||||
that file could be: >
|
||||
|
||||
~/.vim/lang/menu_<v:lang>.vim
|
||||
~/.config/nvim/lang/menu_<v:lang>.vim
|
||||
|
||||
Check the 'runtimepath' option for directories which are searched. In that
|
||||
file put a command to load the menu file with the other name: >
|
||||
|
@@ -12,8 +12,9 @@ good.
|
||||
To start the transition, link your previous configuration so Nvim can use
|
||||
it:
|
||||
>
|
||||
ln -s ~/.vimrc ~/.nvimrc
|
||||
ln -s ~/.vim ~/.nvim
|
||||
mkdir -p ${XDG_CONFIG_HOME:=$HOME/.config}
|
||||
ln -s ~/.vim $XDG_CONFIG_HOME/nvim
|
||||
ln -s ~/.vimrc $XDG_CONFIG_HOME/nvim/init.vim
|
||||
<
|
||||
See |nvim-intro|, especially |nvim-python| and |nvim-clipboard|, for
|
||||
additional software you might need to install to use all of Nvim's features.
|
||||
|
@@ -775,12 +775,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
in other cases Vim might not be able to guess the right value.
|
||||
|
||||
When starting the GUI, the default value for 'background' will be
|
||||
"light". When the value is not set in the .gvimrc, and Vim detects
|
||||
"light". When the value is not set in the gvimrc, and Vim detects
|
||||
that the background is actually quite dark, 'background' is set to
|
||||
"dark". But this happens only AFTER the .gvimrc file has been read
|
||||
"dark". But this happens only AFTER the gvimrc file has been read
|
||||
(because the window needs to be opened to find the actual background
|
||||
color). To get around this, force the GUI window to be opened by
|
||||
putting a ":gui" command in the .gvimrc file, before where the value
|
||||
putting a ":gui" command in the gvimrc file, before where the value
|
||||
of 'background' is used (e.g., before ":syntax on").
|
||||
|
||||
For MS-DOS and Windows the default is "dark".
|
||||
@@ -788,7 +788,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
"screen.linux", "cygwin" or "putty", or $COLORFGBG suggests a dark
|
||||
background. Otherwise the default is "light".
|
||||
|
||||
Normally this option would be set in the .vimrc file. Possibly
|
||||
Normally this option would be set in the vimrc file. Possibly
|
||||
depending on the terminal name. Example: >
|
||||
:if &term == "pcterm"
|
||||
: set background=dark
|
||||
@@ -901,8 +901,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
again not rename the file.
|
||||
|
||||
*'backupdir'* *'bdir'*
|
||||
'backupdir' 'bdir' string (default for MS-DOS and Win32: ".,$TEMP,c:/tmp,c:/temp",
|
||||
for Unix: ".,~/tmp,~/")
|
||||
'backupdir' 'bdir' string (default "$XDG_DATA_HOME/nvim/backup")
|
||||
global
|
||||
List of directories for the backup file, separated with commas.
|
||||
- The backup file will be created in the first directory in the list
|
||||
@@ -1479,7 +1478,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
initialization and does not have to be set by hand.
|
||||
When Vim is running in the GUI or in a resizable window, setting this
|
||||
option will cause the window size to be changed. When you only want
|
||||
to use the size for the GUI, put the command in your |gvimrc| file.
|
||||
to use the size for the GUI, put the command in your |ginit.vim| file.
|
||||
When you set this option and Vim is unable to change the physical
|
||||
number of columns of the display, the display may be messed up. For
|
||||
the GUI it is always possible and Vim limits the number of columns to
|
||||
@@ -2130,12 +2129,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
{char2}. See |digraphs|.
|
||||
|
||||
*'directory'* *'dir'*
|
||||
'directory' 'dir' string (default for MS-DOS and Win32: ".,$TEMP,c:\tmp,c:\temp",
|
||||
for Unix: ".,~/tmp,/var/tmp,/tmp")
|
||||
'directory' 'dir' string (default "$XDG_DATA_HOME/nvim/swap//")
|
||||
global
|
||||
List of directory names for the swap file, separated with commas.
|
||||
- The swap file will be created in the first directory where this is
|
||||
possible.
|
||||
possible. If it is not possible in any directory, but last
|
||||
directory listed in the option does not exist, it is created.
|
||||
- Empty means that no swap file will be used (recovery is
|
||||
impossible!).
|
||||
- A directory "." means to put the swap file in the same directory as
|
||||
@@ -2351,11 +2350,11 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'exrc'* *'ex'* *'noexrc'* *'noex'*
|
||||
'exrc' 'ex' boolean (default off)
|
||||
global
|
||||
Enables the reading of .vimrc, .exrc and .gvimrc in the current
|
||||
Enables the reading of .nvimrc, .exrc and .ngvimrc in the current
|
||||
directory. If you switch this option on you should also consider
|
||||
setting the 'secure' option (see |initialization|). Using a local
|
||||
.exrc, .vimrc or .gvimrc is a potential security leak, use with care!
|
||||
also see |.vimrc| and |gui-init|.
|
||||
.exrc, .nvimrc or .ngvimrc is a potential security leak, use with care!
|
||||
also see |init.vim| and |gui-init|.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -2531,7 +2530,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
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.
|
||||
used. Set 'fileformat' in your vimrc instead.
|
||||
|
||||
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
|
||||
@@ -3211,7 +3210,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'm' Menu bar is present.
|
||||
*'go-M'*
|
||||
'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note
|
||||
that this flag must be added in the .vimrc file, before
|
||||
that this flag must be added in the vimrc file, before
|
||||
switching on syntax or filetype recognition (when the |gvimrc|
|
||||
file is sourced the system menu has already been loaded; the
|
||||
":syntax on" and ":filetype on" commands load the menu too).
|
||||
@@ -3835,8 +3834,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
option.
|
||||
Careful: If you change this option, it might break expanding
|
||||
environment variables. E.g., when '/' is included and Vim tries to
|
||||
expand "$HOME/.nvim/shada/main.shada". Maybe you should change
|
||||
'iskeyword' instead.
|
||||
expand "$HOME/.local/share/nvim/shada/main.shada". Maybe you should
|
||||
change 'iskeyword' instead.
|
||||
|
||||
*'iskeyword'* *'isk'*
|
||||
'iskeyword' 'isk' string (Vim default for
|
||||
@@ -4670,7 +4669,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
being set. The same is true for a terminal where Vim handles the
|
||||
mouse clicks itself.
|
||||
This option is reset when starting the GUI. Thus if you set it in
|
||||
your .vimrc it will work in a terminal, but not in the GUI. Setting
|
||||
your vimrc it will work in a terminal, but not in the GUI. Setting
|
||||
'paste' in the GUI has side effects: e.g., the Paste toolbar button
|
||||
will no longer work in Insert mode, because it uses a mapping.
|
||||
When the 'paste' option is switched on (also when it was already on):
|
||||
@@ -5010,7 +5009,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
happens when executing external commands.
|
||||
|
||||
For non-Windows Vim: You can set or reset the 't_ti' and 't_te'
|
||||
options in your .vimrc. To disable restoring:
|
||||
options in your vimrc. To disable restoring:
|
||||
set t_ti= t_te=
|
||||
To enable restoring (for an xterm):
|
||||
set t_ti=^[7^[[r^[[?47h t_te=^[[?47l^[8
|
||||
@@ -5090,14 +5089,23 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
<
|
||||
*'runtimepath'* *'rtp'* *vimfiles*
|
||||
'runtimepath' 'rtp' string (default:
|
||||
Unix: "$HOME/.vim,
|
||||
$VIM/vimfiles,
|
||||
$VIMRUNTIME,
|
||||
$VIM/vimfiles/after,
|
||||
$HOME/.vim/after"
|
||||
Macintosh: "$VIM:vimfiles,
|
||||
$VIMRUNTIME,
|
||||
$VIM:vimfiles:after")
|
||||
Unix: "$XDG_CONFIG_HOME/nvim,
|
||||
$XDG_CONFIG_DIRS[1]/nvim,
|
||||
$XDG_CONFIG_DIRS[2]/nvim,
|
||||
…
|
||||
$XDG_DATA_HOME/nvim,
|
||||
$XDG_DATA_DIRS[1]/nvim/site,
|
||||
$XDG_DATA_DIRS[2]/nvim/site,
|
||||
…
|
||||
$VIMRUNTIME,
|
||||
…
|
||||
$XDG_DATA_DIRS[2]/nvim/site/after,
|
||||
$XDG_DATA_DIRS[1]/nvim/site/after,
|
||||
$XDG_DATA_HOME/nvim/after,
|
||||
…
|
||||
$XDG_CONFIG_DIRS[2]/nvim/after,
|
||||
$XDG_CONFIG_DIRS[1]/nvim/after,
|
||||
$XDG_CONFIG_HOME/nvim/after")
|
||||
global
|
||||
This is a list of directories which will be searched for runtime
|
||||
files:
|
||||
@@ -5120,18 +5128,23 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
And any other file searched for with the |:runtime| command.
|
||||
|
||||
The defaults for most systems are setup to search five locations:
|
||||
1. In your home directory, for your personal preferences.
|
||||
2. In a system-wide Vim directory, for preferences from the system
|
||||
administrator.
|
||||
3. In $VIMRUNTIME, for files distributed with Vim.
|
||||
The defaults for most systems are setup to search these locations:
|
||||
1. In your home directory (XDG_CONFIG_HOME defaults to $HOME/.config),
|
||||
for your personal preferences.
|
||||
2. In directories which must contain configuration files according to
|
||||
XDG ($XDG_CONFIG_DIRS). This also contains preferences from system
|
||||
administrator (XDG_CONFIG_DIRS defaults to /etc/xdg).
|
||||
3. In data home directory, for plugins installed by user.
|
||||
4. In nvim/site subdirectories for each directory in $XDG_DATA_DIRS.
|
||||
This is for plugins which were installed by system administrator,
|
||||
but are not part of the Neovim distribution. XDG_DATA_DIRS defaults
|
||||
to /usr/local/share/:/usr/share/, so system administrators are
|
||||
expected to install site plugins to /usr/share/nvim/site.
|
||||
5. In $VIMRUNTIME, for files distributed with Neovim.
|
||||
*after-directory*
|
||||
4. In the "after" directory in the system-wide Vim directory. This is
|
||||
for the system administrator to overrule or add to the distributed
|
||||
defaults (rarely needed)
|
||||
5. In the "after" directory in your home directory. This is for
|
||||
personal preferences to overrule or add to the distributed defaults
|
||||
or system-wide settings (rarely needed).
|
||||
6, 7, 8, 9. In after/ subdirectories of 1, 2, 3 and 4, with reverse
|
||||
ordering. This is for preferences to overrule or add to the
|
||||
distributed defaults or system-wide settings (rarely needed).
|
||||
|
||||
Note that, unlike 'path', no wildcards like "**" are allowed. Normal
|
||||
wildcards are allowed, but can significantly slow down searching for
|
||||
@@ -5240,12 +5253,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'secure' boolean (default off)
|
||||
global
|
||||
When on, ":autocmd", shell and write commands are not allowed in
|
||||
".vimrc" and ".exrc" in the current directory and map commands are
|
||||
".nvimrc" and ".exrc" in the current directory and map commands are
|
||||
displayed. Switch it off only if you know that you will not run into
|
||||
problems, or when the 'exrc' option is off. On Unix this option is
|
||||
only used if the ".vimrc" or ".exrc" is not owned by you. This can be
|
||||
only used if the ".nvimrc" or ".exrc" is not owned by you. This can be
|
||||
dangerous if the systems allows users to do a "chown". You better set
|
||||
'secure' at the end of your ~/.vimrc then.
|
||||
'secure' at the end of your |init.vim| then.
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
@@ -5502,7 +5515,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
default becomes "2>&1| tee". This means that stderr is also included.
|
||||
Before using the 'shell' option a path is removed, thus "/bin/sh" uses
|
||||
"sh".
|
||||
The initialization of this option is done after reading the ".vimrc"
|
||||
The initialization of this option is done after reading the vimrc
|
||||
and the other initializations, so that when the 'shell' option is set
|
||||
there, the 'shellpipe' option changes automatically, unless it was
|
||||
explicitly set before.
|
||||
@@ -5548,7 +5561,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
For Win32, the Unix checks are done and additionally "cmd" is checked
|
||||
for, which makes the default ">%s 2>&1". Also, the same names with
|
||||
".exe" appended are checked for.
|
||||
The initialization of this option is done after reading the ".vimrc"
|
||||
The initialization of this option is done after reading the vimrc
|
||||
and the other initializations, so that when the 'shell' option is set
|
||||
there, the 'shellredir' option changes automatically unless it was
|
||||
explicitly set before.
|
||||
@@ -6023,7 +6036,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
Only one of "best", "double" or "fast" may be used. The others may
|
||||
appear several times in any order. Example: >
|
||||
:set sps=file:~/.vim/sugg,best,expr:MySuggest()
|
||||
:set sps=file:~/.config/nvim/sugg,best,expr:MySuggest()
|
||||
<
|
||||
This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
@@ -6198,7 +6211,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
Watch out for errors in expressions. They may render Vim unusable!
|
||||
If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and
|
||||
edit your .vimrc or whatever with "vim -u NONE" to get it right.
|
||||
edit your vimrc or whatever with "vim -u NONE" to get it right.
|
||||
|
||||
Examples:
|
||||
Emulate standard status line with 'ruler' set >
|
||||
@@ -6804,8 +6817,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
displayed when 'verbosefile' is set.
|
||||
|
||||
*'viewdir'* *'vdir'*
|
||||
'viewdir' 'vdir' string (default for MS-DOS and Win32: "$VIM/vimfiles/view",
|
||||
for Unix: "~/.vim/view")
|
||||
'viewdir' 'vdir' string (default: "$XDG_DATA_HOME/nvim/view")
|
||||
global
|
||||
{not available when compiled without the |+mksession|
|
||||
feature}
|
||||
|
@@ -40,7 +40,7 @@ Setting a map *spec-setting-a-map*
|
||||
As you should know, you can easily set a map to access any Vim command (or
|
||||
anything, for that matter). If you don't like the default map of
|
||||
<LocalLeader>c, you may just set up your own key. The following line
|
||||
shows you how you could do this in your .vimrc file, mapping the plugin to
|
||||
shows you how you could do this in your vimrc file, mapping the plugin to
|
||||
the <F5> key:
|
||||
|
||||
au FileType spec map <buffer> <F5> <Plug>SpecChangelog
|
||||
@@ -58,7 +58,7 @@ The format string *spec_chglog_format*
|
||||
-----------------
|
||||
|
||||
You can easily customize how your spec file entry will look like. To do
|
||||
this just set the variable "spec_chglog_format" in your .vimrc file like
|
||||
this just set the variable "spec_chglog_format" in your vimrc file like
|
||||
this: >
|
||||
|
||||
let spec_chglog_format = "%a %b %d %Y My Name <my@email.com>"
|
||||
@@ -92,7 +92,7 @@ that it may control if the release has been updated after the last
|
||||
change in the package or not. If you have not updated the package
|
||||
version or release, it will ask you if it should update the package
|
||||
release for you. To turn this feature on, just insert the following
|
||||
code in your .vimrc: >
|
||||
code in your vimrc: >
|
||||
|
||||
let spec_chglog_release_info = 1
|
||||
|
||||
|
@@ -133,15 +133,17 @@ If there is no error, return zero or an empty string.
|
||||
The default for non MS-Windows systems is to simply use "lpr" to print the
|
||||
file: >
|
||||
|
||||
system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice)
|
||||
. ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error
|
||||
system(['lpr']
|
||||
+ (empty(&printdevice)?[]:['-P', &printdevice])
|
||||
+ [v:fname_in])
|
||||
. delete(v:fname_in)
|
||||
+ v:shell_error
|
||||
|
||||
On MS-Dos and MS-Windows machines the default is to copy the file to the
|
||||
currently specified printdevice: >
|
||||
|
||||
system('copy' . ' ' . v:fname_in . (&printdevice == ''
|
||||
? ' LPT1:' : (' \"' . &printdevice . '\"')))
|
||||
. delete(v:fname_in)
|
||||
system(['copy', v:fname_in, empty(&printdevice)?'LPT1':&printdevice])
|
||||
. delete(v:fname_in)
|
||||
|
||||
If you change this option, using a function is an easy way to avoid having to
|
||||
escape all the spaces. Example: >
|
||||
|
@@ -1277,7 +1277,7 @@ Jikes(TM), a source-to-bytecode Java compiler published by IBM Research,
|
||||
produces simple multi-line error messages.
|
||||
|
||||
An 'errorformat' string matching the produced messages is shown below.
|
||||
The following lines can be placed in the user's |vimrc| to overwrite Vim's
|
||||
The following lines can be placed in the user's |init.vim| to overwrite Vim's
|
||||
recognized default formats, or see |:set+=| how to install this format
|
||||
additionally to the default. >
|
||||
|
||||
|
@@ -548,7 +548,7 @@ In Insert or Command-line mode:
|
||||
settings to [file] (default: ".exrc";
|
||||
use ! to overwrite)
|
||||
|:mkvimrc| :mkv[imrc][!] [file]
|
||||
same as ":mkexrc", but with default ".vimrc"
|
||||
same as :mkexrc, but with default ".nvimrc"
|
||||
|:mksession| :mks[ession][!] [file]
|
||||
like ":mkvimrc", but store current files,
|
||||
windows, etc. too, to be able to continue
|
||||
@@ -681,7 +681,7 @@ Short explanation of each option: *option-list*
|
||||
'esckeys' 'ek' recognize function keys in Insert mode
|
||||
'eventignore' 'ei' autocommand events that are ignored
|
||||
'expandtab' 'et' use spaces when <Tab> is inserted
|
||||
'exrc' 'ex' read .vimrc and .exrc in the current directory
|
||||
'exrc' 'ex' read .nvimrc and .exrc in the current directory
|
||||
'fileencoding' 'fenc' file encoding for multi-byte text
|
||||
'fileencodings' 'fencs' automatically detected character encodings
|
||||
'fileformat' 'ff' file format used for file I/O
|
||||
|
@@ -204,7 +204,7 @@ Colon, USA)
|
||||
VIM is a joy to use, it is so well thought and practical that I wonder why
|
||||
anybody would use visual development tools. VIM is powerful and elegant, it
|
||||
looks deceptively simple but is almost as complex as a 747 (especially when I
|
||||
look at my growing .vimrc), keep up that wonderful job, VIM is a centerpiece
|
||||
look at my growing vimrc), keep up that wonderful job, VIM is a centerpiece
|
||||
of the free software world. (Louis-David Mitterand, USA)
|
||||
|
||||
I cannot believe how great it is to use VIM. I think the guys at work are
|
||||
|
@@ -58,7 +58,7 @@ Disadvantages:
|
||||
message.
|
||||
|
||||
If you want to put swap files in a fixed place, put a command resembling the
|
||||
following ones in your .vimrc:
|
||||
following ones in your vimrc:
|
||||
:set dir=~/tmp (for Unix)
|
||||
:set dir=c:\\tmp (for MS-DOS and Win32)
|
||||
This is also very handy when editing files on floppy. Of course you will have
|
||||
|
@@ -93,8 +93,9 @@ approach with |rpcnotify()|, meaning return values or exceptions raised in the
|
||||
handler function are ignored.
|
||||
|
||||
To test the above plugin, it must be saved in "rplugin/python" in a
|
||||
'runtimepath' directory (~/.nvim/rplugin/python/limit.py for example). Then,
|
||||
the remote plugin manifest must be generated with `:UpdateRemotePlugins`.
|
||||
'runtimepath' directory (~/.config/nvim/rplugin/python/limit.py for example).
|
||||
Then, the remote plugin manifest must be generated with
|
||||
`:UpdateRemotePlugins`.
|
||||
|
||||
==============================================================================
|
||||
4. Remote plugin manifest *remote-plugin-manifest*
|
||||
|
@@ -274,8 +274,8 @@ nested as deep as the number of files that can be opened at one time (about
|
||||
You can use the "<sfile>" string (literally, this is not a special key) inside
|
||||
of the sourced file, in places where a file name is expected. It will be
|
||||
replaced by the file name of the sourced file. For example, if you have a
|
||||
"other.vimrc" file in the same directory as your ".vimrc" file, you can source
|
||||
it from your ".vimrc" file with this command: >
|
||||
"other.vimrc" file in the same directory as your |init.vim| file, you can
|
||||
source it from your |init.vim| file with this command: >
|
||||
:source <sfile>:h/other.vimrc
|
||||
|
||||
In script files terminal-dependent key codes are represented by
|
||||
@@ -482,7 +482,7 @@ DEFINING BREAKPOINTS
|
||||
|
||||
:breaka[dd] file [lnum] {name}
|
||||
Set a breakpoint in a sourced file. Example: >
|
||||
:breakadd file 43 .vimrc
|
||||
:breakadd file 43 init.vim
|
||||
|
||||
:breaka[dd] here
|
||||
Set a breakpoint in the current line of the current file.
|
||||
|
@@ -307,26 +307,26 @@ Exceptions:
|
||||
spell file is used.
|
||||
|
||||
For example, with these values:
|
||||
'runtimepath' is "~/.vim,/usr/share/vim70,~/.vim/after"
|
||||
'runtimepath' is "~/.config/nvim,/usr/share/vim70,~/.config/nvim/after"
|
||||
'encoding' is "iso-8859-2"
|
||||
'spelllang' is "pl"
|
||||
|
||||
Vim will look for:
|
||||
1. ~/.vim/spell/pl.iso-8859-2.spl
|
||||
1. ~/.config/nvim/spell/pl.iso-8859-2.spl
|
||||
2. /usr/share/vim70/spell/pl.iso-8859-2.spl
|
||||
3. ~/.vim/spell/pl.iso-8859-2.add.spl
|
||||
3. ~/.config/nvim/spell/pl.iso-8859-2.add.spl
|
||||
4. /usr/share/vim70/spell/pl.iso-8859-2.add.spl
|
||||
5. ~/.vim/after/spell/pl.iso-8859-2.add.spl
|
||||
5. ~/.config/nvim/after/spell/pl.iso-8859-2.add.spl
|
||||
|
||||
This assumes 1. is not found and 2. is found.
|
||||
|
||||
If 'encoding' is "latin1" Vim will look for:
|
||||
1. ~/.vim/spell/pl.latin1.spl
|
||||
1. ~/.config/nvim/spell/pl.latin1.spl
|
||||
2. /usr/share/vim70/spell/pl.latin1.spl
|
||||
3. ~/.vim/after/spell/pl.latin1.spl
|
||||
4. ~/.vim/spell/pl.ascii.spl
|
||||
3. ~/.config/nvim/after/spell/pl.latin1.spl
|
||||
4. ~/.config/nvim/spell/pl.ascii.spl
|
||||
5. /usr/share/vim70/spell/pl.ascii.spl
|
||||
6. ~/.vim/after/spell/pl.ascii.spl
|
||||
6. ~/.config/nvim/after/spell/pl.ascii.spl
|
||||
|
||||
This assumes none of them are found (Polish doesn't make sense when leaving
|
||||
out the non-ASCII characters).
|
||||
|
@@ -106,7 +106,7 @@ argument.
|
||||
--startuptime {fname} *--startuptime*
|
||||
During startup write timing messages to the file {fname}.
|
||||
This can be used to find out where time is spent while loading
|
||||
your .vimrc, plugins and opening the first file.
|
||||
your |init.vim|, plugins and opening the first file.
|
||||
When {fname} already exists new messages are appended.
|
||||
(Only available when compiled with the |+startuptime|
|
||||
feature).
|
||||
@@ -232,8 +232,8 @@ argument.
|
||||
-b Binary mode. File I/O will only recognize <NL> to separate
|
||||
lines. The 'expandtab' option will be reset. The 'textwidth'
|
||||
option is set to 0. 'modeline' is reset. The 'binary' option
|
||||
is set. This is done after reading the vimrc/exrc files but
|
||||
before reading any file in the arglist. See also
|
||||
is set. This is done after reading the init.vim/exrc files
|
||||
but before reading any file in the arglist. See also
|
||||
|edit-binary|.
|
||||
|
||||
*-l*
|
||||
@@ -312,11 +312,11 @@ argument.
|
||||
be used to start Vim in a special mode, with special
|
||||
mappings and settings. A shell alias can be used to make
|
||||
this easy to use. For example: >
|
||||
alias vimc vim -u ~/.c_vimrc !*
|
||||
alias vimc vim -u ~/.config/nvim/c_init.vim !*
|
||||
< Also consider using autocommands; see |autocommand|.
|
||||
When {vimrc} is equal to "NONE" (all uppercase), all
|
||||
initializations from files and environment variables are
|
||||
skipped, including reading the |gvimrc| file when the GUI
|
||||
skipped, including reading the |ginit.vim| file when the GUI
|
||||
starts. Loading plugins is also skipped.
|
||||
When {vimrc} is equal to "NORC" (all uppercase), this has the
|
||||
same effect as "NONE", but loading plugins is not skipped.
|
||||
@@ -373,24 +373,24 @@ accordingly. Vim proceeds in this order:
|
||||
3. Execute Ex commands, from environment variables and/or files
|
||||
An environment variable is read as one Ex command line, where multiple
|
||||
commands must be separated with '|' or "<NL>".
|
||||
*vimrc* *exrc*
|
||||
*init.vim* *vimrc* *exrc*
|
||||
A file that contains initialization commands is called a "vimrc" file.
|
||||
Each line in a vimrc file is executed as an Ex command line. It is
|
||||
sometimes also referred to as "exrc" file. They are the same type of
|
||||
file, but "exrc" is what Vi always used, "vimrc" is a Vim specific
|
||||
name. Also see |vimrc-intro|.
|
||||
name, "init.vim" is Neovim specific location for vimrc file. Also see
|
||||
|vimrc-intro|.
|
||||
|
||||
Places for your personal initializations:
|
||||
Unix $HOME/.vimrc or $HOME/.vim/vimrc
|
||||
MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc
|
||||
or $VIM/_vimrc
|
||||
Unix $XDG_CONFIG_HOME/nvim/init.vim
|
||||
(default for $XDG_CONFIG_HOME is ~/.config)
|
||||
|
||||
The files are searched in the order specified above and only the first
|
||||
one that is found is read.
|
||||
|
||||
RECOMMENDATION: Put all your Vim configuration stuff in the
|
||||
$HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it
|
||||
easy to copy it to another system.
|
||||
RECOMMENDATION: Put all your Vim configuration stuff in the
|
||||
$HOME/.config/nvim/ directory. That makes it easy to copy it to
|
||||
another system.
|
||||
|
||||
If Vim was started with "-u filename", the file "filename" is used.
|
||||
All following initializations until 4. are skipped. $MYVIMRC is not
|
||||
@@ -407,39 +407,26 @@ accordingly. Vim proceeds in this order:
|
||||
":version" command. Mostly it's "$VIM/vimrc".
|
||||
For the Macintosh the $VIMRUNTIME/macmap.vim is read.
|
||||
|
||||
*VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* *$MYVIMRC*
|
||||
*VIMINIT* *EXINIT* *$MYVIMRC*
|
||||
b. Four places are searched for initializations. The first that exists
|
||||
is used, the others are ignored. The $MYVIMRC environment variable is
|
||||
set to the file that was first found, unless $MYVIMRC was already set
|
||||
and when using VIMINIT.
|
||||
- The environment variable VIMINIT
|
||||
The value of $VIMINIT is used as an Ex command line.
|
||||
- The user vimrc file(s):
|
||||
"$HOME/.vimrc" (for Unix)
|
||||
"$HOME/.vim/vimrc" (for Unix)
|
||||
"$HOME/_vimrc" (for Win32)
|
||||
"$HOME/vimfiles/vimrc" (for Win32)
|
||||
"$VIM/_vimrc" (for Win32)
|
||||
Note: For Unix, when ".vimrc" does not exist,
|
||||
"_vimrc" is also tried, in case an MS-DOS compatible file
|
||||
system is used. For MS-DOS and Win32 ".vimrc" is checked
|
||||
after "_vimrc", in case long file names are used.
|
||||
Note: For MS-DOS and Win32, "$HOME" is checked first. If no
|
||||
"_vimrc" or ".vimrc" is found there, "$VIM" is tried.
|
||||
See |$VIM| for when $VIM is not set.
|
||||
- The user vimrc file: $XDG_CONFIG_HOME/nvim/init.vim.
|
||||
- Other vimrc file: {xdg_config_dir}/nvim/init.vim where
|
||||
{xdg_config_dir} is one of the directories in $XDG_CONFIG_DIRS.
|
||||
- The environment variable EXINIT.
|
||||
The value of $EXINIT is used as an Ex command line.
|
||||
- The user exrc file(s). Same as for the user vimrc file, but with
|
||||
"vimrc" replaced by "exrc". But only one of ".exrc" and "_exrc" is
|
||||
used, depending on the system.
|
||||
|
||||
c. If the 'exrc' option is on (which is not the default), the current
|
||||
directory is searched for three files. The first that exists is used,
|
||||
the others are ignored.
|
||||
- The file ".vimrc" (for Unix)
|
||||
"_vimrc" (for Win32)
|
||||
- The file "_vimrc" (for Unix)
|
||||
".vimrc" (for Win32)
|
||||
- The file ".nvimrc" (for Unix)
|
||||
"_nvimrc" (for Win32)
|
||||
- The file "_nvimrc" (for Unix)
|
||||
".nvimrc" (for Win32)
|
||||
- The file ".exrc" (for Unix)
|
||||
"_exrc" (for Win32)
|
||||
|
||||
@@ -504,12 +491,12 @@ Some hints on using initializations:
|
||||
Standard setup:
|
||||
Create a vimrc file to set the default settings and mappings for all your edit
|
||||
sessions. Put it in a place so that it will be found by 3b:
|
||||
~/.vimrc (Unix)
|
||||
$VIM\_vimrc (MS-DOS and Win32)
|
||||
~/.config/nvim/init.vim (Unix)
|
||||
~/AppData/Local/nvim/init.vim (Win32)
|
||||
|
||||
Local setup:
|
||||
Put all commands that you need for editing a specific directory only into a
|
||||
vimrc file and place it in that directory under the name ".vimrc" ("_vimrc"
|
||||
vimrc file and place it in that directory under the name ".nvimrc" ("_nvimrc"
|
||||
for MS-DOS and Win32). NOTE: To make Vim look for these special files you
|
||||
have to turn on the option 'exrc'. See |trojan-horse| too.
|
||||
|
||||
@@ -517,7 +504,9 @@ System setup:
|
||||
This only applies if you are managing a Unix system with several users and
|
||||
want to set the defaults for all users. Create a vimrc file with commands
|
||||
for default settings and mappings and put it in the place that is given with
|
||||
the ":version" command.
|
||||
the ":version" command. NOTE: System vimrc file needs specific compilation
|
||||
options (one needs to define SYS_VIMRC_FILE macros). If :version command does
|
||||
not show anything like this, consider contacting the nvim package maintainer.
|
||||
|
||||
Saving the current state of Vim to a file:
|
||||
Whenever you have changed values of options or when you have created a
|
||||
@@ -526,7 +515,8 @@ mapping, then you may want to save them in a vimrc file for later use. See
|
||||
|
||||
Avoiding setup problems for Vi users:
|
||||
Vi uses the variable EXINIT and the file "~/.exrc". So if you do not want to
|
||||
interfere with Vi, then use the variable VIMINIT and the file "vimrc" instead.
|
||||
interfere with Vi, then use the variable VIMINIT and the file init.vim
|
||||
instead.
|
||||
|
||||
MS-DOS line separators:
|
||||
On MS-DOS-like systems (MS-DOS itself and Win32), Vim assumes that all
|
||||
@@ -538,7 +528,7 @@ The $MYVIMRC or $MYGVIMRC file will be set to the first found vimrc and/or
|
||||
gvimrc file.
|
||||
|
||||
Avoiding trojan horses: *trojan-horse*
|
||||
While reading the "vimrc" or the "exrc" file in the current directory, some
|
||||
While reading the vimrc or the exrc file in the current directory, some
|
||||
commands can be disabled for security reasons by setting the 'secure' option.
|
||||
This is always done when executing the command from a tags file. Otherwise it
|
||||
would be possible that you accidentally use a vimrc or tags file that somebody
|
||||
@@ -547,8 +537,8 @@ that start a shell, the ones that write to a file, and ":autocmd". The ":map"
|
||||
commands are echoed, so you can see which keys are being mapped.
|
||||
If you want Vim to execute all commands in a local vimrc file, you
|
||||
can reset the 'secure' option in the EXINIT or VIMINIT environment variable or
|
||||
in the global "exrc" or "vimrc" file. This is not possible in "vimrc" or
|
||||
"exrc" in the current directory, for obvious reasons.
|
||||
in the global exrc or vimrc file. This is not possible in vimrc or
|
||||
exrc in the current directory, for obvious reasons.
|
||||
On Unix systems, this only happens if you are not the owner of the
|
||||
vimrc file. Warning: If you unpack an archive that contains a vimrc or exrc
|
||||
file, it will be owned by you. You won't have the security protection. Check
|
||||
@@ -603,7 +593,7 @@ though.
|
||||
4. $VIM and $VIMRUNTIME
|
||||
*$VIM*
|
||||
The environment variable "$VIM" is used to locate various user files for Vim,
|
||||
such as the user startup script ".vimrc". This depends on the system, see
|
||||
such as the user startup script |init.vim|. This depends on the system, see
|
||||
|startup|.
|
||||
|
||||
To avoid the need for every user to set the $VIM environment variable, Vim
|
||||
@@ -712,7 +702,7 @@ vimrc file.
|
||||
directory).
|
||||
|
||||
*:mkv* *:mkvimrc*
|
||||
:mkv[imrc][!] [file] Like ":mkexrc", but the default is ".vimrc" in the
|
||||
:mkv[imrc][!] [file] Like ":mkexrc", but the default is ".nvimrc" in the
|
||||
current directory. The ":version" command is also
|
||||
written to the file.
|
||||
|
||||
@@ -731,13 +721,13 @@ can be used with different terminals.
|
||||
|
||||
Only global mappings are stored, not mappings local to a buffer.
|
||||
|
||||
A common method is to use a default ".vimrc" file, make some modifications
|
||||
A common method is to use a default |init.vim| file, make some modifications
|
||||
with ":map" and ":set" commands and write the modified file. First read the
|
||||
default ".vimrc" in with a command like ":source ~piet/.vimrc.Cprogs", change
|
||||
default vimrc in with a command like ":source ~piet/.vimrc.Cprogs", change
|
||||
the settings and then save them in the current directory with ":mkvimrc!". If
|
||||
you want to make this file your default .vimrc, move it to your home directory
|
||||
(on Unix) or $VIM directory (MS-DOS). You could also use
|
||||
autocommands |autocommand| and/or modelines |modeline|.
|
||||
you want to make this file your default |init.vim|, move it to
|
||||
$XDG_CONFIG_HOME/nvim. You could also use autocommands |autocommand| and/or
|
||||
modelines |modeline|.
|
||||
|
||||
*vimrc-option-example*
|
||||
If you only want to add a single option setting to your vimrc, you can use
|
||||
@@ -1057,10 +1047,8 @@ even if other entries (with known name/type/etc) are merged. |shada-merging|
|
||||
|
||||
SHADA FILE NAME *shada-file-name*
|
||||
|
||||
- The default name of the ShaDa file is "$HOME/.nvim/shada/main.shada" for
|
||||
Unix, "$HOME\_nvim\shada\main.shada" for MS-DOS and Win32. For the last
|
||||
two, when $HOME is not set, "$VIM\_nvim\shada\main.shada" is used. When
|
||||
$VIM is also not set, "c:\_nvim\shada\main.shada" is used.
|
||||
- The default name of the ShaDa file is "$XDG_DATA_HOME/nvim/shada/main.shada"
|
||||
for Unix. Default for $XDG_DATA_HOME is ~/.local/share.
|
||||
- The 'n' flag in the 'shada' option can be used to specify another ShaDa
|
||||
file name |'shada'|.
|
||||
- The "-i" Vim argument can be used to set another file name, |-i|. When the
|
||||
@@ -1103,7 +1091,7 @@ do this. This can be useful in order to create a second file, say
|
||||
"~/.my.shada" which could contain certain settings that you always want when
|
||||
you first start Neovim. For example, you can preload registers with
|
||||
particular data, or put certain commands in the command line history. A line
|
||||
in your .nvimrc file like >
|
||||
in your |init.vim| file like >
|
||||
:rshada! ~/.my.shada
|
||||
can be used to load this information. You could even have different ShaDa
|
||||
files for different types of files (e.g., C code) and load them based on the
|
||||
@@ -1167,7 +1155,8 @@ running) you have additional options:
|
||||
empty, marks for up to 100 files will be written.
|
||||
When you get error "E138: All .tmp.X files exist,
|
||||
cannot write ShaDa file!" check that no old temp files
|
||||
were left behind (e.g. ~/.nvim/shada/main.shada.tmp*).
|
||||
were left behind (e.g.
|
||||
~/.local/share/nvim/shada/main.shada.tmp*).
|
||||
|
||||
Note: Executing :wshada will reset all |'quote| marks.
|
||||
|
||||
|
@@ -143,14 +143,14 @@ automatically with ":syntax enable", do this:
|
||||
|
||||
1. Create your user runtime directory. You would normally use the first item
|
||||
of the 'runtimepath' option. Example for Unix: >
|
||||
mkdir ~/.vim
|
||||
mkdir ~/.config/nvim
|
||||
|
||||
2. Create a directory in there called "syntax". For Unix: >
|
||||
mkdir ~/.vim/syntax
|
||||
mkdir ~/.config/nvim/syntax
|
||||
|
||||
3. Write the Vim syntax file. Or download one from the internet. Then write
|
||||
it in your syntax directory. For example, for the "mine" syntax: >
|
||||
:w ~/.vim/syntax/mine.vim
|
||||
:w ~/.config/nvim/syntax/mine.vim
|
||||
|
||||
Now you can start using your syntax file manually: >
|
||||
:set syntax=mine
|
||||
@@ -170,8 +170,8 @@ add a few items or change the highlighting, follow these steps:
|
||||
1. Create your user directory from 'runtimepath', see above.
|
||||
|
||||
2. Create a directory in there called "after/syntax". For Unix: >
|
||||
mkdir ~/.vim/after
|
||||
mkdir ~/.vim/after/syntax
|
||||
mkdir ~/.config/nvim/after
|
||||
mkdir ~/.config/nvim/after/syntax
|
||||
|
||||
3. Write a Vim script that contains the commands you want to use. For
|
||||
example, to change the colors for the C syntax: >
|
||||
@@ -179,15 +179,15 @@ add a few items or change the highlighting, follow these steps:
|
||||
|
||||
4. Write that file in the "after/syntax" directory. Use the name of the
|
||||
syntax, with ".vim" added. For our C syntax: >
|
||||
:w ~/.vim/after/syntax/c.vim
|
||||
:w ~/.config/nvim/after/syntax/c.vim
|
||||
|
||||
That's it. The next time you edit a C file the Comment color will be
|
||||
different. You don't even have to restart Vim.
|
||||
|
||||
If you have multiple files, you can use the filetype as the directory name.
|
||||
All the "*.vim" files in this directory will be used, for example:
|
||||
~/.vim/after/syntax/c/one.vim
|
||||
~/.vim/after/syntax/c/two.vim
|
||||
~/.config/nvim/after/syntax/c/one.vim
|
||||
~/.config/nvim/after/syntax/c/two.vim
|
||||
|
||||
|
||||
REPLACING AN EXISTING SYNTAX FILE *mysyntaxfile-replace*
|
||||
@@ -471,7 +471,7 @@ moves through the buffer, switches windows, and the like: >
|
||||
|
||||
vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c
|
||||
<
|
||||
Note that the -s flag prevents loading your .vimrc and any plugins, so you
|
||||
Note that the -s flag prevents loading your vimrc and any plugins, so you
|
||||
need to explicitly source/enable anything that will affect the HTML
|
||||
conversion. See |-E| and |-s-ex| for details. It is probably best to create a
|
||||
script to replace all the -c commands and use it with the -u flag instead of
|
||||
@@ -874,13 +874,13 @@ for both 3 GL and 4 GL programming. Large number of standard defines/constants
|
||||
are supported.
|
||||
|
||||
Some special violation of coding standards will be signalled when one specify
|
||||
in ones |.vimrc|: >
|
||||
in ones |init.vim|: >
|
||||
let baan_code_stds=1
|
||||
|
||||
*baan-folding*
|
||||
|
||||
Syntax folding can be enabled at various levels through the variables
|
||||
mentioned below (Set those in your |.vimrc|). The more complex folding on
|
||||
mentioned below (Set those in your |init.vim|). The more complex folding on
|
||||
source blocks and SQL can be CPU intensive.
|
||||
|
||||
To allow any folding and enable folding at function level use: >
|
||||
@@ -894,8 +894,8 @@ SELECTEMPTY, ... The indentation preceding the begin/end keywords has to
|
||||
match (spaces are not considered equal to a tab). >
|
||||
let baan_fold_sql=1
|
||||
Note: Block folding can result in many small folds. It is suggested to |:set|
|
||||
the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in
|
||||
.../after/syntax/baan.vim (see |after-directory|). Eg: >
|
||||
the options 'foldminlines' and 'foldnestmax' in |init.vim| or use |:setlocal|
|
||||
in .../after/syntax/baan.vim (see |after-directory|). Eg: >
|
||||
set foldminlines=5
|
||||
set foldnestmax=6
|
||||
|
||||
@@ -977,7 +977,7 @@ highlighting for cErrInParen and cErrInBracket.
|
||||
|
||||
If you want to use folding in your C files, you can add these lines in a file
|
||||
in the "after" directory in 'runtimepath'. For Unix this would be
|
||||
~/.vim/after/syntax/c.vim. >
|
||||
~/.config/nvim/after/syntax/c.vim. >
|
||||
syn sync fromstart
|
||||
set foldmethod=syntax
|
||||
|
||||
@@ -1004,7 +1004,7 @@ chill_minlines like c_minlines
|
||||
CHANGELOG *changelog.vim* *ft-changelog-syntax*
|
||||
|
||||
ChangeLog supports highlighting spaces at the start of a line.
|
||||
If you do not like this, add following line to your .vimrc: >
|
||||
If you do not like this, add following line to your vimrc: >
|
||||
let g:changelog_spacing_errors = 0
|
||||
This works the next time you edit a changelog file. You can also use
|
||||
"b:changelog_spacing_errors" to set this per buffer (before loading the syntax
|
||||
@@ -1037,7 +1037,7 @@ COBOL *cobol.vim* *ft-cobol-syntax*
|
||||
COBOL highlighting has different needs for legacy code than it does for fresh
|
||||
development. This is due to differences in what is being done (maintenance
|
||||
versus development) and other factors. To enable legacy code highlighting,
|
||||
add this line to your .vimrc: >
|
||||
add this line to your vimrc: >
|
||||
:let cobol_legacy_code = 1
|
||||
To disable it again, use this: >
|
||||
:unlet cobol_legacy_code
|
||||
@@ -1090,7 +1090,7 @@ Cynlib files are C++ files that use the Cynlib class library to enable
|
||||
hardware modelling and simulation using C++. Typically Cynlib files have a .cc
|
||||
or a .cpp extension, which makes it very difficult to distinguish them from a
|
||||
normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this
|
||||
line to your .vimrc file: >
|
||||
line to your vimrc file: >
|
||||
|
||||
:let cynlib_cyntax_for_cc=1
|
||||
|
||||
@@ -1202,7 +1202,7 @@ or >
|
||||
|
||||
It can also be done automatically for C, C++, C#, IDL and PHP files by setting
|
||||
the global or buffer-local variable load_doxygen_syntax. This is done by
|
||||
adding the following to your .vimrc. >
|
||||
adding the following to your vimrc. >
|
||||
:let g:load_doxygen_syntax=1
|
||||
|
||||
There are a couple of variables that have an effect on syntax highlighting, and
|
||||
@@ -1355,7 +1355,7 @@ start of a new paragraph, so the ftplugin sets 'tw'=0 (unlimited line length),
|
||||
and so on. It also includes some keymaps that are disabled by default.
|
||||
|
||||
If you want to enable the keymaps that make "j" and "k" and the cursor keys
|
||||
move up and down by display lines, add this to your .vimrc: >
|
||||
move up and down by display lines, add this to your vimrc: >
|
||||
:let flexwiki_maps = 1
|
||||
|
||||
|
||||
@@ -1407,10 +1407,10 @@ syntax highlighting will not be correct if the form is incorrectly set.
|
||||
When you create a new fortran file, the syntax script assumes fixed source
|
||||
form. If you always use free source form, then >
|
||||
:let fortran_free_source=1
|
||||
in your .vimrc prior to the :syntax on command. If you always use fixed source
|
||||
in your vimrc prior to the :syntax on command. If you always use fixed source
|
||||
form, then >
|
||||
:let fortran_fixed_source=1
|
||||
in your .vimrc prior to the :syntax on command.
|
||||
in your vimrc prior to the :syntax on command.
|
||||
|
||||
If the form of the source code depends upon the file extension, then it is
|
||||
most convenient to set fortran_free_source in a ftplugin file. For more
|
||||
@@ -1426,7 +1426,7 @@ rest in fixed source form, add the following code to your ftplugin file >
|
||||
unlet! fortran_free_source
|
||||
endif
|
||||
Note that this will work only if the "filetype plugin indent on" command
|
||||
precedes the "syntax on" command in your .vimrc file.
|
||||
precedes the "syntax on" command in your vimrc file.
|
||||
|
||||
When you edit an existing fortran file, the syntax script will assume free
|
||||
source form if the fortran_free_source variable has been set, and assumes
|
||||
@@ -1446,7 +1446,7 @@ Tabs are not recognized by the Fortran standards. Tabs are not a good idea in
|
||||
fixed format fortran source code which requires fixed column boundaries.
|
||||
Therefore, tabs are marked as errors. Nevertheless, some programmers like
|
||||
using tabs. If your fortran files contain tabs, then you should set the
|
||||
variable fortran_have_tabs in your .vimrc with a command such as >
|
||||
variable fortran_have_tabs in your vimrc with a command such as >
|
||||
:let fortran_have_tabs=1
|
||||
placed prior to the :syntax on command. Unfortunately, the use of tabs will
|
||||
mean that the syntax file will not be able to detect incorrect margins.
|
||||
@@ -1492,7 +1492,7 @@ other legacy features excluded from F will be highlighted as todo items and
|
||||
that free source form will be assumed.
|
||||
|
||||
The dialect can be selected in various ways. If all your fortran files use
|
||||
the same dialect, set the global variable fortran_dialect in your .vimrc prior
|
||||
the same dialect, set the global variable fortran_dialect in your vimrc prior
|
||||
to your syntax on statement. The case-sensitive, permissible values of
|
||||
fortran_dialect are "f08" or "F". Invalid values of fortran_dialect are
|
||||
ignored.
|
||||
@@ -1509,7 +1509,7 @@ contain the code >
|
||||
unlet! b:fortran_dialect
|
||||
endif
|
||||
Note that this will work only if the "filetype plugin indent on" command
|
||||
precedes the "syntax on" command in your .vimrc file.
|
||||
precedes the "syntax on" command in your vimrc file.
|
||||
|
||||
Finer control is necessary if the file extension does not uniquely identify
|
||||
the dialect. You can override the default dialect, on a file-by-file basis,
|
||||
@@ -1561,7 +1561,7 @@ in /usr/X11/lib/X11/, you should add the line >
|
||||
|
||||
:let rgb_file = "/usr/X11/lib/X11/rgb.txt"
|
||||
|
||||
to your .vimrc file.
|
||||
to your vimrc file.
|
||||
|
||||
|
||||
GSP *gsp.vim* *ft-gsp-syntax*
|
||||
@@ -1603,7 +1603,7 @@ Haskell code, the latter in both Bird style and TeX style. The Haskell
|
||||
syntax highlighting will also highlight C preprocessor directives.
|
||||
|
||||
If you want to highlight delimiter characters (useful if you have a
|
||||
light-coloured background), add to your .vimrc: >
|
||||
light-coloured background), add to your vimrc: >
|
||||
:let hs_highlight_delimiters = 1
|
||||
To treat True and False as keywords as opposed to ordinary identifiers,
|
||||
add: >
|
||||
@@ -1613,21 +1613,21 @@ To also treat the names of primitive types as keywords: >
|
||||
And to treat the names of even more relatively common types as keywords: >
|
||||
:let hs_highlight_more_types = 1
|
||||
If you want to highlight the names of debugging functions, put in
|
||||
your .vimrc: >
|
||||
your vimrc: >
|
||||
:let hs_highlight_debug = 1
|
||||
|
||||
The Haskell syntax highlighting also highlights C preprocessor
|
||||
directives, and flags lines that start with # but are not valid
|
||||
directives as erroneous. This interferes with Haskell's syntax for
|
||||
operators, as they may start with #. If you want to highlight those
|
||||
as operators as opposed to errors, put in your .vimrc: >
|
||||
as operators as opposed to errors, put in your vimrc: >
|
||||
:let hs_allow_hash_operator = 1
|
||||
|
||||
The syntax highlighting for literate Haskell code will try to
|
||||
automatically guess whether your literate Haskell code contains
|
||||
TeX markup or not, and correspondingly highlight TeX constructs
|
||||
or nothing at all. You can override this globally by putting
|
||||
in your .vimrc >
|
||||
in your vimrc >
|
||||
:let lhs_markup = none
|
||||
for no highlighting at all, or >
|
||||
:let lhs_markup = tex
|
||||
@@ -1720,7 +1720,7 @@ The coloring scheme for HTML/OS works as follows:
|
||||
Functions and variable names are the same color by default, because VIM
|
||||
doesn't specify different colors for Functions and Identifiers. To change
|
||||
this (which is recommended if you want function names to be recognizable in a
|
||||
different color) you need to add the following line to either your ~/.vimrc: >
|
||||
different color) you need to add the following line to your vimrc: >
|
||||
:hi Function term=underline cterm=bold ctermfg=LightGray
|
||||
|
||||
Of course, the ctermfg can be a different color if you choose.
|
||||
@@ -1739,7 +1739,7 @@ IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax*
|
||||
Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for
|
||||
how to recognize this filetype.
|
||||
|
||||
To have *.inc files be recognized as IA64, add this to your .vimrc file: >
|
||||
To have *.inc files be recognized as IA64, add this to your vimrc file: >
|
||||
:let g:filetype_inc = "ia64"
|
||||
|
||||
|
||||
@@ -1901,7 +1901,7 @@ difficulties (such as may happen with large lex files).
|
||||
|
||||
LIFELINES *lifelines.vim* *ft-lifelines-syntax*
|
||||
|
||||
To highlight deprecated functions as errors, add in your .vimrc: >
|
||||
To highlight deprecated functions as errors, add in your vimrc: >
|
||||
|
||||
:let g:lifelines_deprecated = 1
|
||||
<
|
||||
@@ -1944,7 +1944,7 @@ LPC *lpc.vim* *ft-lpc-syntax*
|
||||
LPC stands for a simple, memory-efficient language: Lars Pensj| C. The
|
||||
file name of LPC is usually *.c. Recognizing these files as LPC would bother
|
||||
users writing only C programs. If you want to use LPC syntax in Vim, you
|
||||
should set a variable in your .vimrc file: >
|
||||
should set a variable in your vimrc file: >
|
||||
|
||||
:let lpc_syntax_for_c = 1
|
||||
|
||||
@@ -2023,13 +2023,13 @@ MAPLE *maple.vim* *ft-maple-syntax*
|
||||
Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language
|
||||
supports many packages of functions which are selectively loaded by the user.
|
||||
The standard set of packages' functions as supplied in Maple V release 4 may be
|
||||
highlighted at the user's discretion. Users may place in their .vimrc file: >
|
||||
highlighted at the user's discretion. Users may place in their vimrc file: >
|
||||
|
||||
:let mvpkg_all= 1
|
||||
|
||||
to get all package functions highlighted, or users may select any subset by
|
||||
choosing a variable/package from the table below and setting that variable to
|
||||
1, also in their .vimrc file (prior to sourcing
|
||||
1, also in their vimrc file (prior to sourcing
|
||||
$VIMRUNTIME/syntax/syntax.vim).
|
||||
|
||||
Table of Maple V Package Function Selectors >
|
||||
@@ -2046,7 +2046,7 @@ $VIMRUNTIME/syntax/syntax.vim).
|
||||
MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax*
|
||||
|
||||
Empty *.m files will automatically be presumed to be Matlab files unless you
|
||||
have the following in your .vimrc: >
|
||||
have the following in your vimrc: >
|
||||
|
||||
let filetype_m = "mma"
|
||||
|
||||
@@ -2172,7 +2172,7 @@ highlighting definition for the syntax groups "nroffDefinition" and
|
||||
\ gui=reverse,bold
|
||||
|
||||
If you want to navigate preprocessor entries in your source file as easily as
|
||||
with section markers, you can activate the following option in your .vimrc
|
||||
with section markers, you can activate the following option in your vimrc
|
||||
file: >
|
||||
|
||||
let b:preprocs_as_sections = 1
|
||||
@@ -2625,7 +2625,7 @@ number is that redrawing can become slow.
|
||||
|
||||
Vim tries to guess what type a ".r" file is. If it can't be detected (from
|
||||
comment lines), the default is "r". To make the default rexx add this line to
|
||||
your .vimrc: *g:filetype_r*
|
||||
your vimrc: *g:filetype_r*
|
||||
>
|
||||
:let g:filetype_r = "r"
|
||||
|
||||
@@ -2808,7 +2808,7 @@ be shell files but the type is not apparent. Furthermore, on many systems
|
||||
sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix).
|
||||
|
||||
One may specify a global default by instantiating one of the following three
|
||||
variables in your <.vimrc>:
|
||||
variables in your vimrc:
|
||||
|
||||
ksh: >
|
||||
let g:is_kornshell = 1
|
||||
@@ -2823,7 +2823,7 @@ If there's no "#! ..." line, and the user hasn't availed himself/herself of a
|
||||
default sh.vim syntax setting as just shown, then syntax/sh.vim will assume
|
||||
the Bourne shell syntax. No need to quote RFCs or market penetration
|
||||
statistics in error reports, please -- just select the default version of the
|
||||
sh your system uses in your <.vimrc>.
|
||||
sh your system uses in your vimrc.
|
||||
|
||||
The syntax/sh.vim file provides several levels of syntax-based folding: >
|
||||
|
||||
@@ -2869,7 +2869,7 @@ this behavior with: >
|
||||
|
||||
You may wish to embed languages into sh. I'll give an example courtesy of
|
||||
Lorance Stinson on how to do this with awk as an example. Put the following
|
||||
file into $HOME/.vim/after/syntax/sh/awkembed.vim: >
|
||||
file into $HOME/.config/nvim/after/syntax/sh/awkembed.vim: >
|
||||
|
||||
" AWK Embedding: {{{1
|
||||
" ==============
|
||||
@@ -2945,7 +2945,7 @@ for how the filetype is detected.
|
||||
|
||||
Tcsh does not allow \" in strings unless the "backslash_quote" shell variable
|
||||
is set. If you want VIM to assume that no backslash quote constructs exist add
|
||||
this line to your .vimrc: >
|
||||
this line to your vimrc: >
|
||||
|
||||
:let tcsh_backslash_quote = 0
|
||||
|
||||
@@ -2986,7 +2986,7 @@ TEX *tex.vim* *ft-tex-syntax* *latex-syntax*
|
||||
As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters,
|
||||
sections, subsections, etc are supported. Put >
|
||||
let g:tex_fold_enabled=1
|
||||
in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a
|
||||
in your vimrc, and :set fdm=syntax. I suggest doing the latter via a
|
||||
modeline at the end of your LaTeX file: >
|
||||
% vim: fdm=syntax
|
||||
If your system becomes too slow, then you might wish to look into >
|
||||
@@ -2997,7 +2997,7 @@ If your system becomes too slow, then you might wish to look into >
|
||||
|
||||
If you don't want spell checking anywhere in your LaTeX document, put >
|
||||
let g:tex_nospell=1
|
||||
into your .vimrc. If you merely wish to suppress spell checking inside
|
||||
into your vimrc. If you merely wish to suppress spell checking inside
|
||||
comments only, see |g:tex_comment_nospell|.
|
||||
|
||||
*tex-nospell* *g:tex_comment_nospell*
|
||||
@@ -3005,7 +3005,7 @@ comments only, see |g:tex_comment_nospell|.
|
||||
|
||||
Some folks like to include things like source code in comments and so would
|
||||
prefer that spell checking be disabled in comments in LaTeX files. To do
|
||||
this, put the following in your <.vimrc>: >
|
||||
this, put the following in your vimrc: >
|
||||
let g:tex_comment_nospell= 1
|
||||
If you want to suppress spell checking everywhere inside your LaTeX document,
|
||||
see |g:tex_nospell|.
|
||||
@@ -3015,7 +3015,7 @@ see |g:tex_nospell|.
|
||||
|
||||
Often verbatim regions are used for things like source code; seldom does
|
||||
one want source code spell-checked. However, for those of you who do
|
||||
want your verbatim zones spell-checked, put the following in your <.vimrc>: >
|
||||
want your verbatim zones spell-checked, put the following in your vimrc: >
|
||||
let g:tex_verbspell= 1
|
||||
<
|
||||
*tex-runon* *tex-stopzone*
|
||||
@@ -3050,7 +3050,7 @@ Finally, if syntax highlighting is still too slow, you may set >
|
||||
|
||||
:let g:tex_fast= ""
|
||||
|
||||
in your .vimrc. Used this way, the g:tex_fast variable causes the syntax
|
||||
in your vimrc. Used this way, the g:tex_fast variable causes the syntax
|
||||
highlighting script to avoid defining any regions and associated
|
||||
synchronization. The result will be much faster syntax highlighting; the
|
||||
price: you will no longer have as much highlighting or any syntax-based
|
||||
@@ -3092,7 +3092,7 @@ http://vim.sf.net/.
|
||||
The <tex.vim> supports lexical error checking of various sorts. Thus,
|
||||
although the error checking is ofttimes very useful, it can indicate
|
||||
errors where none actually are. If this proves to be a problem for you,
|
||||
you may put in your <.vimrc> the following statement: >
|
||||
you may put in your vimrc the following statement: >
|
||||
let g:tex_no_error=1
|
||||
and all error checking by <syntax/tex.vim> will be suppressed.
|
||||
|
||||
@@ -3122,7 +3122,7 @@ such use of @ as an error. To solve this: >
|
||||
:let b:tex_stylish = 1
|
||||
:set ft=tex
|
||||
|
||||
Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim>
|
||||
Putting "let g:tex_stylish=1" into your vimrc will make <syntax/tex.vim>
|
||||
always accept such use of @.
|
||||
|
||||
*tex-cchar* *tex-cole* *tex-conceal*
|
||||
@@ -3142,7 +3142,7 @@ with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|.
|
||||
Tex: Selective Conceal Mode~
|
||||
|
||||
You may selectively use conceal mode by setting g:tex_conceal in your
|
||||
<.vimrc>. By default, g:tex_conceal is set to "admgs" to enable concealment
|
||||
vimrc. By default, g:tex_conceal is set to "admgs" to enable concealment
|
||||
for the following sets of characters: >
|
||||
|
||||
a = accents/ligatures
|
||||
@@ -3193,8 +3193,8 @@ syntax highlighting script handles this with the following logic:
|
||||
For example, I use Luxi Mono Bold; it doesn't support subscript
|
||||
characters for "hklmnpst", so I put >
|
||||
let g:tex_subscripts= "[0-9aeijoruvx,+-/().]"
|
||||
< in ~/.vim/ftplugin/tex/tex.vim in order to avoid having inscrutable
|
||||
utf-8 glyphs appear.
|
||||
< in ~/.config/nvim/ftplugin/tex/tex.vim in order to avoid having
|
||||
inscrutable utf-8 glyphs appear.
|
||||
|
||||
|
||||
TF *tf.vim* *ft-tf-syntax*
|
||||
@@ -3252,7 +3252,7 @@ The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both
|
||||
variants are supported. Automatic detection is used, but is far from perfect.
|
||||
You may need to specify the version manually. Set the variable
|
||||
xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in
|
||||
your .vimrc. Example: >
|
||||
your vimrc. Example: >
|
||||
:let xf86conf_xfree86_version=3
|
||||
When using a mix of versions, set the b:xf86conf_xfree86_version variable.
|
||||
|
||||
@@ -4646,7 +4646,7 @@ ctermbg={color-nr} *highlight-ctermbg*
|
||||
When you have set "ctermfg" or "ctermbg" for the Normal group, Vim
|
||||
needs to reset the color when exiting. This is done with the "op"
|
||||
termcap entry |t_op|. If this doesn't work correctly, try setting the
|
||||
't_op' option in your .vimrc.
|
||||
't_op' option in your vimrc.
|
||||
*E419* *E420*
|
||||
When Vim knows the normal foreground and background colors, "fg" and
|
||||
"bg" can be used as color names. This only works after setting the
|
||||
@@ -4979,7 +4979,8 @@ script file to set these colors. Put this file in a directory in
|
||||
the default colors. This way these colors will be used after the ":syntax
|
||||
reset" command.
|
||||
|
||||
For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: >
|
||||
For Unix you can use the file ~/.config/nvim/after/syntax/syncolor.vim.
|
||||
Example: >
|
||||
|
||||
if &background == "light"
|
||||
highlight comment ctermfg=darkgreen guifg=darkgreen
|
||||
@@ -5036,7 +5037,7 @@ types.vim: *.[ch]
|
||||
awk 'BEGIN{printf("syntax keyword Type\t")}\
|
||||
{printf("%s ", $$1)}END{print ""}' > $@
|
||||
|
||||
And put these lines in your .vimrc: >
|
||||
And put these lines in your vimrc: >
|
||||
|
||||
" load the types.vim highlighting file, if it exists
|
||||
autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim'
|
||||
@@ -5078,7 +5079,7 @@ When splitting the window, the new window will use the original syntax.
|
||||
17. Color xterms *xterm-color* *color-xterm*
|
||||
|
||||
Most color xterms have only eight colors. If you don't get colors with the
|
||||
default setup, it should work with these lines in your .vimrc: >
|
||||
default setup, it should work with these lines in your vimrc: >
|
||||
:if &term =~ "xterm"
|
||||
: if has("terminfo")
|
||||
: set t_Co=8
|
||||
@@ -5125,7 +5126,7 @@ supports. >
|
||||
If you only get 8 colors, check the xterm compilation settings.
|
||||
(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding).
|
||||
|
||||
This xterm should work with these lines in your .vimrc (for 16 colors): >
|
||||
This xterm should work with these lines in your vimrc (for 16 colors): >
|
||||
:if has("terminfo")
|
||||
: set t_Co=16
|
||||
: set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm
|
||||
|
@@ -37,7 +37,7 @@ used. Also see |xterm-screens|.
|
||||
Settings depending on terminal *term-dependent-settings*
|
||||
|
||||
If you want to set options or mappings, depending on the terminal name, you
|
||||
can do this best in your .vimrc. Example: >
|
||||
can do this best in your vimrc. Example: >
|
||||
|
||||
if &term == "xterm"
|
||||
... xterm maps and settings ...
|
||||
|
@@ -98,7 +98,7 @@ What you need:
|
||||
- An identifier database file called "ID" in the current directory. You can
|
||||
create it with the shell command "mkid file1 file2 ..".
|
||||
|
||||
Put this in your .vimrc: >
|
||||
Put this in your |init.vim|: >
|
||||
map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR>
|
||||
map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR>
|
||||
|
||||
@@ -404,7 +404,7 @@ See section |23.4| of the user manual.
|
||||
|
||||
If one has a particular extension that one uses for binary files (such as exe,
|
||||
bin, etc), you may find it helpful to automate the process with the following
|
||||
bit of autocmds for your <.vimrc>. Change that "*.bin" to whatever
|
||||
bit of autocmds for your |init.vim|. Change that "*.bin" to whatever
|
||||
comma-separated list of extension(s) you find yourself wanting to edit: >
|
||||
|
||||
" vim -b : edit binary using xxd-format!
|
||||
|
@@ -60,10 +60,7 @@ make them visible with: >
|
||||
It's not required for this tutorial, but we provide an example vimrc you may
|
||||
use:
|
||||
|
||||
Unix: >
|
||||
:!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc
|
||||
MS-DOS, MS-Windows: >
|
||||
:!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc
|
||||
:!cp -i $VIMRUNTIME/vimrc_example.vim ~/.config/nvim/init.vim
|
||||
|
||||
If the file already exists you probably want to keep it.
|
||||
|
||||
|
@@ -470,7 +470,7 @@ If you like one of the options mentioned before, and set it each time you use
|
||||
Vim, you can put the command in your Vim startup file. Edit the file, for
|
||||
example with: >
|
||||
|
||||
:edit ~/.vimrc
|
||||
:edit ~/.config/nvim/init.vim
|
||||
|
||||
Then add a line with the command to set the option, just like you typed it in
|
||||
Vim. Example: >
|
||||
|
@@ -22,30 +22,24 @@ Vim's capabilities. Or define your own macros.
|
||||
Table of contents: |usr_toc.txt|
|
||||
|
||||
==============================================================================
|
||||
*05.1* The vimrc file *vimrc-intro*
|
||||
*05.1* The vimrc file *vimrc-intro*
|
||||
|
||||
You probably got tired of typing commands that you use very often. To start
|
||||
Vim with all your favorite option settings and mappings, you write them in
|
||||
what is called the vimrc file. Vim executes the commands in this file when it
|
||||
starts up.
|
||||
what is called the init.vim file. Vim executes the commands in this file when
|
||||
it starts up.
|
||||
|
||||
If you already have a vimrc file (e.g., when your sysadmin has one setup for
|
||||
you), you can edit it this way: >
|
||||
If you already have a init.vim file (e.g., when your sysadmin has one setup
|
||||
for you), you can edit it this way: >
|
||||
|
||||
:edit $MYVIMRC
|
||||
|
||||
If you don't have a vimrc file yet, see |vimrc| to find out where you can
|
||||
create a vimrc file. Also, the ":version" command mentions the name of the
|
||||
"user vimrc file" Vim looks for.
|
||||
If you don't have a vimrc file yet, see |init.vim| to find out where you can
|
||||
create a vimrc file.
|
||||
|
||||
For Unix and Macintosh this file is always used and is recommended:
|
||||
|
||||
~/.vimrc ~
|
||||
|
||||
For MS-DOS and MS-Windows you can use one of these:
|
||||
|
||||
$HOME/_vimrc ~
|
||||
$VIM/_vimrc ~
|
||||
~/.config/nvim/init.vim ~
|
||||
|
||||
The vimrc file can contain all the commands that you type after a colon. The
|
||||
most simple ones are for setting options. For example, if you want Vim to
|
||||
@@ -300,23 +294,20 @@ First read the text in the plugin itself to check for any special conditions.
|
||||
Then copy the file to your plugin directory:
|
||||
|
||||
system plugin directory ~
|
||||
Unix ~/.vim/plugin/
|
||||
Macintosh $VIM:vimfiles:plugin
|
||||
Mac OS X ~/.vim/plugin/
|
||||
Unix ~/.local/share/nvim/site/plugin
|
||||
|
||||
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
|
||||
mkdir -p ~/.local/share/nvim/site/plugin
|
||||
cp /usr/local/share/vim/vim60/macros/justify.vim ~/.local/share/nvim/site/plugin
|
||||
|
||||
That's all! Now you can use the commands defined in this plugin to justify
|
||||
text.
|
||||
|
||||
Instead of putting plugins directly into the plugin/ directory, you may
|
||||
better organize them by putting them into subdirectories under plugin/.
|
||||
As an example, consider using "~/.vim/plugin/perl/*.vim" for all your Perl
|
||||
plugins.
|
||||
As an example, consider using "~/.local/share/nvim/site/plugin/perl/*.vim" for
|
||||
all your Perl plugins.
|
||||
|
||||
|
||||
FILETYPE PLUGINS *add-filetype-plugin* *ftplugins*
|
||||
@@ -350,25 +341,19 @@ plugins, but the last part is "ftplugin". Suppose you have found a plugin for
|
||||
the "stuff" filetype, and you are on Unix. Then you can move this file to the
|
||||
ftplugin directory: >
|
||||
|
||||
mv thefile ~/.vim/ftplugin/stuff.vim
|
||||
mkdir -p ~/.local/share/nvim/site/ftplugin
|
||||
mv thefile ~/.local/share/nvim/site/ftplugin/stuff.vim
|
||||
|
||||
If that file already exists you already have a plugin for "stuff". You might
|
||||
want to check if the existing plugin doesn't conflict with the one you are
|
||||
adding. If it's OK, you can give the new one another name: >
|
||||
|
||||
mv thefile ~/.vim/ftplugin/stuff_too.vim
|
||||
mv thefile ~/.local/share/nvim/site/ftplugin/stuff_too.vim
|
||||
|
||||
The underscore is used to separate the name of the filetype from the rest,
|
||||
which can be anything. If you use "otherstuff.vim" it wouldn't work, it would
|
||||
be loaded for the "otherstuff" filetype.
|
||||
|
||||
On MS-DOS you cannot use long filenames. You would run into trouble if you
|
||||
add a second plugin and the filetype has more than six characters. You can
|
||||
use an extra directory to get around this: >
|
||||
|
||||
mkdir $VIM/vimfiles/ftplugin/fortran
|
||||
copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim
|
||||
|
||||
The generic names for the filetype plugins are: >
|
||||
|
||||
ftplugin/<filetype>.vim
|
||||
@@ -378,9 +363,9 @@ The generic names for the filetype plugins are: >
|
||||
Here "<name>" can be any name that you prefer.
|
||||
Examples for the "stuff" filetype on Unix: >
|
||||
|
||||
~/.vim/ftplugin/stuff.vim
|
||||
~/.vim/ftplugin/stuff_def.vim
|
||||
~/.vim/ftplugin/stuff/header.vim
|
||||
~/.local/share/nvim/site/ftplugin/stuff.vim
|
||||
~/.local/share/nvim/site/ftplugin/stuff_def.vim
|
||||
~/.local/share/nvim/site/ftplugin/stuff/header.vim
|
||||
|
||||
The <filetype> part is the name of the filetype the plugin is to be used for.
|
||||
Only files of this filetype will use the settings from the plugin. The <name>
|
||||
@@ -410,16 +395,16 @@ non-standard place (it usually resides in a sub-folder called `doc/`).
|
||||
|
||||
First, create a "doc" directory in one of the directories in 'runtimepath': >
|
||||
|
||||
:!mkdir ~/.vim/doc
|
||||
:!mkdir -p ~/.local/share/nvim/site/doc
|
||||
|
||||
Now, copy the help file to the "doc" directory: >
|
||||
|
||||
:!cp my-plugin/my-plugin-doc.txt ~/.vim/doc
|
||||
:!cp my-plugin/my-plugin-doc.txt ~/.local/share/nvim/site/doc
|
||||
|
||||
Here 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: >
|
||||
|
||||
:helptags ~/.vim/doc
|
||||
:helptags ~/.local/share/nvim/site/doc
|
||||
|
||||
You can see an entry for the local help file when you do: >
|
||||
|
||||
|
@@ -35,17 +35,17 @@ easy to overview the file. After a while you will find that black&white text
|
||||
slows you down!
|
||||
|
||||
If you always want to use syntax highlighting, put the ":syntax enable"
|
||||
command in your |vimrc| file.
|
||||
command in your |init.vim| file.
|
||||
|
||||
If you want syntax highlighting only when the terminal supports colors, you
|
||||
can put this in your |vimrc| file: >
|
||||
can put this in your |init.vim| file: >
|
||||
|
||||
if &t_Co > 1
|
||||
syntax enable
|
||||
endif
|
||||
|
||||
If you want syntax highlighting only in the GUI version, put the ":syntax
|
||||
enable" command in your |gvimrc| file.
|
||||
enable" command in your |ginit.vim| file.
|
||||
|
||||
==============================================================================
|
||||
*06.2* No or wrong colors?
|
||||
@@ -144,14 +144,14 @@ the GUI use the Edit/Color Scheme menu. You can also type the command: >
|
||||
want to try out. Look in the directory $VIMRUNTIME/colors.
|
||||
|
||||
When you found the color scheme that you like, add the ":colorscheme" command
|
||||
to your |vimrc| file.
|
||||
to your |init.vim| file.
|
||||
|
||||
You could also write your own color scheme. This is how you do it:
|
||||
|
||||
1. Select a color scheme that comes close. Copy this file to your own Vim
|
||||
directory. For Unix, this should work: >
|
||||
|
||||
!mkdir ~/.vim/colors
|
||||
!mkdir -p ~/.config/nvim/colors
|
||||
!cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim
|
||||
<
|
||||
This is done from Vim, because it knows the value of $VIMRUNTIME.
|
||||
|
@@ -169,7 +169,7 @@ exiting Vim, there is a slightly more complicated way. You can see a list of
|
||||
files by typing the command: >
|
||||
|
||||
:oldfiles
|
||||
< 1: ~/.vimrc ~
|
||||
< 1: ~/.config/nvim/init.vim ~
|
||||
2: ~/text/resume.txt ~
|
||||
3: /tmp/draft ~
|
||||
|
||||
@@ -189,7 +189,7 @@ That #<123 thing is a bit complicated when you just want to edit a file.
|
||||
Fortunately there is a simpler way: >
|
||||
|
||||
:browse oldfiles
|
||||
< 1: ~/.vimrc ~
|
||||
< 1: ~/.config/nvim/init.vim ~
|
||||
2: ~/text/resume.txt ~
|
||||
3: /tmp/draft ~
|
||||
-- More --
|
||||
@@ -276,13 +276,13 @@ example, use: >
|
||||
SESSION HERE, SESSION THERE
|
||||
|
||||
The obvious way to use sessions is when working on different projects.
|
||||
Suppose you store your session files in the directory "~/.vim". You are
|
||||
currently working on the "secret" project and have to switch to the "boring"
|
||||
project: >
|
||||
Suppose you store your session files in the directory "~/.config/nvim". You
|
||||
are currently working on the "secret" project and have to switch to the
|
||||
"boring" project: >
|
||||
|
||||
:wall
|
||||
:mksession! ~/.vim/secret.vim
|
||||
:source ~/.vim/boring.vim
|
||||
:mksession! ~/.config/nvim/secret.vim
|
||||
:source ~/.config/nvim/boring.vim
|
||||
|
||||
This first uses ":wall" to write all modified files. Then the current session
|
||||
is saved, using ":mksession!". This overwrites the previous session. The
|
||||
@@ -292,7 +292,7 @@ point. And finally you load the new "boring" session.
|
||||
If you open help windows, split and close various windows, and generally mess
|
||||
up the window layout, you can go back to the last saved session: >
|
||||
|
||||
:source ~/.vim/boring.vim
|
||||
:source ~/.config/nvim/boring.vim
|
||||
|
||||
Thus you have complete control over whether you want to continue next time
|
||||
where you are now, by saving the current setup in a session, or keep the
|
||||
@@ -330,11 +330,11 @@ More about this in the next chapter.
|
||||
|
||||
You can resize the windows a bit to your liking. Then save the session with:
|
||||
>
|
||||
:mksession ~/.vim/mine.vim
|
||||
:mksession ~/.config/nvim/mine.vim
|
||||
|
||||
Now you can start Vim with this layout: >
|
||||
|
||||
vim -S ~/.vim/mine.vim
|
||||
vim -S ~/.config/nvim/mine.vim
|
||||
|
||||
Hint: To open a file you see listed in the explorer window in the empty
|
||||
window, move the cursor to the filename and press "O". Double clicking with
|
||||
@@ -346,8 +346,8 @@ UNIX AND MS-WINDOWS
|
||||
Some people have to do work on MS-Windows systems one day and on Unix another
|
||||
day. If you are one of them, consider adding "slash" and "unix" to
|
||||
'sessionoptions'. The session files will then be written in a format that can
|
||||
be used on both systems. This is the command to put in your vimrc file: >
|
||||
|
||||
be used on both systems. This is the command to put in your |init.vim| file:
|
||||
>
|
||||
:set sessionoptions+=unix,slash
|
||||
|
||||
Vim will use the Unix format then, because the MS-Windows Vim can read and
|
||||
@@ -368,13 +368,13 @@ another session.
|
||||
You might prefer to keep the info with the session. You will have to do
|
||||
this yourself then. Example: >
|
||||
|
||||
:mksession! ~/.vim/secret.vim
|
||||
:wshada! ~/.vim/secret.shada
|
||||
:mksession! ~/.config/nvim/secret.vim
|
||||
:wshada! ~/.local/share/nvim/shada/secret.shada
|
||||
|
||||
And to restore this again: >
|
||||
|
||||
:source ~/.vim/secret.vim
|
||||
:rshada! ~/.vim/secret.shada
|
||||
:source ~/.config/nvim/secret.vim
|
||||
:rshada! ~/.local/share/nvim/shada/secret.shada
|
||||
|
||||
==============================================================================
|
||||
*21.5* Views
|
||||
@@ -423,11 +423,11 @@ to quickly switch to editing another file, with all its options set as you
|
||||
saved them.
|
||||
For example, to save the view of the current file: >
|
||||
|
||||
:mkview ~/.vim/main.vim
|
||||
:mkview ~/.config/nvim/main.vim
|
||||
|
||||
You can restore it with: >
|
||||
|
||||
:source ~/.vim/main.vim
|
||||
:source ~/.config/nvim/main.vim
|
||||
|
||||
==============================================================================
|
||||
*21.6* Modelines
|
||||
|
@@ -324,11 +324,11 @@ the output of this command: >
|
||||
Now use the first item, the name before the first comma. Thus if the output
|
||||
looks like this:
|
||||
|
||||
runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~
|
||||
runtimepath=~/.config/nvim,/usr/local/share/vim/vim60/runtime,~/.config/nvim/after ~
|
||||
|
||||
You use "~/.vim" for {directory}. Then the resulting file name is:
|
||||
You use "~/.config/nvim" for {directory}. Then the resulting file name is:
|
||||
|
||||
~/.vim/indent/help.vim ~
|
||||
~/.config/nvim/indent/help.vim ~
|
||||
|
||||
Instead of switching the indenting off, you could write your own indent file.
|
||||
How to do that is explained here: |indent-expression|.
|
||||
|
@@ -248,7 +248,7 @@ you can set the 'lines' option to set a different window size: >
|
||||
You don't want to do this in a terminal, since its size is fixed (except for
|
||||
an xterm that supports resizing).
|
||||
The gvimrc file is searched for in the same locations as the vimrc file.
|
||||
Normally its name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows.
|
||||
Normally its name is "~/.config/nvim/ginit.vim".
|
||||
The $MYGVIMRC environment variable is set to it, thus you can use this command
|
||||
to edit the file, if you have one: >
|
||||
|
||||
|
@@ -478,7 +478,7 @@ for you. This triggers the Filetype event. Use this to do something when a
|
||||
certain type of file is edited. For example, to load a list of abbreviations
|
||||
for text files: >
|
||||
|
||||
:autocmd Filetype text source ~/.vim/abbrevs.vim
|
||||
:autocmd Filetype text source ~/.config/nvim/abbrevs.vim
|
||||
|
||||
When starting to edit a new file, you could make Vim insert a skeleton: >
|
||||
|
||||
|
@@ -2051,8 +2051,8 @@ Example: >
|
||||
|
||||
Write this single-line file as "ftdetect/foofoo.vim" in the first directory
|
||||
that appears in 'runtimepath'. For Unix that would be
|
||||
"~/.vim/ftdetect/foofoo.vim". The convention is to use the name of the
|
||||
filetype for the script name.
|
||||
"~/.config/nvim/ftdetect/foofoo.vim". The convention is to use the name of
|
||||
the filetype for the script name.
|
||||
|
||||
You can make more complicated checks if you like, for example to inspect the
|
||||
contents of the file to recognize the language. Also see |new-filetype|.
|
||||
@@ -2122,8 +2122,8 @@ you can write the different setting in a script: >
|
||||
|
||||
Now write this in the "after" directory, so that it gets sourced after the
|
||||
distributed "vim.vim" ftplugin |after-directory|. For Unix this would be
|
||||
"~/.vim/after/ftplugin/vim.vim". Note that the default plugin will have set
|
||||
"b:did_ftplugin", but it is ignored here.
|
||||
"~/.config/nvim/after/ftplugin/vim.vim". Note that the default plugin will
|
||||
have set "b:did_ftplugin", but it is ignored here.
|
||||
|
||||
|
||||
OPTIONS
|
||||
@@ -2289,8 +2289,8 @@ a user to overrule or add to the default file. The default files start with: >
|
||||
:let current_compiler = "mine"
|
||||
|
||||
When you write a compiler file and put it in your personal runtime directory
|
||||
(e.g., ~/.vim/compiler for Unix), you set the "current_compiler" variable to
|
||||
make the default file skip the settings.
|
||||
(e.g., ~/.config/nvim/compiler for Unix), you set the "current_compiler"
|
||||
variable to make the default file skip the settings.
|
||||
*:CompilerSet*
|
||||
The second mechanism is to use ":set" for ":compiler!" and ":setlocal" for
|
||||
":compiler". Vim defines the ":CompilerSet" user command for this. However,
|
||||
@@ -2310,7 +2310,7 @@ runtime directory, use the mechanism mentioned above. When
|
||||
When you write a compiler plugin to overrule settings from a default plugin,
|
||||
don't check "current_compiler". This plugin is supposed to be loaded
|
||||
last, thus it should be in a directory at the end of 'runtimepath'. For Unix
|
||||
that could be ~/.vim/after/compiler.
|
||||
that could be ~/.config/nvim/after/compiler.
|
||||
|
||||
==============================================================================
|
||||
*41.14* Writing a plugin that loads quickly *write-plugin-quickload*
|
||||
@@ -2428,7 +2428,7 @@ want to use subdirectories. Example: >
|
||||
|
||||
For Unix the library script used for this could be:
|
||||
|
||||
~/.vim/autoload/netlib/ftp.vim
|
||||
~/.config/nvim/autoload/netlib/ftp.vim
|
||||
|
||||
Where the function is defined like this: >
|
||||
|
||||
|
@@ -311,7 +311,7 @@ with the name "Compile.bmp". For Unix XPM format is used, the file name is
|
||||
"Compile.xpm". The size must be 18 by 18 pixels. On MS-Windows other sizes
|
||||
can be used as well, but it will look ugly.
|
||||
Put the bitmap in the directory "bitmaps" in one of the directories from
|
||||
'runtimepath'. E.g., for Unix "~/.vim/bitmaps/Compile.xpm".
|
||||
'runtimepath'. E.g., for Unix "~/.config/nvim/bitmaps/Compile.xpm".
|
||||
|
||||
You can define tooltips for the items in the toolbar. A tooltip is a short
|
||||
text that explains what a toolbar item will do. For example "Open file". It
|
||||
|
@@ -27,22 +27,21 @@ want to set the 'softtabstop' option to 4 and define a mapping to insert a
|
||||
three-line comment. You do this with only two steps:
|
||||
|
||||
*your-runtime-dir*
|
||||
1. Create your own runtime directory. On Unix this usually is "~/.vim". In
|
||||
this directory create the "ftplugin" directory: >
|
||||
1. Create your own runtime directory. On Unix this usually is
|
||||
"~/.config/nvim". In this directory create the "ftplugin" directory: >
|
||||
|
||||
mkdir ~/.vim
|
||||
mkdir ~/.vim/ftplugin
|
||||
mkdir -p ~/.config/nvim/ftplugin
|
||||
<
|
||||
When you are not on Unix, check the value of the 'runtimepath' option to
|
||||
see where Vim will look for the "ftplugin" directory: >
|
||||
|
||||
set runtimepath
|
||||
set runtimepath?
|
||||
|
||||
< You would normally use the first directory name (before the first comma).
|
||||
You might want to prepend a directory name to the 'runtimepath' option in
|
||||
your |vimrc| file if you don't like the default value.
|
||||
your |init.vim| file if you don't like the default value.
|
||||
|
||||
2. Create the file "~/.vim/ftplugin/c.vim", with the contents: >
|
||||
2. Create the file "~/.config/nvim/ftplugin/c.vim", with the contents: >
|
||||
|
||||
setlocal softtabstop=4
|
||||
noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc>
|
||||
@@ -102,26 +101,26 @@ However, if you now edit a file /usr/share/scripts/README.txt, this is not a
|
||||
ruby file. The danger of a pattern ending in "*" is that it quickly matches
|
||||
too many files. To avoid trouble with this, put the filetype.vim file in
|
||||
another directory, one that is at the end of 'runtimepath'. For Unix for
|
||||
example, you could use "~/.vim/after/filetype.vim".
|
||||
You now put the detection of text files in ~/.vim/filetype.vim: >
|
||||
example, you could use "~/.config/nvim/after/filetype.vim".
|
||||
You now put the detection of text files in ~/.config/nvim/filetype.vim: >
|
||||
|
||||
augroup filetypedetect
|
||||
au BufNewFile,BufRead *.txt setf text
|
||||
augroup END
|
||||
|
||||
That file is found in 'runtimepath' first. Then use this in
|
||||
~/.vim/after/filetype.vim, which is found last: >
|
||||
~/.config/nvim/after/filetype.vim, which is found last: >
|
||||
|
||||
augroup filetypedetect
|
||||
au BufNewFile,BufRead /usr/share/scripts/* setf ruby
|
||||
augroup END
|
||||
|
||||
What will happen now is that Vim searches for "filetype.vim" files in each
|
||||
directory in 'runtimepath'. First ~/.vim/filetype.vim is found. The
|
||||
directory in 'runtimepath'. First ~/.config/nvim/filetype.vim is found. The
|
||||
autocommand to catch *.txt files is defined there. Then Vim finds the
|
||||
filetype.vim file in $VIMRUNTIME, which is halfway 'runtimepath'. Finally
|
||||
~/.vim/after/filetype.vim is found and the autocommand for detecting ruby
|
||||
files in /usr/share/scripts is added.
|
||||
~/.config/nvim/after/filetype.vim is found and the autocommand for detecting
|
||||
ruby files in /usr/share/scripts is added.
|
||||
When you now edit /usr/share/scripts/README.txt, the autocommands are
|
||||
checked in the order in which they were defined. The *.txt pattern matches,
|
||||
thus "setf text" is executed to set the filetype to "text". The pattern for
|
||||
|
@@ -610,11 +610,11 @@ More about synchronizing in the reference manual: |:syn-sync|.
|
||||
*44.11* Installing a syntax file
|
||||
|
||||
When your new syntax file is ready to be used, drop it in a "syntax" directory
|
||||
in 'runtimepath'. For Unix that would be "~/.vim/syntax".
|
||||
in 'runtimepath'. For Unix that would be "~/.config/nvim/syntax".
|
||||
The name of the syntax file must be equal to the file type, with ".vim"
|
||||
added. Thus for the x language, the full path of the file would be:
|
||||
|
||||
~/.vim/syntax/x.vim ~
|
||||
~/.config/nvim/syntax/x.vim ~
|
||||
|
||||
You must also make the file type be recognized. See |43.2|.
|
||||
|
||||
@@ -640,7 +640,7 @@ Write the file with the same name as the original syntax file. In this case
|
||||
"c.vim". Place it in a directory near the end of 'runtimepath'. This makes
|
||||
it loaded after the original syntax file. For Unix this would be:
|
||||
|
||||
~/.vim/after/syntax/c.vim ~
|
||||
~/.config/nvim/after/syntax/c.vim ~
|
||||
|
||||
==============================================================================
|
||||
*44.12* Portable syntax file layout
|
||||
|
@@ -129,7 +129,7 @@ this name, but with all letters made lowercase. Then copy the file to your
|
||||
own runtime directory, as found early in 'runtimepath'. For example, for Unix
|
||||
you would do: >
|
||||
|
||||
:!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim
|
||||
:!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.config/nvim/lang/menu_nl_be.iso_8859-1.vim
|
||||
|
||||
You will find hints for the translation in "$VIMRUNTIME/lang/README.txt".
|
||||
|
||||
@@ -359,7 +359,7 @@ DO-IT-YOURSELF KEYMAPS
|
||||
You can create your own keymap file. It's not very difficult. Start with
|
||||
a keymap file that is similar to the language you want to use. Copy it to the
|
||||
"keymap" directory in your runtime directory. For example, for Unix, you
|
||||
would use the directory "~/.vim/keymap".
|
||||
would use the directory "~/.config/nvim/keymap".
|
||||
The name of the keymap file must look like this:
|
||||
|
||||
keymap/{name}.vim ~
|
||||
|
@@ -33,7 +33,7 @@ CTRL-L Clear and redraw the screen. The redraw may happen
|
||||
*N<Del>*
|
||||
<Del> When entering a number: Remove the last digit.
|
||||
Note: if you like to use <BS> for this, add this
|
||||
mapping to your .vimrc: >
|
||||
mapping to your vimrc: >
|
||||
:map CTRL-V <BS> CTRL-V <Del>
|
||||
<
|
||||
:as[cii] or *ga* *:as* *:ascii*
|
||||
|
@@ -21,10 +21,11 @@ these differences.
|
||||
==============================================================================
|
||||
1. Configuration *nvim-configuration*
|
||||
|
||||
- Use `.nvimrc` instead of `.vimrc` for storing configuration.
|
||||
- Use `.nvim` instead of `.vim` to store configuration files.
|
||||
- Use `.nvim/shada/main.shada` instead of `.viminfo` for persistent session
|
||||
information.
|
||||
- Use `$XDG_CONFIG_HOME/nvim/init.vim` instead of `.vimrc` for storing
|
||||
configuration.
|
||||
- Use `$XDG_CONFIG_HOME/nvim` instead of `.vim` to store configuration files.
|
||||
- Use `$XDG_DATA_HOME/shada/main.shada` instead of `.viminfo` for persistent
|
||||
session information.
|
||||
|
||||
==============================================================================
|
||||
2. Option defaults *nvim-option-defaults*
|
||||
|
211
src/nvim/main.c
211
src/nvim/main.c
@@ -287,8 +287,8 @@ int main(int argc, char **argv)
|
||||
* Set the default values for the options that use Rows and Columns.
|
||||
*/
|
||||
win_init_size();
|
||||
/* Set the 'diff' option now, so that it can be checked for in a .vimrc
|
||||
* file. There is no buffer yet though. */
|
||||
// Set the 'diff' option now, so that it can be checked for in a vimrc
|
||||
// file. There is no buffer yet though.
|
||||
if (params.diff_mode)
|
||||
diff_win_options(firstwin, FALSE);
|
||||
|
||||
@@ -345,7 +345,7 @@ int main(int argc, char **argv)
|
||||
*/
|
||||
load_plugins();
|
||||
|
||||
/* Decide about window layout for diff mode after reading vimrc. */
|
||||
// Decide about window layout for diff mode after reading vimrc.
|
||||
set_window_layout(¶ms);
|
||||
|
||||
/*
|
||||
@@ -358,10 +358,8 @@ int main(int argc, char **argv)
|
||||
mch_exit(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set a few option defaults after reading .vimrc files:
|
||||
* 'title' and 'icon', Unix: 'shellpipe' and 'shellredir'.
|
||||
*/
|
||||
// Set a few option defaults after reading vimrc files:
|
||||
// 'title' and 'icon', Unix: 'shellpipe' and 'shellredir'.
|
||||
set_init_3();
|
||||
TIME_MSG("inits 3");
|
||||
|
||||
@@ -1551,8 +1549,8 @@ static void create_windows(mparm_T *parmp)
|
||||
if (parmp->window_count == 0)
|
||||
parmp->window_count = GARGCOUNT;
|
||||
if (parmp->window_count > 1) {
|
||||
/* Don't change the windows if there was a command in .vimrc that
|
||||
* already split some windows */
|
||||
// Don't change the windows if there was a command in vimrc that
|
||||
// already split some windows
|
||||
if (parmp->window_layout == 0)
|
||||
parmp->window_layout = WIN_HOR;
|
||||
if (parmp->window_layout == WIN_TABS) {
|
||||
@@ -1574,14 +1572,11 @@ static void create_windows(mparm_T *parmp)
|
||||
getout(1);
|
||||
do_modelines(0); /* do modelines */
|
||||
} else {
|
||||
/*
|
||||
* Open a buffer for windows that don't have one yet.
|
||||
* Commands in the .vimrc might have loaded a file or split the window.
|
||||
* Watch out for autocommands that delete a window.
|
||||
*/
|
||||
/*
|
||||
* Don't execute Win/Buf Enter/Leave autocommands here
|
||||
*/
|
||||
// Open a buffer for windows that don't have one yet.
|
||||
// Commands in the vimrc might have loaded a file or split the window.
|
||||
// Watch out for autocommands that delete a window.
|
||||
//
|
||||
// Don't execute Win/Buf Enter/Leave autocommands here
|
||||
++autocmd_no_enter;
|
||||
++autocmd_no_leave;
|
||||
dorewind = TRUE;
|
||||
@@ -1691,8 +1686,8 @@ static void edit_buffers(mparm_T *parmp)
|
||||
}
|
||||
advance = TRUE;
|
||||
|
||||
/* Only open the file if there is no file in this window yet (that can
|
||||
* happen when .vimrc contains ":sall"). */
|
||||
// Only open the file if there is no file in this window yet (that can
|
||||
// happen when vimrc contains ":sall").
|
||||
if (curbuf == firstwin->w_buffer || curbuf->b_ffname == NULL) {
|
||||
curwin->w_arg_idx = arg_idx;
|
||||
/* Edit file from arg list, if there is one. When "Quit" selected
|
||||
@@ -1801,117 +1796,121 @@ static void exe_commands(mparm_T *parmp)
|
||||
TIME_MSG("executing command arguments");
|
||||
}
|
||||
|
||||
/*
|
||||
* Source startup scripts.
|
||||
*/
|
||||
static void source_startup_scripts(mparm_T *parmp)
|
||||
/// Source vimrc or do other user initialization
|
||||
///
|
||||
/// Does one of the following things, stops after whichever succeeds:
|
||||
///
|
||||
/// 1. Execution of VIMINIT environment variable.
|
||||
/// 2. Sourcing user vimrc file ($XDG_CONFIG_HOME/nvim/init.vim).
|
||||
/// 3. Sourcing other vimrc files ($XDG_CONFIG_DIRS[1]/nvim/init.vim, …).
|
||||
/// 4. Execution of EXINIT environment variable.
|
||||
///
|
||||
/// @return True if it is needed to attempt to source exrc file according to
|
||||
/// 'exrc' option definition.
|
||||
static bool do_user_initialization(void)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
int i;
|
||||
bool do_exrc = p_exrc;
|
||||
if (process_env("VIMINIT", true) == OK) {
|
||||
return do_exrc;
|
||||
}
|
||||
char_u *user_vimrc = (char_u *)stdpaths_user_conf_subpath("init.vim");
|
||||
if (do_source(user_vimrc, true, DOSO_VIMRC) != FAIL) {
|
||||
if (do_exrc) {
|
||||
do_exrc = (path_full_compare((char_u *)VIMRC_FILE, user_vimrc, false)
|
||||
!= kEqualFiles);
|
||||
}
|
||||
xfree(user_vimrc);
|
||||
return do_exrc;
|
||||
}
|
||||
xfree(user_vimrc);
|
||||
char *const config_dirs = stdpaths_get_xdg_var(kXDGConfigDirs);
|
||||
if (config_dirs != NULL) {
|
||||
const void *iter = NULL;
|
||||
do {
|
||||
const char *dir;
|
||||
size_t dir_len;
|
||||
iter = vim_colon_env_iter(config_dirs, iter, &dir, &dir_len);
|
||||
if (dir == NULL || dir_len == 0) {
|
||||
break;
|
||||
}
|
||||
const char path_tail[] = { 'n', 'v', 'i', 'm', PATHSEP,
|
||||
'i', 'n', 'i', 't', '.', 'v', 'i', 'm', NUL };
|
||||
char *vimrc = xmalloc(dir_len + sizeof(path_tail) + 1);
|
||||
memmove(vimrc, dir, dir_len);
|
||||
vimrc[dir_len] = PATHSEP;
|
||||
memmove(vimrc + dir_len + 1, path_tail, sizeof(path_tail));
|
||||
if (do_source((char_u *) vimrc, true, DOSO_VIMRC) != FAIL) {
|
||||
if (do_exrc) {
|
||||
do_exrc = (path_full_compare((char_u *)VIMRC_FILE, (char_u *)vimrc,
|
||||
false) != kEqualFiles);
|
||||
}
|
||||
xfree(vimrc);
|
||||
xfree(config_dirs);
|
||||
return do_exrc;
|
||||
}
|
||||
xfree(vimrc);
|
||||
} while (iter != NULL);
|
||||
xfree(config_dirs);
|
||||
}
|
||||
if (process_env("EXINIT", false) == OK) {
|
||||
return do_exrc;
|
||||
}
|
||||
return do_exrc;
|
||||
}
|
||||
|
||||
/*
|
||||
* If -u argument given, use only the initializations from that file and
|
||||
* nothing else.
|
||||
*/
|
||||
/// Source startup scripts
|
||||
///
|
||||
/// @param[in]
|
||||
static void source_startup_scripts(const mparm_T *const parmp)
|
||||
FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
// If -u argument given, use only the initializations from that file and
|
||||
// nothing else.
|
||||
if (parmp->use_vimrc != NULL) {
|
||||
if (strcmp(parmp->use_vimrc, "NONE") == 0
|
||||
|| strcmp(parmp->use_vimrc, "NORC") == 0) {
|
||||
if (parmp->use_vimrc[2] == 'N')
|
||||
p_lpl = FALSE; // don't load plugins either
|
||||
p_lpl = false; // don't load plugins either
|
||||
} else {
|
||||
if (do_source((char_u *)parmp->use_vimrc, FALSE, DOSO_NONE) != OK)
|
||||
EMSG2(_("E282: Cannot read from \"%s\""), parmp->use_vimrc);
|
||||
}
|
||||
} else if (!silent_mode) {
|
||||
|
||||
/*
|
||||
* Get system wide defaults, if the file name is defined.
|
||||
*/
|
||||
#ifdef SYS_VIMRC_FILE
|
||||
(void)do_source((char_u *)SYS_VIMRC_FILE, FALSE, DOSO_NONE);
|
||||
// Get system wide defaults, if the file name is defined.
|
||||
(void) do_source((char_u *)SYS_VIMRC_FILE, false, DOSO_NONE);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Try to read initialization commands from the following places:
|
||||
* - environment variable VIMINIT
|
||||
* - user vimrc file (~/.vimrc)
|
||||
* - second user vimrc file ($VIM/.vimrc for Dos)
|
||||
* - environment variable EXINIT
|
||||
* - user exrc file (~/.exrc)
|
||||
* - second user exrc file ($VIM/.exrc for Dos)
|
||||
* The first that exists is used, the rest is ignored.
|
||||
*/
|
||||
if (process_env("VIMINIT", true) != OK) {
|
||||
if (do_source((char_u *)USR_VIMRC_FILE, TRUE, DOSO_VIMRC) == FAIL
|
||||
#ifdef USR_VIMRC_FILE2
|
||||
&& do_source((char_u *)USR_VIMRC_FILE2, TRUE,
|
||||
DOSO_VIMRC) == FAIL
|
||||
#endif
|
||||
#ifdef USR_VIMRC_FILE3
|
||||
&& do_source((char_u *)USR_VIMRC_FILE3, TRUE,
|
||||
DOSO_VIMRC) == FAIL
|
||||
#endif
|
||||
&& process_env("EXINIT", FALSE) == FAIL
|
||||
&& do_source((char_u *)USR_EXRC_FILE, FALSE, DOSO_NONE) == FAIL) {
|
||||
#ifdef USR_EXRC_FILE2
|
||||
(void)do_source((char_u *)USR_EXRC_FILE2, FALSE, DOSO_NONE);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Read initialization commands from ".vimrc" or ".exrc" in current
|
||||
* directory. This is only done if the 'exrc' option is set.
|
||||
* Because of security reasons we disallow shell and write commands
|
||||
* now, except for unix if the file is owned by the user or 'secure'
|
||||
* option has been reset in environment of global ".exrc" or ".vimrc".
|
||||
* Only do this if VIMRC_FILE is not the same as USR_VIMRC_FILE or
|
||||
* SYS_VIMRC_FILE.
|
||||
*/
|
||||
if (p_exrc) {
|
||||
if (do_user_initialization()) {
|
||||
// Read initialization commands from ".vimrc" or ".exrc" in current
|
||||
// directory. This is only done if the 'exrc' option is set.
|
||||
// Because of security reasons we disallow shell and write commands
|
||||
// now, except for unix if the file is owned by the user or 'secure'
|
||||
// option has been reset in environment of global "exrc" or "vimrc".
|
||||
// Only do this if VIMRC_FILE is not the same as vimrc file sourced in
|
||||
// do_user_initialization.
|
||||
#if defined(UNIX)
|
||||
/* If ".vimrc" file is not owned by user, set 'secure' mode. */
|
||||
// If vimrc file is not owned by user, set 'secure' mode.
|
||||
if (!file_owned(VIMRC_FILE))
|
||||
#endif
|
||||
secure = p_secure;
|
||||
|
||||
i = FAIL;
|
||||
if (path_full_compare((char_u *)USR_VIMRC_FILE,
|
||||
(char_u *)VIMRC_FILE, FALSE) != kEqualFiles
|
||||
#ifdef USR_VIMRC_FILE2
|
||||
&& path_full_compare((char_u *)USR_VIMRC_FILE2,
|
||||
(char_u *)VIMRC_FILE, FALSE) != kEqualFiles
|
||||
#endif
|
||||
#ifdef USR_VIMRC_FILE3
|
||||
&& path_full_compare((char_u *)USR_VIMRC_FILE3,
|
||||
(char_u *)VIMRC_FILE, FALSE) != kEqualFiles
|
||||
#endif
|
||||
#ifdef SYS_VIMRC_FILE
|
||||
&& path_full_compare((char_u *)SYS_VIMRC_FILE,
|
||||
(char_u *)VIMRC_FILE, FALSE) != kEqualFiles
|
||||
#endif
|
||||
)
|
||||
i = do_source((char_u *)VIMRC_FILE, TRUE, DOSO_VIMRC);
|
||||
|
||||
if (i == FAIL) {
|
||||
if (do_source((char_u *)VIMRC_FILE, true, DOSO_VIMRC) == FAIL) {
|
||||
#if defined(UNIX)
|
||||
/* if ".exrc" is not owned by user set 'secure' mode */
|
||||
if (!file_owned(EXRC_FILE))
|
||||
// if ".exrc" is not owned by user set 'secure' mode
|
||||
if (!file_owned(EXRC_FILE)) {
|
||||
secure = p_secure;
|
||||
else
|
||||
} else {
|
||||
secure = 0;
|
||||
}
|
||||
#endif
|
||||
if ( path_full_compare((char_u *)USR_EXRC_FILE,
|
||||
(char_u *)EXRC_FILE, FALSE) != kEqualFiles
|
||||
#ifdef USR_EXRC_FILE2
|
||||
&& path_full_compare((char_u *)USR_EXRC_FILE2,
|
||||
(char_u *)EXRC_FILE, FALSE) != kEqualFiles
|
||||
#endif
|
||||
)
|
||||
(void)do_source((char_u *)EXRC_FILE, FALSE, DOSO_NONE);
|
||||
(void)do_source((char_u *)EXRC_FILE, false, DOSO_NONE);
|
||||
}
|
||||
}
|
||||
if (secure == 2)
|
||||
need_wait_return = TRUE;
|
||||
if (secure == 2) {
|
||||
need_wait_return = true;
|
||||
}
|
||||
secure = 0;
|
||||
}
|
||||
did_source_startup_scripts = true;
|
||||
@@ -2042,7 +2041,7 @@ static void usage(void)
|
||||
mch_msg(_(" -r, -L List swap files and exit\n"));
|
||||
mch_msg(_(" -r <file> Recover crashed session\n"));
|
||||
mch_msg(_(" -u <nvimrc> Use <nvimrc> instead of the default\n"));
|
||||
mch_msg(_(" -i <shada> Use <shada> instead of the default " SHADA_FILE "\n")); // NOLINT(whitespace/line_length)
|
||||
mch_msg(_(" -i <shada> Use <shada> instead of the default\n"));
|
||||
mch_msg(_(" --noplugin Don't load plugin scripts\n"));
|
||||
mch_msg(_(" -o[N] Open N windows (default: one for each file)\n"));
|
||||
mch_msg(_(" -O[N] Like -o but split vertically\n"));
|
||||
|
@@ -406,10 +406,12 @@ void ml_setname(buf_T *buf)
|
||||
* Try all directories in the 'directory' option.
|
||||
*/
|
||||
dirp = p_dir;
|
||||
bool found_existing_dir = false;
|
||||
for (;; ) {
|
||||
if (*dirp == NUL) /* tried all directories, fail */
|
||||
break;
|
||||
fname = findswapname(buf, &dirp, mfp->mf_fname);
|
||||
fname = (char_u *)findswapname(buf, (char **)&dirp, (char *)mfp->mf_fname,
|
||||
&found_existing_dir);
|
||||
/* alloc's fname */
|
||||
if (dirp == NULL) /* out of memory */
|
||||
break;
|
||||
@@ -504,13 +506,15 @@ void ml_open_file(buf_T *buf)
|
||||
* Try all directories in 'directory' option.
|
||||
*/
|
||||
dirp = p_dir;
|
||||
bool found_existing_dir = false;
|
||||
for (;; ) {
|
||||
if (*dirp == NUL)
|
||||
break;
|
||||
/* There is a small chance that between choosing the swap file name
|
||||
* and creating it, another Vim creates the file. In that case the
|
||||
* creation will fail and we will use another directory. */
|
||||
fname = findswapname(buf, &dirp, NULL); /* allocates fname */
|
||||
// There is a small chance that between choosing the swap file name
|
||||
// and creating it, another Vim creates the file. In that case the
|
||||
// creation will fail and we will use another directory.
|
||||
fname = (char_u *)findswapname(buf, (char **)&dirp, NULL,
|
||||
&found_existing_dir);
|
||||
if (dirp == NULL)
|
||||
break; /* out of memory */
|
||||
if (fname == NULL)
|
||||
@@ -3222,45 +3226,56 @@ static int do_swapexists(buf_T *buf, char_u *fname)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find out what name to use for the swap file for buffer 'buf'.
|
||||
*
|
||||
* Several names are tried to find one that does not exist
|
||||
* Returns the name in allocated memory or NULL.
|
||||
* When out of memory "dirp" is set to NULL.
|
||||
*
|
||||
* Note: If BASENAMELEN is not correct, you will get error messages for
|
||||
* not being able to open the swap or undo file
|
||||
* Note: May trigger SwapExists autocmd, pointers may change!
|
||||
*/
|
||||
static char_u *
|
||||
findswapname (
|
||||
buf_T *buf,
|
||||
char_u **dirp, /* pointer to list of directories */
|
||||
char_u *old_fname /* don't give warning for this file name */
|
||||
)
|
||||
/// Find out what name to use for the swap file for buffer 'buf'.
|
||||
///
|
||||
/// Several names are tried to find one that does not exist. Last directory in
|
||||
/// option is automatically created.
|
||||
///
|
||||
/// @note If BASENAMELEN is not correct, you will get error messages for
|
||||
/// not being able to open the swap or undo file.
|
||||
/// @note May trigger SwapExists autocmd, pointers may change!
|
||||
///
|
||||
/// @param[in] buf Buffer for which swap file names needs to be found.
|
||||
/// @param[in,out] dirp Pointer to a list of directories. When out of memory,
|
||||
/// is set to NULL. Is advanced to the next directory in
|
||||
/// the list otherwise.
|
||||
/// @param[in] old_fname Allowed existing swap file name. Except for this
|
||||
/// case, name of the non-existing file is used.
|
||||
/// @param[in,out] found_existing_dir If points to true, then new directory
|
||||
/// for swap file is not created. At first
|
||||
/// findswapname() call this argument must
|
||||
/// point to false. This parameter may only
|
||||
/// be set to true by this function, it is
|
||||
/// never set to false.
|
||||
///
|
||||
/// @return [allocated] Name of the swap file.
|
||||
static char *findswapname(buf_T *buf, char **dirp, char *old_fname,
|
||||
bool *found_existing_dir)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ARG(1, 2, 4)
|
||||
{
|
||||
char_u *fname;
|
||||
int n;
|
||||
char_u *dir_name;
|
||||
char_u *buf_fname = buf->b_fname;
|
||||
char *fname;
|
||||
size_t n;
|
||||
char *dir_name;
|
||||
char *buf_fname = (char *) buf->b_fname;
|
||||
|
||||
/*
|
||||
* Isolate a directory name from *dirp and put it in dir_name.
|
||||
* First allocate some memory to put the directory name in.
|
||||
*/
|
||||
dir_name = xmalloc(STRLEN(*dirp) + 1);
|
||||
(void)copy_option_part(dirp, dir_name, 31000, ",");
|
||||
const size_t dir_len = strlen(*dirp);
|
||||
dir_name = xmalloc(dir_len + 1);
|
||||
(void)copy_option_part((char_u **) dirp, (char_u *) dir_name, dir_len, ",");
|
||||
|
||||
/*
|
||||
* we try different names until we find one that does not exist yet
|
||||
*/
|
||||
fname = makeswapname(buf_fname, buf->b_ffname, buf, dir_name);
|
||||
fname = (char *)makeswapname((char_u *)buf_fname, buf->b_ffname, buf,
|
||||
(char_u *)dir_name);
|
||||
|
||||
for (;; ) {
|
||||
if (fname == NULL) /* must be out of memory */
|
||||
break;
|
||||
if ((n = (int)STRLEN(fname)) == 0) { /* safety check */
|
||||
if ((n = strlen(fname)) == 0) { /* safety check */
|
||||
xfree(fname);
|
||||
fname = NULL;
|
||||
break;
|
||||
@@ -3269,7 +3284,7 @@ findswapname (
|
||||
// Extra security check: When a swap file is a symbolic link, this
|
||||
// is most likely a symlink attack.
|
||||
FileInfo file_info;
|
||||
bool file_or_link_found = os_fileinfo_link((char *)fname, &file_info);
|
||||
bool file_or_link_found = os_fileinfo_link(fname, &file_info);
|
||||
if (!file_or_link_found) {
|
||||
break;
|
||||
}
|
||||
@@ -3300,7 +3315,7 @@ findswapname (
|
||||
* Try to read block 0 from the swap file to get the original
|
||||
* file name (and inode number).
|
||||
*/
|
||||
fd = os_open((char *)fname, O_RDONLY, 0);
|
||||
fd = os_open(fname, O_RDONLY, 0);
|
||||
if (fd >= 0) {
|
||||
if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0)) {
|
||||
/*
|
||||
@@ -3311,7 +3326,7 @@ findswapname (
|
||||
if (b0.b0_flags & B0_SAME_DIR) {
|
||||
if (fnamecmp(path_tail(buf->b_ffname),
|
||||
path_tail(b0.b0_fname)) != 0
|
||||
|| !same_directory(fname, buf->b_ffname)) {
|
||||
|| !same_directory((char_u *) fname, buf->b_ffname)) {
|
||||
/* Symlinks may point to the same file even
|
||||
* when the name differs, need to check the
|
||||
* inode too. */
|
||||
@@ -3351,12 +3366,12 @@ findswapname (
|
||||
* user anyway.
|
||||
*/
|
||||
if (swap_exists_action != SEA_NONE
|
||||
&& has_autocmd(EVENT_SWAPEXISTS, buf_fname, buf))
|
||||
choice = do_swapexists(buf, fname);
|
||||
&& has_autocmd(EVENT_SWAPEXISTS, (char_u *) buf_fname, buf))
|
||||
choice = do_swapexists(buf, (char_u *) fname);
|
||||
|
||||
if (choice == 0) {
|
||||
/* Show info about the existing swap file. */
|
||||
attention_message(buf, fname);
|
||||
attention_message(buf, (char_u *) fname);
|
||||
|
||||
/* We don't want a 'q' typed at the more-prompt
|
||||
* interrupt loading a file. */
|
||||
@@ -3364,20 +3379,21 @@ findswapname (
|
||||
}
|
||||
|
||||
if (swap_exists_action != SEA_NONE && choice == 0) {
|
||||
char_u *name;
|
||||
char *name;
|
||||
|
||||
name = xmalloc(STRLEN(fname)
|
||||
+ STRLEN(_("Swap file \""))
|
||||
+ STRLEN(_("\" already exists!")) + 5);
|
||||
const size_t fname_len = strlen(fname);
|
||||
name = xmalloc(fname_len
|
||||
+ strlen(_("Swap file \""))
|
||||
+ strlen(_("\" already exists!")) + 5);
|
||||
STRCPY(name, _("Swap file \""));
|
||||
home_replace(NULL, fname, name + STRLEN(name),
|
||||
1000, TRUE);
|
||||
home_replace(NULL, (char_u *) fname, (char_u *)&name[strlen(name)],
|
||||
fname_len, true);
|
||||
STRCAT(name, _("\" already exists!"));
|
||||
choice = do_dialog(VIM_WARNING,
|
||||
(char_u *)_("VIM - ATTENTION"),
|
||||
name == NULL
|
||||
? (char_u *)_("Swap file already exists!")
|
||||
: name,
|
||||
(char_u *)(name == NULL
|
||||
? _("Swap file already exists!")
|
||||
: name),
|
||||
# if defined(UNIX)
|
||||
process_still_running
|
||||
? (char_u *)_(
|
||||
@@ -3409,7 +3425,7 @@ findswapname (
|
||||
swap_exists_action = SEA_RECOVER;
|
||||
break;
|
||||
case 4:
|
||||
os_remove((char *)fname);
|
||||
os_remove(fname);
|
||||
break;
|
||||
case 5:
|
||||
swap_exists_action = SEA_QUIT;
|
||||
@@ -3421,7 +3437,7 @@ findswapname (
|
||||
}
|
||||
|
||||
/* If the file was deleted this fname can be used. */
|
||||
if (!os_file_exists(fname))
|
||||
if (!os_file_exists((char_u *) fname))
|
||||
break;
|
||||
} else
|
||||
{
|
||||
@@ -3454,6 +3470,19 @@ findswapname (
|
||||
--fname[n - 1]; /* ".swo", ".swn", etc. */
|
||||
}
|
||||
|
||||
if (os_isdir((char_u *) dir_name)) {
|
||||
*found_existing_dir = true;
|
||||
} else if (!*found_existing_dir && **dirp == NUL) {
|
||||
int ret;
|
||||
char *failed_dir;
|
||||
if ((ret = os_mkdir_recurse(dir_name, 0755, &failed_dir)) != 0) {
|
||||
EMSG3(_("E303: Unable to create directory \"%s\" for swap file, "
|
||||
"recovery impossible: %s"),
|
||||
failed_dir, os_strerror(ret));
|
||||
xfree(failed_dir);
|
||||
}
|
||||
}
|
||||
|
||||
xfree(dir_name);
|
||||
return fname;
|
||||
}
|
||||
|
@@ -301,6 +301,243 @@ static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview",
|
||||
# include "option.c.generated.h"
|
||||
#endif
|
||||
|
||||
/// Append string with escaped commas
|
||||
static char *strcpy_comma_escaped(char *dest, const char *src, const size_t len)
|
||||
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
size_t shift = 0;
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
if (src[i] == ',') {
|
||||
dest[i + shift++] = '\\';
|
||||
}
|
||||
dest[i + shift] = src[i];
|
||||
}
|
||||
return &dest[len + shift];
|
||||
}
|
||||
|
||||
/// Compute length of a colon-separated value, doubled and with some suffixes
|
||||
///
|
||||
/// @param[in] val Colon-separated array value.
|
||||
/// @param[in] common_suf_len Length of the common suffix which is appended to
|
||||
/// each item in the array, twice.
|
||||
/// @param[in] single_suf_len Length of the suffix which is appended to each
|
||||
/// item in the array once.
|
||||
///
|
||||
/// @return Length of the comma-separated string array that contains each item
|
||||
/// in the original array twice with suffixes with given length
|
||||
/// (common_suf is present after each new item, single_suf is present
|
||||
/// after half of the new items) and with commas after each item, commas
|
||||
/// inside the values are escaped.
|
||||
static inline size_t compute_double_colon_len(const char *const val,
|
||||
const size_t common_suf_len,
|
||||
const size_t single_suf_len)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_PURE
|
||||
{
|
||||
if (val == NULL && *val) {
|
||||
return 0;
|
||||
}
|
||||
size_t ret = 0;
|
||||
const void *iter = NULL;
|
||||
do {
|
||||
size_t dir_len;
|
||||
const char *dir;
|
||||
iter = vim_colon_env_iter(val, iter, &dir, &dir_len);
|
||||
if (dir != NULL && dir_len > 0) {
|
||||
ret += ((dir_len + memcnt(dir, ',', dir_len) + common_suf_len
|
||||
+ !after_pathsep(dir, dir + dir_len)) * 2
|
||||
+ single_suf_len);
|
||||
}
|
||||
} while (iter != NULL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define NVIM_SIZE (sizeof("nvim") - 1)
|
||||
|
||||
/// Add directories to a comma-separated array from a colon-separated one
|
||||
///
|
||||
/// Commas are escaped in process. To each item PATHSEP "nvim" is appended in
|
||||
/// addition to suf1 and suf2.
|
||||
///
|
||||
/// @param[in,out] dest Destination comma-separated array.
|
||||
/// @param[in] val Source colon-separated array.
|
||||
/// @param[in] suf1 If not NULL, suffix appended to destination. Prior to it
|
||||
/// directory separator is appended. Suffix must not contain
|
||||
/// commas.
|
||||
/// @param[in] len1 Length of the suf1.
|
||||
/// @param[in] suf2 If not NULL, another suffix appended to destination. Again
|
||||
/// with directory separator behind. Suffix must not contain
|
||||
/// commas.
|
||||
/// @param[in] len2 Length of the suf2.
|
||||
/// @param[in] forward If true, iterate over val in forward direction.
|
||||
/// Otherwise in reverse.
|
||||
///
|
||||
/// @return (dest + appended_characters_length)
|
||||
static inline char *add_colon_dirs(char *dest, const char *const val,
|
||||
const char *const suf1, const size_t len1,
|
||||
const char *const suf2, const size_t len2,
|
||||
const bool forward)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_RET FUNC_ATTR_NONNULL_ARG(1)
|
||||
{
|
||||
if (val == NULL && *val) {
|
||||
return dest;
|
||||
}
|
||||
const void *iter = NULL;
|
||||
do {
|
||||
size_t dir_len;
|
||||
const char *dir;
|
||||
iter = (forward ? vim_colon_env_iter : vim_colon_env_iter_rev)(
|
||||
val, iter, &dir, &dir_len);
|
||||
if (dir != NULL && dir_len > 0) {
|
||||
dest = strcpy_comma_escaped(dest, dir, dir_len);
|
||||
if (!after_pathsep(dest - 1, dest)) {
|
||||
*dest++ = PATHSEP;
|
||||
}
|
||||
memmove(dest, "nvim", NVIM_SIZE);
|
||||
dest += NVIM_SIZE;
|
||||
if (suf1 != NULL) {
|
||||
*dest++ = PATHSEP;
|
||||
memmove(dest, suf1, len1);
|
||||
dest += len1;
|
||||
if (suf2 != NULL) {
|
||||
*dest++ = PATHSEP;
|
||||
memmove(dest, suf2, len2);
|
||||
dest += len2;
|
||||
}
|
||||
}
|
||||
*dest++ = ',';
|
||||
}
|
||||
} while (iter != NULL);
|
||||
return dest;
|
||||
}
|
||||
|
||||
/// Add directory to a comma-separated list of directories
|
||||
///
|
||||
/// In the added directory comma is escaped.
|
||||
///
|
||||
/// @param[in,out] dest Destination comma-separated array.
|
||||
/// @param[in] dir Directory to append.
|
||||
/// @param[in] append_nvim If true, append "nvim" as the very first suffix.
|
||||
/// @param[in] suf1 If not NULL, suffix appended to destination. Prior to it
|
||||
/// directory separator is appended. Suffix must not contain
|
||||
/// commas.
|
||||
/// @param[in] len1 Length of the suf1.
|
||||
/// @param[in] suf2 If not NULL, another suffix appended to destination. Again
|
||||
/// with directory separator behind. Suffix must not contain
|
||||
/// commas.
|
||||
/// @param[in] len2 Length of the suf2.
|
||||
/// @param[in] forward If true, iterate over val in forward direction.
|
||||
/// Otherwise in reverse.
|
||||
///
|
||||
/// @return (dest + appended_characters_length)
|
||||
static inline char *add_dir(char *dest, const char *const dir,
|
||||
const size_t dir_len, const bool append_nvim,
|
||||
const char *const suf1, const size_t len1,
|
||||
const char *const suf2, const size_t len2)
|
||||
FUNC_ATTR_NONNULL_RET FUNC_ATTR_NONNULL_ARG(1) FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
if (dir == NULL && dir_len != 0) {
|
||||
return dest;
|
||||
}
|
||||
dest = strcpy_comma_escaped(dest, dir, dir_len);
|
||||
if (append_nvim) {
|
||||
if (!after_pathsep(dest - 1, dest)) {
|
||||
*dest++ = PATHSEP;
|
||||
}
|
||||
memmove(dest, "nvim", NVIM_SIZE);
|
||||
dest += NVIM_SIZE;
|
||||
if (suf1 != NULL) {
|
||||
*dest++ = PATHSEP;
|
||||
memmove(dest, suf1, len1);
|
||||
dest += len1;
|
||||
if (suf2 != NULL) {
|
||||
*dest++ = PATHSEP;
|
||||
memmove(dest, suf2, len2);
|
||||
dest += len2;
|
||||
}
|
||||
}
|
||||
}
|
||||
*dest++ = ',';
|
||||
return dest;
|
||||
}
|
||||
|
||||
/// Set &runtimepath to default value
|
||||
static void set_runtimepath_default(void)
|
||||
{
|
||||
size_t rtp_size = 0;
|
||||
char *const data_home = stdpaths_get_xdg_var(kXDGDataHome);
|
||||
char *const config_home = stdpaths_get_xdg_var(kXDGConfigHome);
|
||||
char *const vimruntime = vim_getenv("VIMRUNTIME");
|
||||
char *const data_dirs = stdpaths_get_xdg_var(kXDGDataDirs);
|
||||
char *const config_dirs = stdpaths_get_xdg_var(kXDGConfigDirs);
|
||||
#define SITE_SIZE (sizeof("site") - 1)
|
||||
#define AFTER_SIZE (sizeof("after") - 1)
|
||||
size_t data_len = 0;
|
||||
size_t config_len = 0;
|
||||
size_t vimruntime_len = 0;
|
||||
if (data_home != NULL) {
|
||||
data_len = strlen(data_home);
|
||||
if (data_len != 0) {
|
||||
rtp_size += ((data_len + memcnt(data_home, ',', data_len)
|
||||
+ NVIM_SIZE + 1 + SITE_SIZE + 1
|
||||
+ !after_pathsep(data_home, data_home + data_len)) * 2
|
||||
+ AFTER_SIZE + 1);
|
||||
}
|
||||
}
|
||||
if (config_home != NULL) {
|
||||
config_len = strlen(config_home);
|
||||
if (config_len != 0) {
|
||||
rtp_size += ((config_len + memcnt(config_home, ',', config_len)
|
||||
+ NVIM_SIZE + 1
|
||||
+ !after_pathsep(config_home, config_home + config_len)) * 2
|
||||
+ AFTER_SIZE + 1);
|
||||
}
|
||||
}
|
||||
if (vimruntime != NULL) {
|
||||
vimruntime_len = strlen(vimruntime);
|
||||
if (vimruntime_len != 0) {
|
||||
rtp_size += vimruntime_len + memcnt(vimruntime, ',', vimruntime_len) + 1;
|
||||
}
|
||||
}
|
||||
rtp_size += compute_double_colon_len(data_dirs, NVIM_SIZE + 1 + SITE_SIZE + 1,
|
||||
AFTER_SIZE + 1);
|
||||
rtp_size += compute_double_colon_len(config_dirs, NVIM_SIZE + 1,
|
||||
AFTER_SIZE + 1);
|
||||
if (rtp_size == 0) {
|
||||
return;
|
||||
}
|
||||
char *const rtp = xmalloc(rtp_size);
|
||||
char *rtp_cur = rtp;
|
||||
rtp_cur = add_dir(rtp_cur, config_home, config_len, true, NULL, 0, NULL, 0);
|
||||
rtp_cur = add_colon_dirs(rtp_cur, config_dirs, NULL, 0, NULL, 0, true);
|
||||
rtp_cur = add_dir(rtp_cur, data_home, data_len, true, "site", SITE_SIZE,
|
||||
NULL, 0);
|
||||
rtp_cur = add_colon_dirs(rtp_cur, data_dirs, "site", SITE_SIZE, NULL, 0,
|
||||
true);
|
||||
rtp_cur = add_dir(rtp_cur, vimruntime, vimruntime_len, false, NULL, 0,
|
||||
NULL, 0);
|
||||
rtp_cur = add_colon_dirs(rtp_cur, data_dirs, "site", SITE_SIZE,
|
||||
"after", AFTER_SIZE, false);
|
||||
rtp_cur = add_dir(rtp_cur, data_home, data_len, true, "site", SITE_SIZE,
|
||||
"after", AFTER_SIZE);
|
||||
rtp_cur = add_colon_dirs(rtp_cur, config_dirs, "after", AFTER_SIZE, NULL, 0,
|
||||
false);
|
||||
rtp_cur = add_dir(rtp_cur, config_home, config_len, true,
|
||||
"after", AFTER_SIZE, NULL, 0);
|
||||
// Strip trailing comma.
|
||||
rtp_cur[-1] = NUL;
|
||||
assert((size_t) (rtp_cur - rtp) == rtp_size);
|
||||
#undef SITE_SIZE
|
||||
#undef AFTER_SIZE
|
||||
set_string_default("runtimepath", rtp, true);
|
||||
xfree(data_dirs);
|
||||
xfree(config_dirs);
|
||||
xfree(data_home);
|
||||
xfree(config_home);
|
||||
xfree(vimruntime);
|
||||
}
|
||||
|
||||
#undef NVIM_SIZE
|
||||
|
||||
/*
|
||||
* Initialize the options, first part.
|
||||
*
|
||||
@@ -308,7 +545,6 @@ static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview",
|
||||
*/
|
||||
void set_init_1(void)
|
||||
{
|
||||
char_u *p;
|
||||
int opt_idx;
|
||||
|
||||
langmap_init();
|
||||
@@ -320,8 +556,12 @@ void set_init_1(void)
|
||||
* Find default value for 'shell' option.
|
||||
* Don't use it if it is empty.
|
||||
*/
|
||||
if ((p = (char_u *)os_getenv("SHELL")) != NULL)
|
||||
set_string_default("sh", p);
|
||||
{
|
||||
const char *shell = os_getenv("SHELL");
|
||||
if (shell != NULL) {
|
||||
set_string_default("sh", (char *) shell, false);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the default for 'backupskip' to include environment variables for
|
||||
@@ -339,17 +579,18 @@ void set_init_1(void)
|
||||
ga_init(&ga, 1, 100);
|
||||
for (size_t n = 0; n < ARRAY_SIZE(names); ++n) {
|
||||
bool mustfree = true;
|
||||
char *p;
|
||||
# ifdef UNIX
|
||||
if (*names[n] == NUL) {
|
||||
p = (char_u *)"/tmp";
|
||||
p = "/tmp";
|
||||
mustfree = false;
|
||||
}
|
||||
else
|
||||
# endif
|
||||
p = (char_u *)vim_getenv(names[n]);
|
||||
p = vim_getenv(names[n]);
|
||||
if (p != NULL && *p != NUL) {
|
||||
// First time count the NUL, otherwise count the ','.
|
||||
len = (int)STRLEN(p) + 3;
|
||||
len = (int)strlen(p) + 3;
|
||||
ga_grow(&ga, len);
|
||||
if (!GA_EMPTY(&ga))
|
||||
STRCAT(ga.ga_data, ",");
|
||||
@@ -363,8 +604,7 @@ void set_init_1(void)
|
||||
}
|
||||
}
|
||||
if (ga.ga_data != NULL) {
|
||||
set_string_default("bsk", ga.ga_data);
|
||||
xfree(ga.ga_data);
|
||||
set_string_default("bsk", ga.ga_data, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,17 +665,34 @@ void set_init_1(void)
|
||||
|
||||
#if defined(MSWIN) || defined(MAC)
|
||||
/* Set print encoding on platforms that don't default to latin1 */
|
||||
set_string_default("penc",
|
||||
(char_u *)"hp-roman8"
|
||||
);
|
||||
set_string_default("printencoding", "hp-roman8", false);
|
||||
#endif
|
||||
|
||||
/* 'printexpr' must be allocated to be able to evaluate it. */
|
||||
set_string_default(
|
||||
"pexpr",
|
||||
(char_u *)
|
||||
"system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error"
|
||||
);
|
||||
// 'printexpr' must be allocated to be able to evaluate it.
|
||||
set_string_default("printexpr",
|
||||
#ifdef UNIX
|
||||
"system(['lpr'] "
|
||||
"+ (empty(&printdevice)?[]:['-P', &printdevice]) "
|
||||
"+ [v:fname_in])"
|
||||
". delete(v:fname_in)"
|
||||
"+ v:shell_error",
|
||||
#elif defined(MSWIN)
|
||||
"system(['copy', v:fname_in, "
|
||||
"empty(&printdevice)?'LPT1':&printdevice])"
|
||||
". delete(v:fname_in)",
|
||||
#else
|
||||
"",
|
||||
#endif
|
||||
false);
|
||||
|
||||
set_string_default("viewdir", stdpaths_user_data_subpath("view", 0), true);
|
||||
set_string_default("backupdir", stdpaths_user_data_subpath("backup", 0),
|
||||
true);
|
||||
set_string_default("directory", stdpaths_user_data_subpath("swap", 2), true);
|
||||
set_string_default("undodir", stdpaths_user_data_subpath("undo", 0), true);
|
||||
// Set default for &runtimepath. All necessary expansions are performed in
|
||||
// this function.
|
||||
set_runtimepath_default();
|
||||
|
||||
/*
|
||||
* Set all the options (except the terminal options) to their default
|
||||
@@ -478,14 +735,16 @@ void set_init_1(void)
|
||||
* default.
|
||||
*/
|
||||
for (opt_idx = 0; options[opt_idx].fullname; opt_idx++) {
|
||||
char *p;
|
||||
if ((options[opt_idx].flags & P_GETTEXT)
|
||||
&& options[opt_idx].var != NULL)
|
||||
p = (char_u *)_(*(char **)options[opt_idx].var);
|
||||
else
|
||||
p = option_expand(opt_idx, NULL);
|
||||
&& options[opt_idx].var != NULL) {
|
||||
p = _(*(char **)options[opt_idx].var);
|
||||
} else {
|
||||
p = (char *) option_expand(opt_idx, NULL);
|
||||
}
|
||||
if (p != NULL) {
|
||||
p = vim_strsave(p);
|
||||
*(char_u **)options[opt_idx].var = p;
|
||||
p = xstrdup(p);
|
||||
*(char **)options[opt_idx].var = p;
|
||||
/* VIMEXP
|
||||
* Defaults for all expanded options are currently the same for Vi
|
||||
* and Vim. When this changes, add some code here! Also need to
|
||||
@@ -493,7 +752,7 @@ void set_init_1(void)
|
||||
*/
|
||||
if (options[opt_idx].flags & P_DEF_ALLOCED)
|
||||
xfree(options[opt_idx].def_val[VI_DEFAULT]);
|
||||
options[opt_idx].def_val[VI_DEFAULT] = p;
|
||||
options[opt_idx].def_val[VI_DEFAULT] = (char_u *) p;
|
||||
options[opt_idx].flags |= P_DEF_ALLOCED;
|
||||
}
|
||||
}
|
||||
@@ -522,14 +781,14 @@ void set_init_1(void)
|
||||
(void)set_chars_option(&p_lcs);
|
||||
|
||||
/* enc_locale() will try to find the encoding of the current locale. */
|
||||
p = enc_locale();
|
||||
char_u *p = enc_locale();
|
||||
if (p != NULL) {
|
||||
char_u *save_enc;
|
||||
|
||||
/* Try setting 'encoding' and check if the value is valid.
|
||||
* If not, go back to the default "utf-8". */
|
||||
save_enc = p_enc;
|
||||
p_enc = p;
|
||||
p_enc = (char_u *) p;
|
||||
if (STRCMP(p_enc, "gb18030") == 0) {
|
||||
/* We don't support "gb18030", but "cp936" is a good substitute
|
||||
* for practical purposes, thus use that. It's not an alias to
|
||||
@@ -674,7 +933,9 @@ set_options_default (
|
||||
///
|
||||
/// @param name The name of the option
|
||||
/// @param val The value of the option
|
||||
void set_string_default(const char *name, const char_u *val)
|
||||
/// @param allocated If true, do not copy default as it was already allocated.
|
||||
static void set_string_default(const char *name, char *val, bool allocated)
|
||||
FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
int opt_idx = findoption((char_u *)name);
|
||||
if (opt_idx >= 0) {
|
||||
@@ -682,7 +943,10 @@ void set_string_default(const char *name, const char_u *val)
|
||||
xfree(options[opt_idx].def_val[VI_DEFAULT]);
|
||||
}
|
||||
|
||||
options[opt_idx].def_val[VI_DEFAULT] = (char_u *) xstrdup((char *) val);
|
||||
options[opt_idx].def_val[VI_DEFAULT] = (char_u *) (
|
||||
allocated
|
||||
? (char_u *) val
|
||||
: (char_u *) xstrdup(val));
|
||||
options[opt_idx].flags |= P_DEF_ALLOCED;
|
||||
}
|
||||
}
|
||||
@@ -5948,7 +6212,7 @@ static void paste_option_changed(void)
|
||||
old_p_paste = p_paste;
|
||||
}
|
||||
|
||||
/// vimrc_found() - Called when a ".vimrc" or "VIMINIT" has been found.
|
||||
/// vimrc_found() - Called when a vimrc or "VIMINIT" has been found.
|
||||
///
|
||||
/// Set the values for options that didn't get set yet to the Vim defaults.
|
||||
/// When "fname" is not NULL, use it to set $"envname" when it wasn't set yet.
|
||||
|
@@ -176,7 +176,7 @@ return {
|
||||
vi_def=true,
|
||||
expand=true,
|
||||
varname='p_bdir',
|
||||
defaults={if_true={vi=macros('DFLT_BDIR')}}
|
||||
defaults={if_true={vi=''}}
|
||||
},
|
||||
{
|
||||
full_name='backupext', abbreviation='bex',
|
||||
@@ -627,7 +627,7 @@ return {
|
||||
vi_def=true,
|
||||
expand=true,
|
||||
varname='p_dir',
|
||||
defaults={if_true={vi=macros('DFLT_DIR')}}
|
||||
defaults={if_true={vi=''}}
|
||||
},
|
||||
{
|
||||
full_name='display', abbreviation='dy',
|
||||
@@ -1916,7 +1916,7 @@ return {
|
||||
vi_def=true,
|
||||
expand=true,
|
||||
varname='p_rtp',
|
||||
defaults={if_true={vi=macros('DFLT_RUNTIMEPATH')}}
|
||||
defaults={if_true={vi=''}}
|
||||
},
|
||||
{
|
||||
full_name='scroll', abbreviation='scr',
|
||||
@@ -2524,7 +2524,7 @@ return {
|
||||
vi_def=true,
|
||||
expand=true,
|
||||
varname='p_udir',
|
||||
defaults={if_true={vi="."}}
|
||||
defaults={if_true={vi=''}}
|
||||
},
|
||||
{
|
||||
full_name='undofile', abbreviation='udf',
|
||||
@@ -2585,7 +2585,7 @@ return {
|
||||
vi_def=true,
|
||||
expand=true,
|
||||
varname='p_vdir',
|
||||
defaults={if_true={vi=macros('DFLT_VDIR')}}
|
||||
defaults={if_true={vi=''}}
|
||||
},
|
||||
{
|
||||
full_name='viewoptions', abbreviation='vop',
|
||||
|
@@ -415,6 +415,74 @@ static char *remove_tail(char *p, char *pend, char *name)
|
||||
return pend;
|
||||
}
|
||||
|
||||
/// Iterate over colon-separated list
|
||||
///
|
||||
/// @note Environment variables must not be modified during iteration.
|
||||
///
|
||||
/// @param[in] val Value of the environment variable to iterate over.
|
||||
/// @param[in] iter Pointer used for iteration. Must be NULL on first
|
||||
/// iteration.
|
||||
/// @param[out] dir Location where pointer to the start of the current
|
||||
/// directory name should be saved. May be set to NULL.
|
||||
/// @param[out] len Location where current directory length should be saved.
|
||||
///
|
||||
/// @return Next iter argument value or NULL when iteration should stop.
|
||||
const void *vim_colon_env_iter(const char *const val,
|
||||
const void *const iter,
|
||||
const char **const dir,
|
||||
size_t *const len)
|
||||
FUNC_ATTR_NONNULL_ARG(1, 3, 4) FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
const char *varval = (const char *) iter;
|
||||
if (varval == NULL) {
|
||||
varval = val;
|
||||
}
|
||||
*dir = varval;
|
||||
const char *const dirend = strchr(varval, ':');
|
||||
if (dirend == NULL) {
|
||||
*len = strlen(varval);
|
||||
return NULL;
|
||||
} else {
|
||||
*len = (size_t) (dirend - varval);
|
||||
return dirend + 1;
|
||||
}
|
||||
}
|
||||
|
||||
/// Iterate over colon-separated list in reverse order
|
||||
///
|
||||
/// @note Environment variables must not be modified during iteration.
|
||||
///
|
||||
/// @param[in] val Value of the environment variable to iterate over.
|
||||
/// @param[in] iter Pointer used for iteration. Must be NULL on first
|
||||
/// iteration.
|
||||
/// @param[out] dir Location where pointer to the start of the current
|
||||
/// directory name should be saved. May be set to NULL.
|
||||
/// @param[out] len Location where current directory length should be saved.
|
||||
///
|
||||
/// @return Next iter argument value or NULL when iteration should stop.
|
||||
const void *vim_colon_env_iter_rev(const char *const val,
|
||||
const void *const iter,
|
||||
const char **const dir,
|
||||
size_t *const len)
|
||||
FUNC_ATTR_NONNULL_ARG(1, 3, 4) FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
const char *varend = (const char *) iter;
|
||||
if (varend == NULL) {
|
||||
varend = val + strlen(val) - 1;
|
||||
}
|
||||
const size_t varlen = (size_t) (varend - val) + 1;
|
||||
const char *const colon = xmemrchr(val, ':', varlen);
|
||||
if (colon == NULL) {
|
||||
*len = varlen;
|
||||
*dir = val;
|
||||
return NULL;
|
||||
} else {
|
||||
*dir = colon + 1;
|
||||
*len = (size_t) (varend - colon);
|
||||
return colon - 1;
|
||||
}
|
||||
}
|
||||
|
||||
/// Vim's version of getenv().
|
||||
/// Special handling of $HOME, $VIM and $VIMRUNTIME, allowing the user to
|
||||
/// override the vim runtime directory at runtime. Also does ACP to 'enc'
|
||||
|
@@ -366,11 +366,17 @@ int os_mkdir_recurse(const char *const dir, int32_t mode,
|
||||
}
|
||||
while (e != real_end) {
|
||||
if (e > past_head) {
|
||||
*e = '/';
|
||||
*e = PATHSEP;
|
||||
} else {
|
||||
*past_head = past_head_save;
|
||||
}
|
||||
e += strlen(e);
|
||||
const size_t component_len = strlen(e);
|
||||
e += component_len;
|
||||
if (e == real_end
|
||||
&& memcnt(e - component_len, PATHSEP, component_len) == component_len) {
|
||||
// Path ends with something like "////". Ignore this.
|
||||
break;
|
||||
}
|
||||
int ret;
|
||||
if ((ret = os_mkdir(curdir, mode)) != 0) {
|
||||
*failed_dir = curdir;
|
||||
|
@@ -5,6 +5,7 @@
|
||||
#include <uv.h>
|
||||
|
||||
#include "nvim/os/fs_defs.h"
|
||||
#include "nvim/os/stdpaths_defs.h"
|
||||
#include "nvim/vim.h"
|
||||
|
||||
#ifdef INCLUDE_GENERATED_DECLARATIONS
|
||||
@@ -12,6 +13,7 @@
|
||||
# include "os/mem.h.generated.h"
|
||||
# include "os/env.h.generated.h"
|
||||
# include "os/users.h.generated.h"
|
||||
# include "os/stdpaths.h.generated.h"
|
||||
#endif
|
||||
|
||||
#endif // NVIM_OS_OS_H
|
||||
|
108
src/nvim/os/stdpaths.c
Normal file
108
src/nvim/os/stdpaths.c
Normal file
@@ -0,0 +1,108 @@
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "nvim/os/stdpaths_defs.h"
|
||||
#include "nvim/os/os.h"
|
||||
#include "nvim/path.h"
|
||||
#include "nvim/memory.h"
|
||||
#include "nvim/ascii.h"
|
||||
|
||||
/// Names of the environment variables, mapped to XDGVarType values
|
||||
static const char *xdg_env_vars[] = {
|
||||
[kXDGConfigHome] = "XDG_CONFIG_HOME",
|
||||
[kXDGDataHome] = "XDG_DATA_HOME",
|
||||
[kXDGCacheHome] = "XDG_CACHE_HOME",
|
||||
[kXDGRuntimeDir] = "XDG_RUNTIME_DIR",
|
||||
[kXDGConfigDirs] = "XDG_CONFIG_DIRS",
|
||||
[kXDGDataDirs] = "XDG_DATA_DIRS",
|
||||
};
|
||||
|
||||
/// Defaults for XDGVarType values
|
||||
///
|
||||
/// Used in case environment variables contain nothing. Need to be expanded.
|
||||
static const char *const xdg_defaults[] = {
|
||||
#ifdef WIN32
|
||||
// Windows
|
||||
[kXDGConfigHome] = "$LOCALAPPDATA\\nvim\\config",
|
||||
[kXDGDataHome] = "$LOCALAPPDATA\\nvim\\data",
|
||||
[kXDGCacheHome] = "$LOCALAPPDATA\\nvim\\cache",
|
||||
[kXDGRuntimeDir] = "",
|
||||
[kXDGConfigDirs] = NULL,
|
||||
[kXDGDataDirs] = NULL,
|
||||
#else
|
||||
// Linux, BSD, CYGWIN, Apple
|
||||
[kXDGConfigHome] = "~/.config",
|
||||
[kXDGDataHome] = "~/.local/share",
|
||||
[kXDGCacheHome] = "~/.cache",
|
||||
[kXDGRuntimeDir] = "",
|
||||
[kXDGConfigDirs] = "/etc/xdg/",
|
||||
[kXDGDataDirs] = "/usr/local/share/:/usr/share/",
|
||||
#endif
|
||||
};
|
||||
|
||||
/// Return XDG variable value
|
||||
///
|
||||
/// @param[in] idx XDG variable to use.
|
||||
///
|
||||
/// @return [allocated] variable value.
|
||||
char *stdpaths_get_xdg_var(const XDGVarType idx)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
const char *const env = xdg_env_vars[idx];
|
||||
const char *const fallback = xdg_defaults[idx];
|
||||
|
||||
const char *const env_val = os_getenv(env);
|
||||
char *ret = NULL;
|
||||
if (env_val != NULL) {
|
||||
ret = xstrdup(env_val);
|
||||
} else if (fallback) {
|
||||
ret = (char *) expand_env_save((char_u *)fallback);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// Return nvim-specific XDG directory subpath
|
||||
///
|
||||
/// @param[in] idx XDG directory to use.
|
||||
///
|
||||
/// @return [allocated] `{xdg_directory}/nvim`
|
||||
static char *get_xdg_home(const XDGVarType idx)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
char *dir = stdpaths_get_xdg_var(idx);
|
||||
if (dir) {
|
||||
dir = concat_fnames_realloc(dir, "nvim", true);
|
||||
}
|
||||
return dir;
|
||||
}
|
||||
|
||||
/// Return subpath of $XDG_CONFIG_HOME
|
||||
///
|
||||
/// @param[in] fname New component of the path.
|
||||
///
|
||||
/// @return [allocated] `$XDG_CONFIG_HOME/nvim/{fname}`
|
||||
char *stdpaths_user_conf_subpath(const char *fname)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
return concat_fnames_realloc(get_xdg_home(kXDGConfigHome), fname, true);
|
||||
}
|
||||
|
||||
/// Return subpath of $XDG_DATA_HOME
|
||||
///
|
||||
/// @param[in] fname New component of the path.
|
||||
/// @param[in] trailing_pathseps Amount of trailing path separators to add.
|
||||
///
|
||||
/// @return [allocated] `$XDG_DATA_HOME/nvim/{fname}`
|
||||
char *stdpaths_user_data_subpath(const char *fname,
|
||||
const size_t trailing_pathseps)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
char *ret = concat_fnames_realloc(get_xdg_home(kXDGDataHome), fname, true);
|
||||
if (trailing_pathseps) {
|
||||
const size_t len = strlen(ret);
|
||||
ret = xrealloc(ret, len + trailing_pathseps + 1);
|
||||
memset(ret + len, PATHSEP, trailing_pathseps);
|
||||
ret[len + trailing_pathseps] = NUL;
|
||||
}
|
||||
return ret;
|
||||
}
|
14
src/nvim/os/stdpaths_defs.h
Normal file
14
src/nvim/os/stdpaths_defs.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef NVIM_OS_STDPATHS_DEFS_H
|
||||
#define NVIM_OS_STDPATHS_DEFS_H
|
||||
|
||||
/// List of possible XDG variables
|
||||
typedef enum {
|
||||
kXDGConfigHome, ///< XDG_CONFIG_HOME
|
||||
kXDGDataHome, ///< XDG_DATA_HOME
|
||||
kXDGCacheHome, ///< XDG_CACHE_HOME
|
||||
kXDGRuntimeDir, ///< XDG_RUNTIME_DIR
|
||||
kXDGConfigDirs, ///< XDG_CONFIG_DIRS
|
||||
kXDGDataDirs, ///< XDG_DATA_DIRS
|
||||
} XDGVarType;
|
||||
|
||||
#endif // NVIM_OS_STDPATHS_DEFS_H
|
@@ -20,7 +20,7 @@
|
||||
|
||||
// Unix system-dependent file names
|
||||
#ifndef SYS_VIMRC_FILE
|
||||
# define SYS_VIMRC_FILE "$VIM/nvimrc"
|
||||
# define SYS_VIMRC_FILE "$VIM/sysinit.vim"
|
||||
#endif
|
||||
#ifndef DFLT_HELPFILE
|
||||
# define DFLT_HELPFILE "$VIMRUNTIME/doc/help.txt"
|
||||
@@ -28,46 +28,11 @@
|
||||
#ifndef SYNTAX_FNAME
|
||||
# define SYNTAX_FNAME "$VIMRUNTIME/syntax/%s.vim"
|
||||
#endif
|
||||
#ifndef USR_EXRC_FILE
|
||||
# define USR_EXRC_FILE "~/.exrc"
|
||||
#endif
|
||||
#ifndef USR_VIMRC_FILE
|
||||
# define USR_VIMRC_FILE "~/.nvimrc"
|
||||
#endif
|
||||
#ifndef USR_VIMRC_FILE2
|
||||
# define USR_VIMRC_FILE2 "~/.nvim/nvimrc"
|
||||
#endif
|
||||
#ifndef EXRC_FILE
|
||||
# define EXRC_FILE ".exrc"
|
||||
#endif
|
||||
#ifndef VIMRC_FILE
|
||||
# define VIMRC_FILE ".nvimrc"
|
||||
#endif
|
||||
#ifndef SHADA_FILE
|
||||
# define SHADA_FILE "~/.nvim/shada/main.shada"
|
||||
#endif
|
||||
|
||||
// Default for 'backupdir'.
|
||||
#ifndef DFLT_BDIR
|
||||
# define DFLT_BDIR ".,~/tmp,~/"
|
||||
#endif
|
||||
|
||||
// Default for 'directory'.
|
||||
#ifndef DFLT_DIR
|
||||
# define DFLT_DIR ".,~/tmp,/var/tmp,/tmp"
|
||||
#endif
|
||||
|
||||
// Default for 'viewdir'.
|
||||
#ifndef DFLT_VDIR
|
||||
# define DFLT_VDIR "~/.nvim/view"
|
||||
#endif
|
||||
|
||||
#ifdef RUNTIME_GLOBAL
|
||||
# define DFLT_RUNTIMEPATH "~/.nvim," RUNTIME_GLOBAL ",$VIMRUNTIME," \
|
||||
RUNTIME_GLOBAL "/after,~/.nvim/after"
|
||||
#else
|
||||
# define DFLT_RUNTIMEPATH \
|
||||
"~/.nvim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,~/.nvim/after"
|
||||
#endif
|
||||
|
||||
#endif // NVIM_OS_UNIX_DEFS_H
|
||||
|
@@ -7,13 +7,9 @@
|
||||
#define TEMP_FILE_PATH_MAXLEN _MAX_PATH
|
||||
|
||||
// Defines needed to fix the build on Windows:
|
||||
// - USR_EXRC_FILE
|
||||
// - USR_VIMRC_FILE
|
||||
// - SHADA_FILE
|
||||
// - DFLT_DIR
|
||||
// - DFLT_BDIR
|
||||
// - DFLT_VDIR
|
||||
// - DFLT_RUNTIMEPATH
|
||||
// - EXRC_FILE
|
||||
// - VIMRC_FILE
|
||||
// - SYNTAX_FNAME
|
||||
|
@@ -329,6 +329,31 @@ int vim_fnamencmp(char_u *x, char_u *y, size_t len)
|
||||
#endif
|
||||
}
|
||||
|
||||
/// Append fname2 to fname1
|
||||
///
|
||||
/// @param[in] fname1 First fname to append to.
|
||||
/// @param[in] len1 Length of fname1.
|
||||
/// @param[in] fname2 Secord part of the file name.
|
||||
/// @param[in] len2 Length of fname2.
|
||||
/// @param[in] sep If true and fname1 does not end with a path separator,
|
||||
/// add a path separator before fname2.
|
||||
///
|
||||
/// @return fname1
|
||||
static inline char *do_concat_fnames(char *fname1, const size_t len1,
|
||||
const char *fname2, const size_t len2,
|
||||
const bool sep)
|
||||
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET
|
||||
{
|
||||
if (sep && *fname1 && !after_pathsep(fname1, fname1 + len1)) {
|
||||
fname1[len1] = PATHSEP;
|
||||
memmove(fname1 + len1 + 1, fname2, len2 + 1);
|
||||
} else {
|
||||
memmove(fname1 + len1, fname2, len2 + 1);
|
||||
}
|
||||
|
||||
return fname1;
|
||||
}
|
||||
|
||||
/// Concatenate file names fname1 and fname2 into allocated memory.
|
||||
///
|
||||
/// Only add a '/' or '\\' when 'sep' is true and it is necessary.
|
||||
@@ -339,17 +364,33 @@ int vim_fnamencmp(char_u *x, char_u *y, size_t len)
|
||||
/// if necessary
|
||||
/// @return [allocated] Concatenation of fname1 and fname2.
|
||||
char *concat_fnames(const char *fname1, const char *fname2, bool sep)
|
||||
FUNC_ATTR_NONNULL_ARG(1, 2) FUNC_ATTR_NONNULL_RET
|
||||
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET
|
||||
{
|
||||
char *dest = xmalloc(strlen(fname1) + strlen(fname2) + 3);
|
||||
const size_t len1 = strlen(fname1);
|
||||
const size_t len2 = strlen(fname2);
|
||||
char *dest = xmalloc(len1 + len2 + 3);
|
||||
memmove(dest, fname1, len1 + 1);
|
||||
return do_concat_fnames(dest, len1, fname2, len2, sep);
|
||||
}
|
||||
|
||||
strcpy(dest, fname1);
|
||||
if (sep) {
|
||||
add_pathsep(dest);
|
||||
}
|
||||
strcat(dest, fname2);
|
||||
|
||||
return dest;
|
||||
/// Concatenate file names fname1 and fname2
|
||||
///
|
||||
/// Like concat_fnames(), but in place of allocating new memory it reallocates
|
||||
/// fname1. For this reason fname1 must be allocated with xmalloc, and can no
|
||||
/// longer be used after running concat_fnames_realloc.
|
||||
///
|
||||
/// @param fname1 is the first part of the path or filename
|
||||
/// @param fname2 is the second half of the path or filename
|
||||
/// @param sep is a flag to indicate a path separator should be added
|
||||
/// if necessary
|
||||
/// @return [allocated] Concatenation of fname1 and fname2.
|
||||
char *concat_fnames_realloc(char *fname1, const char *fname2, bool sep)
|
||||
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET
|
||||
{
|
||||
const size_t len1 = strlen(fname1);
|
||||
const size_t len2 = strlen(fname2);
|
||||
return do_concat_fnames(xrealloc(fname1, len1 + len2 + 3), len1,
|
||||
fname2, len2, sep);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -1583,6 +1583,20 @@ shada_read_main_cycle_end:
|
||||
kh_dealloc(strset, &oldfiles_set);
|
||||
}
|
||||
|
||||
/// Default shada file location: cached path
|
||||
static char *default_shada_file = NULL;
|
||||
|
||||
/// Get the default ShaDa file
|
||||
static const char *shada_get_default_file(void)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
if (default_shada_file == NULL) {
|
||||
char *shada_dir = stdpaths_user_data_subpath("shada", 0);
|
||||
default_shada_file = concat_fnames_realloc(shada_dir, "main.shada", true);
|
||||
}
|
||||
return default_shada_file;
|
||||
}
|
||||
|
||||
/// Get the ShaDa file name to use
|
||||
///
|
||||
/// If "file" is given and not empty, use it (has already been expanded by
|
||||
@@ -1600,22 +1614,7 @@ static char *shada_filename(const char *file)
|
||||
file = used_shada_file;
|
||||
} else {
|
||||
if ((file = find_shada_parameter('n')) == NULL || *file == NUL) {
|
||||
#ifdef SHADA_FILE2
|
||||
// don't use $HOME when not defined (turned into "c:/"!).
|
||||
if (os_getenv((char_u *)"HOME") == NULL) {
|
||||
// don't use $VIM when not available.
|
||||
expand_env((char_u *)"$VIM", NameBuff, MAXPATHL);
|
||||
if (STRCMP("$VIM", NameBuff) != 0) { // $VIM was expanded
|
||||
file = SHADA_FILE2;
|
||||
} else {
|
||||
file = SHADA_FILE;
|
||||
}
|
||||
} else {
|
||||
#endif
|
||||
file = SHADA_FILE;
|
||||
#ifdef SHADA_FILE2
|
||||
}
|
||||
#endif
|
||||
file = shada_get_default_file();
|
||||
}
|
||||
// XXX It used to be one level lower, so that whatever is in
|
||||
// `used_shada_file` was expanded. I intentionally moved it here
|
||||
|
@@ -4,3 +4,6 @@ set shell=sh
|
||||
|
||||
" Don't depend on system locale, always use utf-8
|
||||
set encoding=utf-8
|
||||
|
||||
" Use safer defaults for various directories
|
||||
set backupdir=. directory=. undodir=. viewdir=.
|
||||
|
@@ -1067,31 +1067,6 @@ void list_version(void)
|
||||
version_msg(SYS_VIMRC_FILE);
|
||||
version_msg("\"\n");
|
||||
#endif // ifdef SYS_VIMRC_FILE
|
||||
#ifdef USR_VIMRC_FILE
|
||||
version_msg(_(" user vimrc file: \""));
|
||||
version_msg(USR_VIMRC_FILE);
|
||||
version_msg("\"\n");
|
||||
#endif // ifdef USR_VIMRC_FILE
|
||||
#ifdef USR_VIMRC_FILE2
|
||||
version_msg(_(" 2nd user vimrc file: \""));
|
||||
version_msg(USR_VIMRC_FILE2);
|
||||
version_msg("\"\n");
|
||||
#endif // ifdef USR_VIMRC_FILE2
|
||||
#ifdef USR_VIMRC_FILE3
|
||||
version_msg(_(" 3rd user vimrc file: \""));
|
||||
version_msg(USR_VIMRC_FILE3);
|
||||
version_msg("\"\n");
|
||||
#endif // ifdef USR_VIMRC_FILE3
|
||||
#ifdef USR_EXRC_FILE
|
||||
version_msg(_(" user exrc file: \""));
|
||||
version_msg(USR_EXRC_FILE);
|
||||
version_msg("\"\n");
|
||||
#endif // ifdef USR_EXRC_FILE
|
||||
#ifdef USR_EXRC_FILE2
|
||||
version_msg(_(" 2nd user exrc file: \""));
|
||||
version_msg(USR_EXRC_FILE2);
|
||||
version_msg("\"\n");
|
||||
#endif // ifdef USR_EXRC_FILE2
|
||||
#ifdef HAVE_PATHDEF
|
||||
|
||||
if (*default_vim_dir != NUL) {
|
||||
|
@@ -118,7 +118,7 @@ describe('server -> client', function()
|
||||
|
||||
describe('when the client is a recursive vim instance', function()
|
||||
before_each(function()
|
||||
nvim('command', "let vim = rpcstart('"..nvim_prog.."', ['-u', 'NONE', '--embed'])")
|
||||
nvim('command', "let vim = rpcstart('"..nvim_prog.."', ['-u', 'NONE', '-i', 'NONE', '--cmd', 'set noswapfile', '--embed'])")
|
||||
neq(0, eval('vim'))
|
||||
end)
|
||||
|
||||
|
@@ -29,9 +29,11 @@ describe(':preserve', function()
|
||||
|
||||
it("saves to custom 'directory' and (R)ecovers (issue #1836)", function()
|
||||
local testfile = 'testfile_recover_spec'
|
||||
-- Note: `set swapfile` *must* go after `set directory`: otherwise it may
|
||||
-- attempt to create a swapfile in different directory.
|
||||
local init = [[
|
||||
set swapfile fileformat=unix undolevels=-1
|
||||
set directory^=]]..swapdir..[[//
|
||||
set swapfile fileformat=unix undolevels=-1
|
||||
]]
|
||||
|
||||
source(init)
|
||||
@@ -47,7 +49,7 @@ describe(':preserve', function()
|
||||
|
||||
--TODO(justinmk): this is an ugly hack to force `helpers` to support
|
||||
--multiple sessions.
|
||||
local nvim2 = helpers.spawn({helpers.nvim_prog, '-u', 'NONE', '--embed'},
|
||||
local nvim2 = helpers.spawn({helpers.nvim_prog, '-u', 'NONE', '-i', 'NONE', '--embed'},
|
||||
true)
|
||||
helpers.set_session(nvim2)
|
||||
|
||||
|
@@ -13,7 +13,7 @@ describe(':wshada', function()
|
||||
end
|
||||
|
||||
-- Override the default session because we need 'swapfile' for these tests.
|
||||
local session = spawn({nvim_prog, '-u', 'NONE', '--embed',
|
||||
local session = spawn({nvim_prog, '-u', 'NONE', '-i', '/dev/null', '--embed',
|
||||
'--cmd', 'set swapfile'})
|
||||
set_session(session)
|
||||
|
||||
|
@@ -7,7 +7,7 @@ local Session = require('nvim.session')
|
||||
|
||||
local nvim_prog = os.getenv('NVIM_PROG') or 'build/bin/nvim'
|
||||
local nvim_argv = {nvim_prog, '-u', 'NONE', '-i', 'NONE', '-N',
|
||||
'--cmd', 'set shortmess+=I background=light noswapfile noautoindent laststatus=1 encoding=utf-8',
|
||||
'--cmd', 'set shortmess+=I background=light noswapfile noautoindent laststatus=1 encoding=utf-8 undodir=. directory=. viewdir=. backupdir=.',
|
||||
'--embed'}
|
||||
|
||||
-- Formulate a path to the directory containing nvim. We use this to
|
||||
|
@@ -18,7 +18,7 @@ describe('72', function()
|
||||
|
||||
-- Test 'undofile': first a simple one-line change.
|
||||
execute('set visualbell')
|
||||
execute('set ul=100 undofile nomore')
|
||||
execute('set ul=100 undofile undodir=. nomore')
|
||||
execute('e! Xtestfile')
|
||||
feed('ggdGithis is one line<esc>:set ul=100<cr>')
|
||||
execute('s/one/ONE/')
|
||||
|
@@ -17,7 +17,7 @@ describe('78', function()
|
||||
|
||||
it('is working', function()
|
||||
source([=[
|
||||
set swapfile fileformat=unix undolevels=-1
|
||||
set directory=. swapfile fileformat=unix undolevels=-1
|
||||
e! Xtest
|
||||
let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
|
||||
let i = 1
|
||||
|
@@ -11,7 +11,7 @@ describe('tui', function()
|
||||
|
||||
before_each(function()
|
||||
helpers.clear()
|
||||
screen = thelpers.screen_setup(0, '["'..helpers.nvim_prog..'", "-u", "NONE", "--cmd", "set noswapfile"]')
|
||||
screen = thelpers.screen_setup(0, '["'..helpers.nvim_prog..'", "-u", "NONE", "-i", "NONE", "--cmd", "set noswapfile"]')
|
||||
screen.timeout = 30000 -- pasting can be really slow in the TUI
|
||||
screen:expect([[
|
||||
{1: } |
|
||||
|
@@ -125,7 +125,7 @@ end
|
||||
|
||||
do
|
||||
local spawn, nvim_prog = helpers.spawn, helpers.nvim_prog
|
||||
local session = spawn({nvim_prog, '-u', 'NONE', '-N', '--embed'})
|
||||
local session = spawn({nvim_prog, '-u', 'NONE', '-i', 'NONE', '-N', '--embed'})
|
||||
local status, rv = session:request('vim_get_color_map')
|
||||
if not status then
|
||||
print('failed to get color map')
|
||||
|
@@ -564,6 +564,28 @@ describe('fs function', function()
|
||||
eq(false, os_isdir('unit-test-directory/new-dir-recurse'))
|
||||
end)
|
||||
|
||||
it('succeeds to create a directory ending with ///', function()
|
||||
local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR
|
||||
local ret, failed_str = os_mkdir_recurse(
|
||||
'unit-test-directory/new-dir-recurse///', mode)
|
||||
eq(0, ret)
|
||||
eq(nil, failed_str)
|
||||
eq(true, os_isdir('unit-test-directory/new-dir-recurse'))
|
||||
lfs.rmdir('unit-test-directory/new-dir-recurse')
|
||||
eq(false, os_isdir('unit-test-directory/new-dir-recurse'))
|
||||
end)
|
||||
|
||||
it('succeeds to create a directory ending with /', function()
|
||||
local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR
|
||||
local ret, failed_str = os_mkdir_recurse(
|
||||
'unit-test-directory/new-dir-recurse/', mode)
|
||||
eq(0, ret)
|
||||
eq(nil, failed_str)
|
||||
eq(true, os_isdir('unit-test-directory/new-dir-recurse'))
|
||||
lfs.rmdir('unit-test-directory/new-dir-recurse')
|
||||
eq(false, os_isdir('unit-test-directory/new-dir-recurse'))
|
||||
end)
|
||||
|
||||
it('succeeds to create a directory tree', function()
|
||||
local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR
|
||||
local ret, failed_str = os_mkdir_recurse(
|
||||
|
Reference in New Issue
Block a user