For a long time I had the same opinion (using Sublime Text with its plain same-file autocomplete). It's okay, but after using LSP for a while, I'm sold on it. It really is nicer, and I wouldn't go back to my pre-LSP times.
"Go to definition" and "Find references" is faster and more precise than grepping, especially for common function names. This lets me browse larger codebases, even if I don't remember their layout.
Being able to peek at actual types of variables is quite useful in Rust which has type inference. I can check types instead of deducing issues out of compile errors.
LSP support for like "Extract into function/module" are great for refactoring eliminating most of the busywork. Renames are also more reliable than find'n'replace, especially when I'm renaming because the name is ambiguous.
"Go to definition" and "Find references" is faster and more precise than grepping, especially for common function names. This lets me browse larger codebases, even if I don't remember their layout.
Being able to peek at actual types of variables is quite useful in Rust which has type inference. I can check types instead of deducing issues out of compile errors.
LSP support for like "Extract into function/module" are great for refactoring eliminating most of the busywork. Renames are also more reliable than find'n'replace, especially when I'm renaming because the name is ambiguous.