Call this one step in developing a Motoko language formatter / linter (not sure if there’s active development on this elsewhere.) I find it useful to group imports hierarchically: base library imports → third party imports → project specific imports → imports from the current module. Example:
// Before
import AccountIdentifier "mo:principal/AccountIdentifier";
import Array "mo:base/Array";
import Blob "mo:base/Blob";
import Buffer "mo:base/Buffer";
import Ext "mo:ext/Ext";
import HashMap "mo:base/HashMap";
import Iter "mo:base/Iter";
import Nat "mo:base/Nat";
import Nat32 "mo:base/Nat32";
import Prim "mo:prim";
import Result "mo:base/Result";
import Test "../Test";
import Text "mo:base/Text";
import Time "mo:base/Time";
// After
import Array "mo:base/Array";
import Blob "mo:base/Blob";
import Buffer "mo:base/Buffer";
import HashMap "mo:base/HashMap";
import Iter "mo:base/Iter";
import Nat "mo:base/Nat";
import Nat32 "mo:base/Nat32";
import Prim "mo:prim";
import Result "mo:base/Result";
import Text "mo:base/Text";
import Time "mo:base/Time";
import AccountIdentifier "mo:principal/AccountIdentifier";
import Ext "mo:ext/Ext";
import Test "../Test";
import Types "types"
This morning I hacked together a VS Code extension to do it automatically: Motoko Formatter - Visual Studio Marketplace
edit: changed the extension name and made it a language formatter