# Application Use When you know what you are doing, command line interfaces and keyboard shortcuts are amazingly efficient. Your efficiency improves and your proficiency improves, and you gain proficiency when you do something often. Unfortunately, this creates an incentive to form habits: same applications, same workflows, same tasks. These notes are my attempt to break those habits by exploring new ways of doing things. ## find 'find' executes commands directly, so each result is sent as a separate argument *without* shell preprocessing. ``` -exec <command> {} ; ``` Executes the command for each result. The result may be passed as an argument more than once. ``` -exec <command> {} + ``` Executes the command with many results. The result must appear as the last argument and may only appear once. This method of invoking a command is generally faster, provided it can handle multiple results. ``` -execdir <command> {} ; -execdir <command> {} + ``` Change to the file directory prior to executing a command. When the results are in several directories and '+' is specified, the results are split up according to directory so the command may be executed from each directory. ## fish fish is a shell that is designed with interactive use in mind. ## kitty ## rg/rga rg is analogous to grep. It is more useful than grep since it has a defaults and features that more sensible in a modern environment. Yet the rga wrapper is vastly more interesting since it enables searching the contents of certain binary formats. ## vi/vim/nvim vi is the classic text editor on Unix based systems. vim is a clone that was originally created for the Amiga, which ended up being ported to many other operating systems. It's generous licensing and improved feature set led to it being the dominant vi based editor. nvim is a fork of vim that sought to incorporate many features that were slow in coming to vim.