PageRenderTime 12ms CodeModel.GetById 2ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/vim72/doc/quickfix.txt

https://bitbucket.org/serge.smolau/vim
Plain Text | 1443 lines | 1160 code | 283 blank | 0 comment | 0 complexity | ee533d3bbc4d3c957da7db0946bcc837 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

   1*quickfix.txt*  For Vim version 7.2.  Last change: 2009 May 24
   2
   3
   4		  VIM REFERENCE MANUAL    by Bram Moolenaar
   5
   6
   7This subject is introduced in section |30.1| of the user manual.
   8
   91. Using QuickFix commands		|quickfix|
  102. The error window			|quickfix-window|
  113. Using more than one list of errors	|quickfix-error-lists|
  124. Using :make				|:make_makeprg|
  135. Using :grep				|grep|
  146. Selecting a compiler			|compiler-select|
  157. The error format			|error-file-format|
  168. The directory stack			|quickfix-directory-stack|
  179. Specific error file formats		|errorformats|
  18
  19{Vi does not have any of these commands}
  20
  21The quickfix commands are not available when the |+quickfix| feature was
  22disabled at compile time.
  23
  24=============================================================================
  251. Using QuickFix commands			*quickfix* *Quickfix* *E42*
  26
  27Vim has a special mode to speedup the edit-compile-edit cycle.  This is
  28inspired by the quickfix option of the Manx's Aztec C compiler on the Amiga.
  29The idea is to save the error messages from the compiler in a file and use Vim
  30to jump to the errors one by one.  You can examine each problem and fix it,
  31without having to remember all the error messages.
  32
  33In Vim the quickfix commands are used more generally to find a list of
  34positions in files.  For example, |:vimgrep| finds pattern matches.  You can
  35use the positions in a script with the |getqflist()| function.  Thus you can
  36do a lot more than the edit/compile/fix cycle!
  37
  38If you are using Manx's Aztec C compiler on the Amiga look here for how to use
  39it with Vim: |quickfix-manx|.  If you are using another compiler you should
  40save the error messages in a file and start Vim with "vim -q filename".  An
  41easy way to do this is with the |:make| command (see below).  The
  42'errorformat' option should be set to match the error messages from your
  43compiler (see |errorformat| below).
  44
  45						*location-list* *E776*
  46A location list is similar to a quickfix list and contains a list of positions
  47in files.  A location list is associated with a window and each window can
  48have a separate location list.  A location list can be associated with only
  49one window.  The location list is independent of the quickfix list.
  50
  51When a window with a location list is split, the new window gets a copy of the
  52location list.  When there are no references to a location list, the location
  53list is destroyed.
  54
  55The following quickfix commands can be used.  The location list commands are
  56similar to the quickfix commands, replacing the 'c' prefix in the quickfix
  57command with 'l'.
  58
  59							*:cc*
  60:cc[!] [nr]		Display error [nr].  If [nr] is omitted, the same
  61			error is displayed again.  Without [!] this doesn't
  62			work when jumping to another buffer, the current buffer
  63			has been changed, there is the only window for the
  64			buffer and both 'hidden' and 'autowrite' are off.
  65			When jumping to another buffer with [!] any changes to
  66			the current buffer are lost, unless 'hidden' is set or
  67			there is another window for this buffer.
  68			The 'switchbuf' settings are respected when jumping
  69			to a buffer.
  70
  71							*:ll*
  72:ll[!] [nr]		Same as ":cc", except the location list for the
  73			current window is used instead of the quickfix list.
  74
  75							*:cn* *:cnext* *E553*
  76:[count]cn[ext][!]	Display the [count] next error in the list that
  77			includes a file name.  If there are no file names at
  78			all, go to the [count] next error.  See |:cc| for
  79			[!] and 'switchbuf'.
  80
  81							*:lne* *:lnext*
  82:[count]lne[xt][!]	Same as ":cnext", except the location list for the
  83			current window is used instead of the quickfix list.
  84
  85:[count]cN[ext][!]			*:cp* *:cprevious* *:cN* *:cNext*
  86:[count]cp[revious][!]	Display the [count] previous error in the list that
  87			includes a file name.  If there are no file names at
  88			all, go to the [count] previous error.  See |:cc| for
  89			[!] and 'switchbuf'.
  90
  91
  92:[count]lN[ext][!]			*:lp* *:lprevious* *:lN* *:lNext*
  93:[count]lp[revious][!]	Same as ":cNext" and ":cprevious", except the location
  94			list for the current window is used instead of the
  95			quickfix list.
  96
  97							*:cnf* *:cnfile*
  98:[count]cnf[ile][!]	Display the first error in the [count] next file in
  99			the list that includes a file name.  If there are no
 100			file names at all or if there is no next file, go to
 101			the [count] next error.  See |:cc| for [!] and
 102			'switchbuf'.
 103
 104							*:lnf* *:lnfile*
 105:[count]lnf[ile][!]	Same as ":cnfile", except the location list for the
 106			current window is used instead of the quickfix list.
 107
 108:[count]cNf[ile][!]			*:cpf* *:cpfile* *:cNf* *:cNfile*
 109:[count]cpf[ile][!]	Display the last error in the [count] previous file in
 110			the list that includes a file name.  If there are no
 111			file names at all or if there is no next file, go to
 112			the [count] previous error.  See |:cc| for [!] and
 113			'switchbuf'.
 114
 115
 116:[count]lNf[ile][!]			*:lpf* *:lpfile* *:lNf* *:lNfile*
 117:[count]lpf[ile][!]	Same as ":cNfile" and ":cpfile", except the location
 118			list for the current window is used instead of the
 119			quickfix list.
 120
 121							*:crewind* *:cr*
 122:cr[ewind][!] [nr]	Display error [nr].  If [nr] is omitted, the FIRST
 123			error is displayed.  See |:cc|.
 124
 125							*:lrewind* *:lr*
 126:lr[ewind][!] [nr]	Same as ":crewind", except the location list for the
 127			current window is used instead of the quickfix list.
 128
 129							*:cfirst* *:cfir*
 130:cfir[st][!] [nr]	Same as ":crewind".
 131
 132							*:lfirst* *:lfir*
 133:lfir[st][!] [nr]	Same as ":lrewind".
 134
 135							*:clast* *:cla*
 136:cla[st][!] [nr]	Display error [nr].  If [nr] is omitted, the LAST
 137			error is displayed.  See |:cc|.
 138
 139							*:llast* *:lla*
 140:lla[st][!] [nr]	Same as ":clast", except the location list for the
 141			current window is used instead of the quickfix list.
 142
 143							*:cq* *:cquit*
 144:cq[uit][!]		Quit Vim with an error code, so that the compiler
 145			will not compile the same file again.
 146			WARNING: All changes in files are lost!  Also when the
 147			[!] is not used.  It works like ":qall!" |:qall|,
 148			except that Vim returns a non-zero exit code.
 149
 150							*:cf* *:cfile*
 151:cf[ile][!] [errorfile]	Read the error file and jump to the first error.
 152			This is done automatically when Vim is started with
 153			the -q option.  You can use this command when you
 154			keep Vim running while compiling.  If you give the
 155			name of the errorfile, the 'errorfile' option will
 156			be set to [errorfile].  See |:cc| for [!].
 157
 158							*:lf* *:lfile*
 159:lf[ile][!] [errorfile]	Same as ":cfile", except the location list for the
 160			current window is used instead of the quickfix list.
 161			You can not use the -q command-line option to set
 162			the location list.
 163
 164
 165:cg[etfile] [errorfile]					*:cg* *:cgetfile*
 166			Read the error file.  Just like ":cfile" but don't
 167			jump to the first error.
 168
 169
 170:lg[etfile] [errorfile]					*:lg* *:lgetfile*
 171			Same as ":cgetfile", except the location list for the
 172			current window is used instead of the quickfix list.
 173
 174							*:caddf* *:caddfile*
 175:caddf[ile] [errorfile]	Read the error file and add the errors from the
 176			errorfile to the current quickfix list. If a quickfix
 177			list is not present, then a new list is created.
 178
 179							*:laddf* *:laddfile*
 180:laddf[ile] [errorfile]	Same as ":caddfile", except the location list for the
 181			current window is used instead of the quickfix list.
 182
 183						*:cb* *:cbuffer* *E681*
 184:cb[uffer][!] [bufnr]	Read the error list from the current buffer.
 185			When [bufnr] is given it must be the number of a
 186			loaded buffer.  That buffer will then be used instead
 187			of the current buffer.
 188			A range can be specified for the lines to be used.
 189			Otherwise all lines in the buffer are used.
 190			See |:cc| for [!].
 191
 192						*:lb* *:lbuffer*
 193:lb[uffer][!] [bufnr]	Same as ":cbuffer", except the location list for the
 194			current window is used instead of the quickfix list.
 195
 196						*:cgetb* *:cgetbuffer*
 197:cgetb[uffer] [bufnr]	Read the error list from the current buffer.  Just
 198			like ":cbuffer" but don't jump to the first error.
 199
 200						*:lgetb* *:lgetbuffer*
 201:lgetb[uffer] [bufnr]	Same as ":cgetbuffer", except the location list for
 202			the current window is used instead of the quickfix
 203			list.
 204
 205							*:caddb* *:caddbuffer*
 206:caddb[uffer] [bufnr]	Read the error list from the current buffer and add
 207			the errors to the current quickfix list.  If a
 208			quickfix list is not present, then a new list is
 209			created. Otherwise, same as ":cbuffer".
 210
 211							*:laddb* *:laddbuffer*
 212:laddb[uffer] [bufnr]	Same as ":caddbuffer", except the location list for
 213			the current window is used instead of the quickfix
 214			list.
 215
 216							*:cex* *:cexpr* *E777*
 217:cex[pr][!] {expr}	Create a quickfix list using the result of {expr} and
 218			jump to the first error.  If {expr} is a String, then
 219			each new-line terminated line in the String is
 220			processed using 'errorformat' and the result is added
 221			to the quickfix list.  If {expr} is a List, then each
 222			String item in the list is processed and added to the
 223			quickfix list.  Non String items in the List are
 224			ignored. See |:cc|
 225			for [!].
 226			Examples: >
 227				:cexpr system('grep -n xyz *')
 228				:cexpr getline(1, '$')
 229<
 230							*:lex* *:lexpr*
 231:lex[pr][!] {expr}	Same as ":cexpr", except the location list for the
 232			current window is used instead of the quickfix list.
 233
 234							*:cgete* *:cgetexpr*
 235:cgete[xpr] {expr}	Create a quickfix list using the result of {expr}.
 236			Just like ":cexpr", but don't jump to the first error.
 237
 238							*:lgete* *:lgetexpr*
 239:lgete[xpr] {expr}	Same as ":cgetexpr", except the location list for the
 240			current window is used instead of the quickfix list.
 241
 242							*:cad* *:caddexpr*
 243:cad[dexpr] {expr}	Evaluate {expr} and add the resulting lines to the
 244			current quickfix list. If a quickfix list is not
 245			present, then a new list is created. The current
 246			cursor position will not be changed. See |:cexpr| for
 247			more information.
 248			Example: >
 249    :g/mypattern/caddexpr expand("%") . ":" . line(".") .  ":" . getline(".")
 250<
 251							*:lad* *:laddexpr*
 252:lad[dexpr] {expr}	Same as ":caddexpr", except the location list for the
 253			current window is used instead of the quickfix list.
 254
 255							*:cl* *:clist*
 256:cl[ist] [from] [, [to]]
 257			List all errors that are valid |quickfix-valid|.
 258			If numbers [from] and/or [to] are given, the respective
 259			range of errors is listed.  A negative number counts
 260			from the last error backwards, -1 being the last error.
 261			The 'switchbuf' settings are respected when jumping
 262			to a buffer.
 263
 264:cl[ist]! [from] [, [to]]
 265			List all errors.
 266
 267							*:lli* *:llist*
 268:lli[st] [from] [, [to]]
 269			Same as ":clist", except the location list for the
 270			current window is used instead of the quickfix list.
 271
 272:lli[st]! [from] [, [to]]
 273			List all the entries in the location list for the
 274			current window.
 275
 276If you insert or delete lines, mostly the correct error location is still
 277found because hidden marks are used.  Sometimes, when the mark has been
 278deleted for some reason, the message "line changed" is shown to warn you that
 279the error location may not be correct.  If you quit Vim and start again the
 280marks are lost and the error locations may not be correct anymore.
 281
 282If vim is built with |+autocmd| support, two autocommands are available for
 283running commands before and after a quickfix command (':make', ':grep' and so
 284on) is executed. See |QuickFixCmdPre| and |QuickFixCmdPost| for details.
 285
 286						*QuickFixCmdPost-example*
 287When 'encoding' differs from the locale, the error messages may have a
 288different encoding from what Vim is using.  To convert the messages you can
 289use this code: >
 290	function QfMakeConv()
 291	   let qflist = getqflist()
 292	   for i in qflist
 293	      let i.text = iconv(i.text, "cp936", "utf-8")
 294	   endfor
 295	   call setqflist(qflist)
 296	endfunction
 297
 298	au QuickfixCmdPost make call QfMakeConv()
 299
 300
 301=============================================================================
 3022. The error window					*quickfix-window*
 303
 304							*:cope* *:copen*
 305:cope[n] [height]	Open a window to show the current list of errors.
 306			When [height] is given, the window becomes that high
 307			(if there is room).  Otherwise the window is made ten
 308			lines high.
 309			The window will contain a special buffer, with
 310			'buftype' equal to "quickfix".  Don't change this!
 311			If there already is a quickfix window, it will be made
 312			the current window.  It is not possible to open a
 313			second quickfix window.
 314
 315							*:lop* *:lopen*
 316:lop[en] [height]	Open a window to show the location list for the
 317			current window. Works only when the location list for
 318			the current window is present.  You can have more than
 319			one location window opened at a time.  Otherwise, it
 320			acts the same as ":copen".
 321
 322							*:ccl* *:cclose*
 323:ccl[ose]		Close the quickfix window.
 324
 325							*:lcl* *:lclose*
 326:lcl[ose]		Close the window showing the location list for the
 327			current window.
 328
 329							*:cw* *:cwindow*
 330:cw[indow] [height]	Open the quickfix window when there are recognized
 331			errors.  If the window is already open and there are
 332			no recognized errors, close the window.
 333
 334							*:lw* *:lwindow*
 335:lw[indow] [height]	Same as ":cwindow", except use the window showing the
 336			location list for the current window.
 337
 338Normally the quickfix window is at the bottom of the screen.  If there are
 339vertical splits, it's at the bottom of the rightmost column of windows.  To
 340make it always occupy the full width: >
 341	:botright cwindow
 342You can move the window around with |window-moving| commands.
 343For example, to move it to the top: CTRL-W K
 344The 'winfixheight' option will be set, which means that the window will mostly
 345keep its height, ignoring 'winheight' and 'equalalways'.  You can change the
 346height manually (e.g., by dragging the status line above it with the mouse).
 347
 348In the quickfix window, each line is one error.  The line number is equal to
 349the error number.  You can use ":.cc" to jump to the error under the cursor.
 350Hitting the <Enter> key or double-clicking the mouse on a line has the same
 351effect.  The file containing the error is opened in the window above the
 352quickfix window.  If there already is a window for that file, it is used
 353instead.  If the buffer in the used window has changed, and the error is in
 354another file, jumping to the error will fail.  You will first have to make
 355sure the window contains a buffer which can be abandoned.
 356					*CTRL-W_<Enter>* *CTRL-W_<CR>*
 357You can use CTRL-W <Enter> to open a new window and jump to the error there.
 358
 359When the quickfix window has been filled, two autocommand events are
 360triggered.  First the 'filetype' option is set to "qf", which triggers the
 361FileType event.  Then the BufReadPost event is triggered, using "quickfix" for
 362the buffer name.  This can be used to perform some action on the listed
 363errors.  Example: >
 364	au BufReadPost quickfix  setlocal modifiable
 365		\ | silent exe 'g/^/s//\=line(".")." "/'
 366		\ | setlocal nomodifiable
 367This prepends the line number to each line.  Note the use of "\=" in the
 368substitute string of the ":s" command, which is used to evaluate an
 369expression.
 370The BufWinEnter event is also triggered, again using "quickfix" for the buffer
 371name.
 372
 373Note: Making changes in the quickfix window has no effect on the list of
 374errors.  'modifiable' is off to avoid making changes.  If you delete or insert
 375lines anyway, the relation between the text and the error number is messed up.
 376If you really want to do this, you could write the contents of the quickfix
 377window to a file and use ":cfile" to have it parsed and used as the new error
 378list.
 379
 380						*location-list-window*
 381The location list window displays the entries in a location list.  When you
 382open a location list window, it is created below the current window and
 383displays the location list for the current window.  The location list window
 384is similar to the quickfix window, except that you can have more than one
 385location list window open at a time. When you use a location list command in
 386this window, the displayed location list is used.
 387
 388When you select a file from the location list window, the following steps are
 389used to find a window to edit the file:
 390
 3911. If a window with the location list displayed in the location list window is
 392   present, then the file is opened in that window.
 3932. If the above step fails and if the file is already opened in another
 394   window, then that window is used.
 3953. If the above step fails then an existing window showing a buffer with
 396   'buftype' not set is used.
 3974. If the above step fails, then the file is edited in a new window.
 398
 399In all of the above cases, if the location list for the selected window is not
 400yet set, then it is set to the location list displayed in the location list
 401window.
 402
 403=============================================================================
 4043. Using more than one list of errors			*quickfix-error-lists*
 405
 406So far has been assumed that there is only one list of errors.  Actually the
 407ten last used lists are remembered.  When starting a new list, the previous
 408ones are automatically kept.  Two commands can be used to access older error
 409lists.  They set one of the existing error lists as the current one.
 410
 411						*:colder* *:col* *E380*
 412:col[der] [count]	Go to older error list.  When [count] is given, do
 413			this [count] times.  When already at the oldest error
 414			list, an error message is given.
 415
 416						*:lolder* *:lol*
 417:lol[der] [count]	Same as ":colder", except use the location list for
 418			the current window instead of the quickfix list.
 419
 420						*:cnewer* *:cnew* *E381*
 421:cnew[er] [count]	Go to newer error list.  When [count] is given, do
 422			this [count] times.  When already at the newest error
 423			list, an error message is given.
 424
 425						*:lnewer* *:lnew*
 426:lnew[er] [count]	Same as ":cnewer", except use the location list for
 427			the current window instead of the quickfix list.
 428
 429When adding a new error list, it becomes the current list.
 430
 431When ":colder" has been used and ":make" or ":grep" is used to add a new error
 432list, one newer list is overwritten.  This is especially useful if you are
 433browsing with ":grep" |grep|.  If you want to keep the more recent error
 434lists, use ":cnewer 99" first.
 435
 436=============================================================================
 4374. Using :make						*:make_makeprg*
 438
 439							*:mak* *:make*
 440:mak[e][!] [arguments]	1. If vim was built with |+autocmd|, all relevant
 441			   |QuickFixCmdPre| autocommands are executed.
 442			2. If the 'autowrite' option is on, write any changed
 443			   buffers
 444			3. An errorfile name is made from 'makeef'.  If
 445			   'makeef' doesn't contain "##", and a file with this
 446			   name already exists, it is deleted.
 447			4. The program given with the 'makeprg' option is
 448			   started (default "make") with the optional
 449			   [arguments] and the output is saved in the
 450			   errorfile (for Unix it is also echoed on the
 451			   screen).
 452			5. The errorfile is read using 'errorformat'.
 453			6. If vim was built with |+autocmd|, all relevant
 454			   |QuickFixCmdPost| autocommands are executed.
 455			   See example below.
 456			7. If [!] is not given the first error is jumped to.
 457			8. The errorfile is deleted.
 458			9. You can now move through the errors with commands
 459			   like |:cnext| and |:cprevious|, see above.
 460			This command does not accept a comment, any "
 461			characters are considered part of the arguments.
 462
 463							*:lmak* *:lmake*
 464:lmak[e][!] [arguments]
 465			Same as ":make", except the location list for the
 466			current window is used instead of the quickfix list.
 467
 468The ":make" command executes the command given with the 'makeprg' option.
 469This is done by passing the command to the shell given with the 'shell'
 470option.  This works almost like typing
 471
 472	":!{makeprg} [arguments] {shellpipe} {errorfile}".
 473
 474{makeprg} is the string given with the 'makeprg' option.  Any command can be
 475used, not just "make".  Characters '%' and '#' are expanded as usual on a
 476command-line.  You can use "%<" to insert the current file name without
 477extension, or "#<" to insert the alternate file name without extension, for
 478example: >
 479   :set makeprg=make\ #<.o
 480
 481[arguments] is anything that is typed after ":make".
 482{shellpipe} is the 'shellpipe' option.
 483{errorfile} is the 'makeef' option, with ## replaced to make it unique.
 484
 485The placeholder "$*" can be used for the argument list in {makeprg} if the
 486command needs some additional characters after its arguments.  The $* is
 487replaced then by all arguments.  Example: >
 488   :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
 489or simpler >
 490   :let &mp = 'latex \\nonstopmode \\input\{$*}'
 491"$*" can be given multiple times, for example: >
 492   :set makeprg=gcc\ -o\ $*\ $*
 493
 494The 'shellpipe' option defaults to ">" for the Amiga, MS-DOS and Win32.  This
 495means that the output of the compiler is saved in a file and not shown on the
 496screen directly.  For Unix "| tee" is used.  The compiler output is shown on
 497the screen and saved in a file the same time.  Depending on the shell used
 498"|& tee" or "2>&1| tee" is the default, so stderr output will be included.
 499
 500If 'shellpipe' is empty, the {errorfile} part will be omitted.  This is useful
 501for compilers that write to an errorfile themselves (e.g., Manx's Amiga C).
 502
 503
 504Using QuickFixCmdPost to fix the encoding ~
 505
 506It may be that 'encoding' is set to an encoding that differs from the messages
 507your build program produces.  This example shows how to fix this after Vim has
 508read the error messages: >
 509
 510	function QfMakeConv()
 511	   let qflist = getqflist()
 512	   for i in qflist
 513	      let i.text = iconv(i.text, "cp936", "utf-8")
 514	   endfor
 515	   call setqflist(qflist)
 516	endfunction
 517
 518	au QuickfixCmdPost make call QfMakeConv()
 519
 520(Example by Faque Cheng)
 521
 522==============================================================================
 5235. Using :vimgrep and :grep				*grep* *lid*
 524
 525Vim has two ways to find matches for a pattern: Internal and external.  The
 526advantage of the internal grep is that it works on all systems and uses the
 527powerful Vim search patterns.  An external grep program can be used when the
 528Vim grep does not do what you want.
 529
 530The internal method will be slower, because files are read into memory.  The
 531advantages are:
 532- Line separators and encoding are automatically recognized, as if a file is
 533  being edited.
 534- Uses Vim search patterns.  Multi-line patterns can be used.
 535- When plugins are enabled: compressed and remote files can be searched.
 536	|gzip| |netrw|
 537
 538To be able to do this Vim loads each file as if it is being edited.  When
 539there is no match in the file the associated buffer is wiped out again.  The
 540'hidden' option is ignored here to avoid running out of memory or file
 541descriptors when searching many files.  However, when the |:hide| command
 542modifier is used the buffers are kept loaded.  This makes following searches
 543in the same files a lot faster.
 544
 545
 5465.1 using Vim's internal grep
 547
 548					*:vim* *:vimgrep* *E682* *E683*
 549:vim[grep][!] /{pattern}/[g][j] {file} ...
 550			Search for {pattern} in the files {file} ... and set
 551			the error list to the matches.
 552			Without the 'g' flag each line is added only once.
 553			With 'g' every match is added.
 554
 555			{pattern} is a Vim search pattern.  Instead of
 556			enclosing it in / any non-ID character (see
 557			|'isident'|) can be used, so long as it does not
 558			appear in {pattern}.
 559			'ignorecase' applies.  To overrule it put |/\c| in the
 560			pattern to ignore case or |/\C| to match case.
 561			'smartcase' is not used.
 562
 563			When a number is put before the command this is used
 564			as the maximum number of matches to find.  Use
 565			":1vimgrep pattern file" to find only the first.
 566			Useful if you only want to check if there is a match
 567			and quit quickly when it's found.
 568
 569			Without the 'j' flag Vim jumps to the first match.
 570			With 'j' only the quickfix list is updated.
 571			With the [!] any changes in the current buffer are
 572			abandoned.
 573
 574			Every second or so the searched file name is displayed
 575			to give you an idea of the progress made.
 576			Examples: >
 577				:vimgrep /an error/ *.c
 578				:vimgrep /\<FileName\>/ *.h include/*
 579				:vimgrep /myfunc/ **/*.c
 580<			For the use of "**" see |starstar-wildcard|.
 581
 582:vim[grep][!] {pattern} {file} ...
 583			Like above, but instead of enclosing the pattern in a
 584			non-ID character use a white-separated pattern.  The
 585			pattern must start with an ID character.
 586			Example: >
 587				:vimgrep Error *.c
 588<
 589							*:lv* *:lvimgrep*
 590:lv[imgrep][!] /{pattern}/[g][j] {file} ...
 591:lv[imgrep][!] {pattern} {file} ...
 592			Same as ":vimgrep", except the location list for the
 593			current window is used instead of the quickfix list.
 594
 595						*:vimgrepa* *:vimgrepadd*
 596:vimgrepa[dd][!] /{pattern}/[g][j] {file} ...
 597:vimgrepa[dd][!] {pattern} {file} ...
 598			Just like ":vimgrep", but instead of making a new list
 599			of errors the matches are appended to the current
 600			list.
 601
 602						*:lvimgrepa* *:lvimgrepadd*
 603:lvimgrepa[dd][!] /{pattern}/[g][j] {file} ...
 604:lvimgrepa[dd][!] {pattern} {file} ...
 605			Same as ":vimgrepadd", except the location list for
 606			the current window is used instead of the quickfix
 607			list.
 608
 6095.2 External grep
 610
 611Vim can interface with "grep" and grep-like programs (such as the GNU
 612id-utils) in a similar way to its compiler integration (see |:make| above).
 613
 614[Unix trivia: The name for the Unix "grep" command comes from ":g/re/p", where
 615"re" stands for Regular Expression.]
 616
 617							    *:gr* *:grep*
 618:gr[ep][!] [arguments]	Just like ":make", but use 'grepprg' instead of
 619			'makeprg' and 'grepformat' instead of 'errorformat'.
 620			When 'grepprg' is "internal" this works like
 621			|:vimgrep|.  Note that the pattern needs to be
 622			enclosed in separator characters then.
 623
 624							    *:lgr* *:lgrep*
 625:lgr[ep][!] [arguments]	Same as ":grep", except the location list for the
 626			current window is used instead of the quickfix list.
 627
 628							*:grepa* *:grepadd*
 629:grepa[dd][!] [arguments]
 630			Just like ":grep", but instead of making a new list of
 631			errors the matches are appended to the current list.
 632			Example: >
 633				:call setqflist([])
 634				:bufdo grepadd! something %
 635<			The first command makes a new error list which is
 636			empty.  The second command executes "grepadd" for each
 637			listed buffer.  Note the use of ! to avoid that
 638			":grepadd" jumps to the first error, which is not
 639			allowed with |:bufdo|.
 640			An example that uses the argument list and avoids
 641			errors for files without matches: >
 642                                :silent argdo try 
 643				  \ | grepadd! something %
 644				  \ | catch /E480:/
 645				  \ | endtry"
 646<
 647							*:lgrepa* *:lgrepadd*
 648:lgrepa[dd][!] [arguments]
 649			Same as ":grepadd", except the location list for the
 650			current window is used instead of the quickfix list.
 651
 6525.3 Setting up external grep
 653
 654If you have a standard "grep" program installed, the :grep command may work
 655well with the defaults.  The syntax is very similar to the standard command: >
 656
 657	:grep foo *.c
 658
 659Will search all files with the .c extension for the substring "foo".  The
 660arguments to :grep are passed straight to the "grep" program, so you can use
 661whatever options your "grep" supports.
 662
 663By default, :grep invokes grep with the -n option (show file and line
 664numbers).  You can change this with the 'grepprg' option.  You will need to set
 665'grepprg' if:
 666
 667a)	You are using a program that isn't called "grep"
 668b)	You have to call grep with a full path
 669c)	You want to pass other options automatically (e.g. case insensitive
 670	search.)
 671
 672Once "grep" has executed, Vim parses the results using the 'grepformat'
 673option.  This option works in the same way as the 'errorformat' option - see
 674that for details.  You may need to change 'grepformat' from the default if
 675your grep outputs in a non-standard format, or you are using some other
 676program with a special format.
 677
 678Once the results are parsed, Vim loads the first file containing a match and
 679jumps to the appropriate line, in the same way that it jumps to a compiler
 680error in |quickfix| mode.  You can then use the |:cnext|, |:clist|, etc.
 681commands to see the other matches.
 682
 683
 6845.4 Using :grep with id-utils
 685
 686You can set up :grep to work with the GNU id-utils like this: >
 687
 688	:set grepprg=lid\ -Rgrep\ -s
 689	:set grepformat=%f:%l:%m
 690
 691then >
 692	:grep (regexp)
 693
 694works just as you'd expect.
 695(provided you remembered to mkid first :)
 696
 697
 6985.5 Browsing source code with :vimgrep or :grep
 699
 700Using the stack of error lists that Vim keeps, you can browse your files to
 701look for functions and the functions they call.  For example, suppose that you
 702have to add an argument to the read_file() function.  You enter this command: >
 703
 704	:vimgrep /\<read_file\>/ *.c
 705
 706You use ":cn" to go along the list of matches and add the argument.  At one
 707place you have to get the new argument from a higher level function msg(), and
 708need to change that one too.  Thus you use: >
 709
 710	:vimgrep /\<msg\>/ *.c
 711
 712While changing the msg() functions, you find another function that needs to
 713get the argument from a higher level.  You can again use ":vimgrep" to find
 714these functions.  Once you are finished with one function, you can use >
 715
 716	:colder
 717
 718to go back to the previous one.
 719
 720This works like browsing a tree: ":vimgrep" goes one level deeper, creating a
 721list of branches.  ":colder" goes back to the previous level.  You can mix
 722this use of ":vimgrep" and "colder" to browse all the locations in a tree-like
 723way.  If you do this consistently, you will find all locations without the
 724need to write down a "todo" list.
 725
 726=============================================================================
 7276. Selecting a compiler					*compiler-select*
 728
 729						*:comp* *:compiler* *E666*
 730:comp[iler][!] {name}		Set options to work with compiler {name}.
 731				Without the "!" options are set for the
 732				current buffer.  With "!" global options are
 733				set.
 734				If you use ":compiler foo" in "file.foo" and
 735				then ":compiler! bar" in another buffer, Vim
 736				will keep on using "foo" in "file.foo".
 737				{not available when compiled without the
 738				|+eval| feature}
 739
 740
 741The Vim plugins in the "compiler" directory will set options to use the
 742selected compiler.  For ":compiler" local options are set, for ":compiler!"
 743global options.
 744							*current_compiler*
 745To support older Vim versions, the plugins always use "current_compiler" and
 746not "b:current_compiler".  What the command actually does is the following:
 747
 748- Delete the "current_compiler" and "b:current_compiler" variables.
 749- Define the "CompilerSet" user command.  With "!" it does ":set", without "!"
 750  it does ":setlocal".
 751- Execute ":runtime! compiler/{name}.vim".  The plugins are expected to set
 752  options with "CompilerSet" and set the "current_compiler" variable to the
 753  name of the compiler.
 754- Delete the "CompilerSet" user command.
 755- Set "b:current_compiler" to the value of "current_compiler".
 756- Without "!" the old value of "current_compiler" is restored.
 757
 758
 759For writing a compiler plugin, see |write-compiler-plugin|.
 760
 761
 762GCC					*quickfix-gcc*	*compiler-gcc*
 763
 764There's one variable you can set for the GCC compiler:
 765
 766g:compiler_gcc_ignore_unmatched_lines
 767				Ignore lines that don't match any patterns
 768				defined for GCC.  Useful if output from
 769				commands run from make are generating false
 770				positives.
 771
 772
 773MANX AZTEC C				*quickfix-manx* *compiler-manx*
 774
 775To use Vim with Manx's Aztec C compiler on the Amiga you should do the
 776following:
 777- Set the CCEDIT environment variable with the command: >
 778	mset "CCEDIT=vim -q"
 779- Compile with the -qf option.  If the compiler finds any errors, Vim is
 780  started and the cursor is positioned on the first error.  The error message
 781  will be displayed on the last line.  You can go to other errors with the
 782  commands mentioned above.  You can fix the errors and write the file(s).
 783- If you exit Vim normally the compiler will re-compile the same file.  If you
 784  exit with the :cq command, the compiler will terminate.  Do this if you
 785  cannot fix the error, or if another file needs to be compiled first.
 786
 787There are some restrictions to the Quickfix mode on the Amiga.  The
 788compiler only writes the first 25 errors to the errorfile (Manx's
 789documentation does not say how to get more).  If you want to find the others,
 790you will have to fix a few errors and exit the editor.  After recompiling,
 791up to 25 remaining errors will be found.
 792
 793If Vim was started from the compiler, the :sh and some :!  commands will not
 794work, because Vim is then running in the same process as the compiler and
 795stdin (standard input) will not be interactive.
 796
 797
 798PERL					*quickfix-perl* *compiler-perl*
 799
 800The Perl compiler plugin doesn't actually compile, but invokes Perl's internal
 801syntax checking feature and parses the output for possible errors so you can
 802correct them in quick-fix mode.
 803
 804Warnings are forced regardless of "no warnings" or "$^W = 0" within the file
 805being checked.  To disable this set g:perl_compiler_force_warnings to a zero
 806value.  For example: >
 807	let g:perl_compiler_force_warnings = 0
 808
 809
 810PYUNIT COMPILER						*compiler-pyunit*
 811
 812This is not actually a compiler, but a unit testing framework for the
 813Python language.  It is included into standard Python distribution
 814starting from version 2.0.  For older versions, you can get it from
 815http://pyunit.sourceforge.net.
 816
 817When you run your tests with the help of the framework, possible errors
 818are parsed by Vim and presented for you in quick-fix mode.
 819
 820Unfortunately, there is no standard way to run the tests.
 821The alltests.py script seems to be used quite often, that's all.
 822Useful values for the 'makeprg' options therefore are:
 823 setlocal makeprg=./alltests.py " Run a testsuite
 824 setlocal makeprg=python %      " Run a single testcase
 825
 826Also see http://vim.sourceforge.net/tip_view.php?tip_id=280.
 827
 828
 829TEX COMPILER						*compiler-tex*
 830
 831Included in the distribution compiler for TeX ($VIMRUNTIME/compiler/tex.vim)
 832uses make command if possible.  If the compiler finds a file named "Makefile"
 833or "makefile" in the current directory, it supposes that you want to process
 834your *TeX files with make, and the makefile does the right work.  In this case
 835compiler sets 'errorformat' for *TeX output and leaves 'makeprg' untouched.  If
 836neither "Makefile" nor "makefile" is found, the compiler will not use make.
 837You can force the compiler to ignore makefiles by defining
 838b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for
 839existence only).
 840
 841If the compiler chose not to use make, it need to choose a right program for
 842processing your input.  If b:tex_flavor or g:tex_flavor (in this precedence)
 843variable exists, it defines TeX flavor for :make (actually, this is the name
 844of executed command), and if both variables do not exist, it defaults to
 845"latex".  For example, while editing chapter2.tex \input-ed from mypaper.tex
 846written in AMS-TeX: >
 847
 848	:let b:tex_flavor = 'amstex'
 849	:compiler tex
 850<	[editing...] >
 851	:make mypaper
 852
 853Note that you must specify a name of the file to process as an argument (to
 854process the right file when editing \input-ed or \include-ed file; portable
 855solution for substituting % for no arguments is welcome).  This is not in the
 856semantics of make, where you specify a target, not source, but you may specify
 857filename without extension ".tex" and mean this as "make filename.dvi or
 858filename.pdf or filename.some_result_extension according to compiler".
 859
 860Note: tex command line syntax is set to usable both for MikTeX (suggestion
 861by Srinath Avadhanula) and teTeX (checked by Artem Chuprina).  Suggestion
 862from |errorformat-LaTeX| is too complex to keep it working for different
 863shells and OSes and also does not allow to use other available TeX options,
 864if any.  If your TeX doesn't support "-interaction=nonstopmode", please
 865report it with different means to express \nonstopmode from the command line.
 866
 867=============================================================================
 8687. The error format					*error-file-format*
 869
 870					*errorformat* *E372* *E373* *E374*
 871						*E375* *E376* *E377* *E378*
 872The 'errorformat' option specifies a list of formats that are recognized.  The
 873first format that matches with an error message is used.  You can add several
 874formats for different messages your compiler produces, or even entries for
 875multiple compilers.  See |efm-entries|.
 876
 877Each entry in 'errorformat' is a scanf-like string that describes the format.
 878First, you need to know how scanf works.  Look in the documentation of your
 879C compiler.  Below you find the % items that Vim understands.  Others are
 880invalid.
 881
 882Special characters in 'errorformat' are comma and backslash.  See
 883|efm-entries| for how to deal with them.  Note that a literal "%" is matched
 884by "%%", thus it is not escaped with a backslash.
 885
 886Note: By default the difference between upper and lowercase is ignored.  If
 887you want to match case, add "\C" to the pattern |/\C|.
 888
 889
 890Basic items
 891
 892	%f		file name (finds a string)
 893	%l		line number (finds a number)
 894	%c		column number (finds a number representing character
 895			column of the error, (1 <tab> == 1 character column))
 896	%v		virtual column number (finds a number representing
 897			screen column of the error (1 <tab> == 8 screen
 898			columns))
 899	%t		error type (finds a single character)
 900	%n		error number (finds a number)
 901	%m		error message (finds a string)
 902	%r		matches the "rest" of a single-line file message %O/P/Q
 903	%p		pointer line (finds a sequence of '-', '.' or ' ' and
 904			uses the length for the column number)
 905	%*{conv}	any scanf non-assignable conversion
 906	%%		the single '%' character
 907	%s		search text (finds a string)
 908
 909The "%f" conversion may depend on the current 'isfname' setting.  "~/" is
 910expanded to the home directory and environment variables are expanded.
 911
 912The "%f" and "%m" conversions have to detect the end of the string.  This
 913normally happens by matching following characters and items.  When nothing is
 914following the rest of the line is matched.  If "%f" is followed by a '%' or a
 915backslash, it will look for a sequence of 'isfname' characters.
 916
 917On MS-DOS, MS-Windows and OS/2 a leading "C:" will be included in "%f", even
 918when using "%f:".  This means that a file name which is a single alphabetical
 919letter will not be detected.
 920
 921The "%p" conversion is normally followed by a "^".  It's used for compilers
 922that output a line like: >
 923	    ^
 924or >
 925   ---------^
 926to indicate the column of the error.  This is to be used in a multi-line error
 927message.  See |errorformat-javac| for a  useful example.
 928
 929The "%s" conversion specifies the text to search for to locate the error line.
 930The text is used as a literal string.  The anchors "^" and "$" are added to
 931the text to locate the error line exactly matching the search text and the
 932text is prefixed with the "\V" atom to make it "very nomagic".  The "%s"
 933conversion can be used to locate lines without a line number in the error
 934output.  Like the output of the "grep" shell command.
 935When the pattern is present the line number will not be used.
 936
 937Changing directory
 938
 939The following uppercase conversion characters specify the type of special
 940format strings.  At most one of them may be given as a prefix at the begin
 941of a single comma-separated format pattern.
 942Some compilers produce messages that consist of directory names that have to
 943be prepended to each file name read by %f (example: GNU make).  The following
 944codes can be used to scan these directory names; they will be stored in an
 945internal directory stack.					*E379*
 946	%D		"enter directory" format string; expects a following
 947			  %f that finds the directory name
 948	%X		"leave directory" format string; expects following %f
 949
 950When defining an "enter directory" or "leave directory" format, the "%D" or
 951"%X" has to be given at the start of that substring.  Vim tracks the directory
 952changes and prepends the current directory to each erroneous file found with a
 953relative path.  See |quickfix-directory-stack| for details, tips and
 954limitations.
 955
 956
 957Multi-line messages				*errorformat-multi-line*
 958
 959It is possible to read the output of programs that produce multi-line
 960messages, i.e. error strings that consume more than one line.  Possible
 961prefixes are:
 962	%E		start of a multi-line error message
 963	%W		start of a multi-line warning message
 964	%I		start of a multi-line informational message
 965	%A		start of a multi-line message (unspecified type)
 966	%>		for next line start with current pattern again |efm-%>|
 967	%C		continuation of a multi-line message
 968	%Z		end of a multi-line message
 969These can be used with '+' and '-', see |efm-ignore| below.
 970
 971Using "\n" in the pattern won't work to match multi-line messages.
 972
 973Example: Your compiler happens to write out errors in the following format
 974(leading line numbers not being part of the actual output):
 975
 976     1	Error 275 ~
 977     2	line 42 ~
 978     3	column 3 ~
 979     4	' ' expected after '--' ~
 980
 981The appropriate error format string has to look like this: >
 982   :set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m
 983
 984And the |:clist| error message generated for this error is:
 985
 986 1:42 col 3 error 275:  ' ' expected after '--'
 987
 988Another example: Think of a Python interpreter that produces the following
 989error message (line numbers are not part of the actual output):
 990
 991     1	==============================================================
 992     2	FAIL: testGetTypeIdCachesResult (dbfacadeTest.DjsDBFacadeTest)
 993     3	--------------------------------------------------------------
 994     4	Traceback (most recent call last):
 995     5	  File "unittests/dbfacadeTest.py", line 89, in testFoo
 996     6	    self.assertEquals(34, dtid)
 997     7	  File "/usr/lib/python2.2/unittest.py", line 286, in
 998     8	 failUnlessEqual
 999     9	    raise self.failureException, \
