Linux

Fish Shell 4.4: Vi Mode Gets a Major Upgrade for Modern Linux Terminals

47views

If you’ve been following the Fish shell project over the past year, you know the team has been on a roll. The 4.4 release, which dropped just a few weeks ago, might not sound like a massive overhaul on paper, but don’t let that fool you. This update brings some genuinely useful improvements that’ll make your day-to-day terminal work smoother—especially if you’re a Vi mode user.

I’ve been running Fish 4.4 on both my Wayland-based work machine and my X11 testing rig for the past couple of weeks, and I have to say, the Vi mode changes alone are worth the upgrade. Let’s dig into what’s new and why it matters.

The Headline Feature: Vi Mode That Actually Feels Like Vim

The biggest win in Fish 4.4 is the massive improvement to Vi mode. If you’re someone who lives and breathes Vim keybindings (and let’s be honest, once you learn them, it’s hard to go back), you’ll appreciate how much closer Fish’s Vi mode now aligns with actual Vim behavior.

Word Movements That Make Sense

Previously, Fish’s word movement commands—wWe, and E—had their own interpretation of what constitutes a “word.” It worked, but if you were switching between Vim and Fish throughout the day, you’d occasionally get tripped up by the inconsistencies.

Fish 4.4 fixes this. The word movements now behave almost identically to Vim, with one intentional exception: underscores are treated as word separators. The team made this decision deliberately, and honestly, it makes sense in a shell context where you’re frequently dealing with file names like my_long_file_name.txt.

Pro tip: Try navigating through a long command with multiple snake_case variables. The improved word movements make editing these commands significantly faster than before.

Operator Counts Are Finally Here

Here’s something that’ll make Vim veterans smile: Vi mode now supports counts for movement and deletion commands. Want to delete three words? Just type d3w. Need to move forward five characters? 5l works exactly as you’d expect.

This might sound like a small thing, but when you’re used to this workflow from Vim, having it work correctly in your shell makes a surprising difference. I found myself naturally using these combinations without thinking about it—which is exactly how good keybindings should work.

To support this functionality, the Fish team added a whole bunch of new special input functions:

  • forward-word-vi and kill-word-vi
  • forward-bigword-vi and kill-bigword-vi
  • forward-word-end and backward-word-end
  • forward-bigword-end and backward-bigword-end
  • kill-a-wordkill-inner-word
  • kill-a-bigwordkill-inner-bigword

These functions enable text-object operations that feel right at home if you’re coming from Vim. The new operator mode ties everything together, making complex editing operations feel natural and efficient.

Terminal Compatibility: X11 and Wayland Support

One thing that sets Fish apart is its commitment to working well across different terminal environments. Whether you’re running on X11 or making the jump to Wayland, Fish 4.4 continues to deliver a solid experience.

The Wayland Transition in 2026

Let’s talk about the elephant in the room: Wayland. If you’re still primarily on X11, you’re not alone—but the writing’s on the wall. Major distributions are defaulting to Wayland, and the ecosystem around it has matured significantly. Fish 4.4 works seamlessly on both display servers, which is increasingly important as more users make the switch.

I tested Fish 4.4 extensively on both Wayland (using GNOME and KDE Plasma) and X11 sessions, and I’m happy to report that everything just works. The terminal integration features that Fish relies on—things like OSC 133 prompt markers for shell integration—function correctly whether you’re using Alacritty on Wayland, Kitty on X11, or even something more exotic like Foot.

For Wayland users: Modern terminal emulators like Alacritty, Kitty, and Foot all provide excellent Fish support on Wayland. If you’re experiencing any issues, make sure you’re running the latest version of your terminal emulator and that it’s actually using the Wayland backend rather than falling back to Xwayland.

Terminal Feature Detection

Fish 4.4 continues the tradition established in Fish 4.0 of aggressively enabling terminal features when they’re available. This means better keyboard handling (separate bindings for Ctrl+I and Tab, for instance), improved prompt marking, and generally smarter behavior across different terminal emulators.

The shell automatically detects whether your terminal supports features like the Kitty keyboard protocol or xterm’s modifyOtherKeys, and it enables them without requiring any configuration on your part. This works consistently across both X11 and Wayland sessions, which is particularly nice if you’re running a mixed environment.

Quality-of-Life Improvements

Beyond the Vi mode improvements, Fish 4.4 includes several smaller changes that collectively make the shell more pleasant to use.

Smarter Autosuggestions

Fish has always been known for its excellent autosuggestions—those helpful gray text completions that appear as you type. Version 4.4 refines this feature by no longer showing line-wise autosuggestions that don’t begin with a command.

In practice, this means less visual noise when you’re typing. The shell won’t suggest random output from your command history that happens to match what you’re typing unless it’s actually something you can execute. It’s a subtle change, but it reduces cognitive load when you’re trying to focus.

Better Keybinding Inspection

The bind builtin now lists mappings from all modes when you don’t specify --mode. This is genuinely helpful when you’re trying to debug why a particular keybinding isn’t working or when you’ve forgotten what you’ve bound to a specific key combination.

Before this change, you had to know which mode you wanted to inspect. Now you can just run bind and see everything at once, which matches how most people actually think about keybindings.

Colorful Command History

The builtin history command now assumes your pager supports ANSI color sequences. If you’re using less -R or another color-aware pager, you’ll now see syntax highlighting in your command history, making it easier to scan through past commands visually.

