-
Notifications
You must be signed in to change notification settings - Fork 116
Command Specification
Linwei edited this page Nov 28, 2022
·
12 revisions
:AsyncRun[!] [options] {cmd} ...Macro variables in the parameters and -cwd= option will be expanded before executing:
$(VIM_FILEPATH) - File name of current buffer with full path
$(VIM_FILENAME) - File name of current buffer without path
$(VIM_FILEDIR) - Full path of current buffer without the file name
$(VIM_FILEEXT) - File extension of current buffer
$(VIM_FILENOEXT) - File name of current buffer without path and extension
$(VIM_PATHNOEXT) - Current file name with full path but without extension
$(VIM_CWD) - Current directory
$(VIM_RELDIR) - File path relativize to current directory
$(VIM_RELNAME) - File name relativize to current directory
$(VIM_ROOT) - Project root directory
$(VIM_CWORD) - Current word under cursor
$(VIM_CFILE) - Current filename under cursor
$(VIM_GUI) - Is running under gui ?
$(VIM_VERSION) - Value of v:version
$(VIM_COLUMNS) - How many columns in vim's screen
$(VIM_LINES) - How many lines in vim's screen
$(VIM_SVRNAME) - Value of v:servername for +clientserver usage
$(VIM_PRONAME) - Name of current project root directory
$(VIM_DIRNAME) - Name of current directory
Vim's filename modifiers are also accepted:
%:p - File name of current buffer with full path
%:t - File name of current buffer without path
%:p:h - File path of current buffer without file name
%:e - File extension of current buffer
%:t:r - File name of current buffer without path and extension
% - File name relativize to current directory
%:h:. - File path relativize to current directory
<cwd> - Current directory
<cword> - Current word under cursor
<cfile> - Current file name under cursor
But modifiers are not recommended, because it is evaluated before :AsyncRun command starts, so if there is a -cwd=xxx option, some modifiers may yield an out-dated result for the old working directory.
| Option | Default Value | Description |
|---|---|---|
-mode=? |
"async" | specify how to run the command as -mode=?, available modes are "async" (default), "bang" (with ! command) and "terminal" (in internal terminal), see running modes for details. |
-cwd=? |
unset |
initial directory (use current directory if unset), for example use -cwd=<root> to run commands in project root directory, or -cwd=$(VIM_FILEDIR) to run commands in current buffer's parent directory. |
-save=? |
0 | use -save=1 to save current file, -save=2 to save all modified files before executing. |
-program=? |
unset |
set to make to use &makeprg, grep to use &grepprt and wsl to execute commands in WSL (windows 10), see command modifiers. |
-post=? |
unset |
vimscript to exec after job finished, spaces must be escaped to '\ ' |
| Option | Default Value | Description |
|---|---|---|
-auto=? |
unset |
event name to trigger QuickFixCmdPre/QuickFixCmdPost [name] autocmd. |
-raw |
unset |
use raw output if provided, and &errorformat will be ignored. |
-strip |
unset |
remove the heading/trailing messages if provided (omit command and "[Finished in ...]" message). |
-errorformat=? |
unset |
errorformat for error matching, if it is unprovided, use current &errorformat value. Beware that % needs to be escaped into \%. |
-silent |
unset |
provide -silent to prevent open quickfix window (will override g:asyncrun_open temporarily) |
-scroll=? |
unset |
set to 0 to prevent quickfix auto-scrolling |
-once=? |
unset |
set to 1 to buffer output and flush when job is finished, useful when there are multi-line patterns in your errorformat
|
-encoding=? |
unset |
specify command encoding independently (overshadow g:asyncrun_encs) |
| Option | Default Value | Description |
|---|---|---|
-pos=? |
"bottom" | When using internal terminal with -mode=term, -pos is used to specify where to split the terminal window, it can be one of "tab", "TAB", "curwin", "top", "bottom", "left", "right" and "external". And you can customize new runners and pass runner's name to -pos option. |
-rows=num |
0 | When using a horizontal split terminal, this value represents the height of terminal window. |
-cols=num |
0 | When using a vertical split terminal, this value represents the width of terminal window. |
-focus=? |
1 | set to 0 to prevent focus changing when -mode=term
|
-reuse=? |
1 | set to 0 to prevent reusing previous terminal window |
-hidden=? |
unset |
set to 1 to init bufhidden to hide for terminal buffer and set to 0 to init bufhidden to delete
|
-listed |
1 | when using -mode=term, set to 0 to hide the terminal in the buffer list |
-close |
unset |
when using -mode=term, close the terminal automatically when terminal process is finished |
| Option | Default Value | Description |
|---|---|---|
-option=? |
empty |
arbitrary string can be used to pass additional information to the user-defined runner, eg. :AsyncRun -option=xxx ...
|
call asyncrun#run('<bang>', opts, command)arguments:
-
'<bang>': either'!'or an empty string''. - opts: a dictionary of options, like
{'post': 'echo 123'} - command: a string of shell command.
examples:
call asyncrun#run('', {}, 'echo "haha"')
call asyncrun#run('', {'mode':'terminal', 'pos':'TAB'}, 'ls -la')The function form can be used to construct complex command.