4 ms·
People who prefer the terminal don't click on things much. Vanilla Vi users would use :make to populate the location list, and then :cn or :cp to navigate bac
by sagarm 5y ago
People who prefer the terminal don't click on things much.
Vanilla Vi users would use :make to populate the location list, and then :cn or :cp to navigate back and forth. :cope to open up the quick fix window where you can use all your regular VI keybindings to navigate. Enter opens the location under the cursor in your previous VIM split.
There are also plenty of plugins that add inline diagnostics. It's common to use bindings for navigating these that ape the spell check navigation bindings ]s and [s.
- da39a3ee 5y agoIf I'm understanding you correctly that means you have to do your compilation from within vim. Isn't that constraining at times?
- sagarm 5y agoI don't always use :make. Navigating manually is fast: Specific lines is just :NN, jumping to an open buffer is just :b substr<tab><enter>. Or, :tag FunctionName (which has completion) to jump to a symbol. Or, forward incremental search to jump to a string in a file. I also have a plugin to invoke fzf, (\tb to search buffers and \t to search for files by name), but I don't use it that often. VIM has many tools to navigate through text. Everyone's got their own preferred methods.
- da39a3ee 5y agoSo if you issue a compile command in a terminal, outside vim, and the compiler emits something like `myfile:17:7` to stdout, how do you then open vim on line 17 of myfile?
- sagarm 5y agoOften I already have the file in question open, so it's just :17 to jump to line 17. If I don't have the file active but it's open (very likely if I have a compile error for it), then I can foreground the buffer with :b myfile<CR>. Then :17 to jump to line 17. If the file isn't open at all, either fzf (\t myfile) or just :e path/to/myfile.
- da39a3ee 5y agoOK cool. I'm certainly a huge terminal user myself and no advocate of increasing mouse usage in general, but for working through things like compiler errors / stack traces etc, wouldn't you agree that, seeing as all the file path and line number is present, we should be able to invoke the appropriate handler with a single UI action (where appropriate handler means "open file at this line")? The number 17 isn't itself of interest, and it shouldn't have to pass through our brains IMO. The semantics should be "open editor at this error" not "open editor at line 17".
- sagarm 5y agoYeah, :make gives you that, as do various LSP integration plugins. The main downside of :make is that it's synchronous, which is why I sometimes build in a separate tmux pane.
- gnubison 5y agoVanilla vi users don’t have :make, :cn, :cp, or :cope.
- sagarm 5y agoVanilla VIM, sorry.