Yeah; and there's so many little features like that - most of which I use rarely, but they're still useful. Aside from rename, there are:
- Change function arguments. (Eg, reorder the arguments of a function and update all callers)
- Add a new function argument. Eg, if I change a call from foo() to foo(some_int), the suggested actions include adding a new parameter to foo with some_int's type.
- Contextually fill in trait, struct, or match statements
- Move a bunch of stuff to a new / different file
- Organize imports
- Run a test. Anything function with #[test] and no arguments can be run or debugged instantly with the click of the mouse.
- Up and down buttons for trait implementations. See the definition for a trait method, or jump to one of its implementations.
I have no idea how to do any of this stuff in vim. Maybe its possible with enough macros and scripts and mucking about. I really do admire vim's tenacity, but seriously. The time spent learning a modern IDE pays dividends in weeks and our careers are measured in decades.
- Change function arguments. (Eg, reorder the arguments of a function and update all callers)
- Add a new function argument. Eg, if I change a call from foo() to foo(some_int), the suggested actions include adding a new parameter to foo with some_int's type.
- Contextually fill in trait, struct, or match statements
- Move a bunch of stuff to a new / different file
- Organize imports
- Run a test. Anything function with #[test] and no arguments can be run or debugged instantly with the click of the mouse.
- Up and down buttons for trait implementations. See the definition for a trait method, or jump to one of its implementations.
I have no idea how to do any of this stuff in vim. Maybe its possible with enough macros and scripts and mucking about. I really do admire vim's tenacity, but seriously. The time spent learning a modern IDE pays dividends in weeks and our careers are measured in decades.