1000    10	AssertionError: 34 != 33
1001    11
1002    12	--------------------------------------------------------------
1003    13	Ran 27 tests in 0.063s
1004
1005Say you want |:clist| write the relevant information of this message only,
1006namely:
1007 5 unittests/dbfacadeTest.py:89:  AssertionError: 34 != 33
1008
1009Then the error format string could be defined as follows: >
1010  :set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
1011
1012Note that the %C string is given before the %A here: since the expression
1013' %.%#' (which stands for the regular expression ' .*') matches every line
1014starting with a space, followed by any characters to the end of the line,
1015it also hides line 7 which would trigger a separate error message otherwise.
1016Error format strings are always parsed pattern by pattern until the first
1017match occurs.
1018							*efm-%>*
1019The %> item can be used to avoid trying patterns that appear earlier in
1020'errorformat'.  This is useful for patterns that match just about anything.
1021For example, if the error looks like this:
1022
1023	Error in line 123 of foo.c: ~
1024	unknown variable "i" ~
1025
1026This can be found with: >
1027	:set efm=xxx,%E%>Error in line %l of %f:,%Z%m
1028Where "xxx" has a pattern that would also match the second line.
1029
1030Important: There is no memory of what part of the errorformat matched before;
1031every line in the error file gets a complete new run through the error format
1032lines.  For example, if one has: >
1033  setlocal efm=aa,bb,cc,dd,ee
1034Where aa, bb, etc. are error format strings.  Each line of the error file will
1035be matched to the pattern aa, then bb, then cc, etc.  Just because cc matched
1036the previous error line does _not_ mean that dd will be tried first on the
1037current line, even if cc and dd are multi-line errorformat strings.
1038
1039
1040
1041Separate file name			*errorformat-separate-filename*
1042
1043These prefixes are useful if the file name is given once and multiple messages
1044follow that refer to this file name.
1045	%O		single-line file message: overread the matched part
1046	%P		single-line file message: push file %f onto the stack
1047	%Q		single-line file message: pop the last file from stack
1048
1049Example: Given a compiler that produces the following error logfile (without
1050leading line numbers):
1051
1052     1	[a1.tt]
1053     2	(1,17)  error: ';' missing
1054     3	(21,2)  warning: variable 'z' not defined
1055     4	(67,3)  error: end of file found before string ended
1056     5
1057     6	[a2.tt]
1058     7
1059     8	[a3.tt]
1060     9	NEW compiler v1.1
1061    10	(2,2)   warning: variable 'x' not defined
1062    11	(67,3)  warning: 's' already defined
1063
1064This logfile lists several messages for each file enclosed in [...] which are
1065properly parsed by an error format like this: >
1066  :set efm=%+P[%f],(%l\\,%c)%*[\ ]%t%*[^:]:\ %m,%-Q
1067
1068A call of |:clist| writes them accordingly with their correct filenames:
1069
1070  2 a1.tt:1 col 17 error: ';' missing
1071  3 a1.tt:21 col 2 warning: variable 'z' not defined
1072  4 a1.tt:67 col 3 error: end of file found before string ended
1073  8 a3.tt:2 col 2 warning: variable 'x' not defined
1074  9 a3.tt:67 col 3 warning: 's' already defined
1075
1076Unlike the other prefixes that all match against whole lines, %P, %Q and %O
1077can be used to match several patterns in the same line.  Thus it is possible
1078to parse even nested files like in the following line:
1079  {"file1" {"file2" error1} error2 {"file3" error3 {"file4" error4 error5}}}
1080The %O then parses over strings that do not contain any push/pop file name
1081information.  See |errorformat-LaTeX| for an extended example.
1082
1083
1084Ignoring and using whole messages			*efm-ignore*
1085
1086The codes '+' or '-' can be combined with the uppercase codes above; in that
1087case they have to precede the letter, e.g. '%+A' or '%-G':
1088	%-		do not include the matching multi-line in any output
1089	%+		include the whole matching line in the %m error string
1090
1091One prefix is only useful in combination with '+' or '-', namely %G.  It parses
1092over lines containing general information like compiler version strings or
1093other headers that can be skipped.
1094	%-G		ignore this message
1095	%+G		general message
1096
1097
1098Pattern matching
1099
1100The scanf()-like "%*[]" notation is supported for backward-compatibility
1101with previous versions of Vim.  However, it is also possible to specify
1102(nearly) any Vim supported regular expression in format strings.
1103Since meta characters of the regular expression language can be part of
1104ordinary matching strings or file names (and therefore internally have to
1105be escaped), meta symbols have to be written with leading '%':
1106	%\		The single '\' character.  Note that this has to be
1107			escaped ("%\\") in ":set errorformat=" definitions.
1108	%.		The single '.' character.
1109	%#		The single '*'(!) character.
1110	%^		The single '^' character.  Note that this is not
1111			useful, the pattern already matches start of line.
1112	%$		The single '$' character.  Note that this is not
1113			useful, the pattern already matches end of line.
1114	%[		The single '[' character for a [] character range.
1115	%~		The single '~' character.
1116When using character classes in expressions (see |/\i| for an overview),
1117terms containing the "\+" quantifier can be written in the scanf() "%*"
1118notation.  Example: "%\\d%\\+" ("\d\+", "any number") is equivalent to "%*\\d".
1119Important note: The \(...\) grouping of sub-matches can not be used in format
1120specifications because it is reserved for internal conversions.
1121
1122
1123Multiple entries in 'errorformat'			*efm-entries*
1124
1125To be able to detect output from several compilers, several format patterns
1126may be put in 'errorformat', separated by commas (note: blanks after the comma
1127are ignored).  The first pattern that has a complete match is used.  If no
1128match is found, matching parts from the last one will be used, although the
1129file name is removed and the error message is set to the whole message.  If
1130there is a pattern that may match output from several compilers (but not in a
1131right way), put it after one that is more restrictive.
1132
1133To include a comma in a pattern precede it with a backslash (you have to type
1134two in a ":set" command).  To include a backslash itself give two backslashes
1135(you have to type four in a ":set" command).  You also need to put a backslash
1136before a space for ":set".
1137
1138
1139Valid matches						*quickfix-valid*
1140
1141If a line does not completely match one of the entries in 'errorformat', the
1142whole line is put in the error message and the entry is marked "not valid"
1143These lines are skipped with the ":cn" and ":cp" commands (unless there is
1144no valid line at all).  You can use ":cl!" to display all the error messages.
1145
1146If the error format does not contain a file name Vim cannot switch to the
1147correct file.  You will have to do this by hand.
1148
1149
1150Examples
1151
1152The format of the file from the Amiga Aztec compiler is:
1153
1154	filename>linenumber:columnnumber:errortype:errornumber:errormessage
1155
1156	filename	name of the file in which the error was detected
1157	linenumber	line number where the error was detected
1158	columnnumber	column number where the error was detected
1159	errortype	type of the error, normally a single 'E' or 'W'
1160	errornumber	number of the error (for lookup in the manual)
1161	errormessage	description of the error
1162
1163This can be matched with this 'errorformat' entry:
1164	%f>%l:%c:%t:%n:%m
1165
1166Some examples for C compilers that produce single-line error outputs:
1167%f:%l:\ %t%*[^0123456789]%n:\ %m	for Manx/Aztec C error messages
1168					(scanf() doesn't understand [0-9])
1169%f\ %l\ %t%*[^0-9]%n:\ %m		for SAS C
1170\"%f\"\\,%*[^0-9]%l:\ %m		for generic C compilers
1171%f:%l:\ %m				for GCC
1172%f:%l:\ %m,%Dgmake[%*\\d]:\ Entering\ directory\ `%f',
1173%Dgmake[%*\\d]:\ Leaving\ directory\ `%f'
1174					for GCC with gmake (concat the lines!)
1175%f(%l)\ :\ %*[^:]:\ %m			old SCO C compiler (pre-OS5)
1176%f(%l)\ :\ %t%*[^0-9]%n:\ %m		idem, with error type and number
1177%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m
1178					for GCC, with some extras
1179
1180Extended examples for the handling of multi-line messages are given below,
1181see |errorformat-Jikes| and |errorformat-LaTeX|.
1182
1183Note the backslash in front of a space and double quote.  It is required for
1184the :set command.  There are two backslashes in front of a comma, one for the
1185:set command and one to avoid recognizing the comma as a separator of error
1186formats.
1187
1188
1189Filtering messages
1190
1191If you have a compiler that produces error messages that do not fit in the
1192format string, you could write a program that translates the error messages
1193into this format.  You can use this program with the ":make" command by
1194changing the 'makeprg' option.  For example: >
1195   :set mp=make\ \\\|&\ error_filter
1196The backslashes before the pipe character are required to avoid it to be
1197recognized as a command separator.  The backslash before each space is
1198required for the set command.
1199
1200=============================================================================
12018. The directory stack				*quickfix-directory-stack*
1202
1203Quickfix maintains a stack for saving all used directories pars…

Large files files are truncated, but you can click here to view the full file