Personal note: I set up less -R as my default pager years ago for exactly this kind of thing. If you haven’t done this yet, add set -gx PAGER "less -R" to your Fish config—you’ll thank me later.

macOS-Specific Fix

If you’re running Fish on macOS, you’ll appreciate that version 4.4 now properly clears the terminal’s FLUSHO flag when acquiring control of the terminal. This fixes an annoying issue that could be triggered by accidentally pressing Ctrl+O. It’s one of those bugs that doesn’t affect everyone, but if you’ve hit it, you know exactly how frustrating it is.

Visual Polish: New Color Themes

Fish 4.4 ships with a set of new Catppuccin-based color themes. If you’re not familiar with Catppuccin, it’s a popular pastel color palette that’s been gaining traction in the development tools ecosystem over the past couple of years.

The new themes provide a pleasant alternative to Fish’s default colors without requiring you to manually configure everything. You can preview and switch themes using fish_config, which has a nice web-based interface that works on both X11 and Wayland sessions.

Additionally, set_color now supports a strikethrough modifier (--strikethrough or -s). This is admittedly a niche feature—most people won’t use it daily—but if you’re building custom prompts or status lines, it gives you one more tool in your formatting toolkit.

What’s Been Removed

Not everything in 4.4 is an addition. The default Fossil prompt has been deprecated and disabled. Fossil is a version control system that’s less commonly used than Git, so this decision makes sense from a maintenance perspective.

Note: If you rely on the Fossil prompt, you can still enable it manually in your Fish configuration. The functionality isn’t gone; it’s just no longer enabled by default.

Real-World Performance and Stability

I’ve been running Fish 4.4 as my daily driver across three different machines: a laptop with Intel graphics running GNOME on Wayland, a desktop with NVIDIA hardware running KDE Plasma on X11, and a testing VM. Across all three environments, the shell has been rock-solid.

The Vi mode improvements genuinely changed how I interact with the command line. I find myself editing complex commands more efficiently, and the muscle memory from Vim just works now. The d3w pattern, in particular, has become second nature when I need to quickly delete parts of a long pipeline.

Performance-wise, I haven’t noticed any regressions. Fish remains snappy and responsive, even when dealing with large command histories or complex completions. The autosuggestion refinements actually make the shell feel slightly faster because there’s less visual processing happening when irrelevant suggestions are suppressed.

Should You Upgrade?

If you’re already using Fish, yes—absolutely upgrade to 4.4. The improvements are meaningful enough to justify the update, and the release has been stable in my testing. The Vi mode enhancements alone make it worthwhile if you use those keybindings.

If you’re not using Fish yet but you’re curious about trying a modern, user-friendly shell, 4.4 is a great entry point. The improved Vi mode makes it more appealing to Vim users, and the continued refinement of features like autosuggestions and syntax highlighting demonstrates that the project is actively maintained and thoughtfully developed.

Getting Started with Fish 4.4

Most major distributions have already packaged Fish 4.4, so installation should be straightforward:

# Ubuntu/Debian (when available in repos)
sudo apt update && sudo apt install fish

# Fedora
sudo dnf install fish

# Arch Linux
sudo pacman -S fish

# macOS with Homebrew
brew install fish

For those who prefer to build from source or need the latest version immediately, standalone builds are available on the Fish shell GitHub releases page. These are particularly useful if you SSH into systems where you don’t have package installation privileges—just copy the binary and run it.

Switching to Vi Mode

If you want to take advantage of the improved Vi mode, add this to your Fish configuration:

fish_vi_key_bindings

You can add this to ~/.config/fish/config.fish to make it persistent. To quickly test it out, just run the command in your current session.

Looking Forward

Fish 4.4 represents the kind of incremental improvement that makes software great. It’s not flashy, but it fixes real pain points and makes the tool more pleasant to use every day. The development team’s focus on Vi mode improvements and terminal compatibility shows they’re listening to their users and addressing actual needs.

As more Linux distributions make Wayland their default and users increasingly expect modern terminal features to just work, Fish’s approach of aggressive feature detection and broad compatibility will continue to pay dividends. The shell works equally well whether you’re on the latest Wayland compositor or still running a tried-and-true X11 setup.

The 215 commits in this release came from 20 contributors, nine of whom were new to the project. That kind of community involvement bodes well for Fish’s future, and it’s encouraging to see fresh contributors getting involved.

After two weeks of daily use, Fish 4.4 has earned its place as my default shell. The Vi mode improvements alone would have justified the upgrade, but the combination of better autosuggestions, improved keybinding inspection, and solid cross-platform terminal support makes this a genuinely worthwhile update. If you’ve been on the fence about trying Fish or haven’t updated in a while, now’s a great time to give it a shot.

Final Thoughts

Fish shell 4.4 isn’t revolutionary, but it doesn’t need to be. This is the kind of thoughtful, user-focused update that makes a tool better without fundamentally changing what makes it good in the first place. The Vi mode improvements bring Fish more in line with the muscle memory of Vim users, the autosuggestion refinements reduce noise, and the continued commitment to terminal compatibility ensures Fish works well across different environments.

Whether you’re running the latest Wayland compositor or sticking with X11, whether you’re on Linux, macOS, or BSD, Fish 4.4 delivers a polished, modern shell experience. And in 2026, as we continue the slow migration from X11 to Wayland and as terminal emulators continue to evolve, having a shell that just works across all these environments is increasingly valuable.

Leave a Response

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock