How I use Kate editor

(akselmo.dev)

224 points | by todsacerdoti 4 days ago ago

81 comments

  • tux3 3 days ago

    If you have an M3/M4 and are stuck on XNU like me, and you want a something between the notes app and a whole Electron IDE, it turns out that Kate also supporte macOS

    (Actually, a lot of KDE programs do, I was elated to find out I could use Dolphin as file manager when I was limited by Finder)

    I think Kate strikes this really nice middleground. It starts up immediately as just a text editor, but you can push it as far as you want to

    • emmelaich 3 days ago

      It's in homebrew.

         $ brew info kate
         ==> kate: 24.12,9168
         https://kate-editor.org/
         ...
    • oidar 3 days ago

      How did you get dolphin to run on a Mac? If you could point me to a resource that would help me out, I'd appreciate it.

      • tux3 3 days ago

        This is the documentation for building a KDE app from source: https://develop.kde.org/docs/getting-started/building/kde-bu...

        I had to install several dependencies through homebrew, ignore some default dependencies that don't make sense on mac (wayland, pipewire, etc), and then it worked.

        The build command I used, for reference: kde-builder dolphin --ignore-projects wayland plasma-wayland-protocols wayland-protocols kglobalaccel kpipewire kwayland selenium-webdriver-at-spi baloo packagekit-qt baloo-widgets

        Note also there's some mac weirdness with the Dock where some kioworker process might show up as a separate icon. I packaged it in dolphin.app MacOS bundle, gave kioworker a Info.plist with LSUIElement=true, and that got rid of the Dock glitch.

        So, I wouldn't say it's entirely painless to install. But if you're sufficiently annoyed by Finder, building Dolphin can be worth the effort.

        • whalesalad 3 days ago

          That is a lot of work just to use Dolphin. I daily drive KDE on my workstation and while it is not a terrible file explorer, I probably wouldn't go to those lengths to use it over Finder. Props for getting it done though, I didn't even realize it was possible. Makes sense though considering a lot of KDE apps are cross platform, like kdenlive.

          • tux3 3 days ago

            In fairness, I wouldn't say it's dolphin I'm attached to in particular, I think I'm just not in the target audience for Finder.

            The tradeoff is that it makes simple things simple, and everything else complicated.

            I'm uploading a config file on a website. It's in ~/.config, and any reasonable file explorer won't show hidden files by default. In Finder there's also no button or setting to show hidden files. They really can't, it would make the UI complicated.

            You can't navigate to a hidden folder by typing its name (let's not get too creative!). The file dialog box lets you type file names, as Jobs intended, anything else is an error.

            This won't be news to anyone, as most people will have run into it before. Most people probably remember that the hidden shortcut is Command + Shift + Period. But everything in Finder is like this, and I'm just reminded at every turn that I am the person Finder was specifically not built for.

            So, it's just not for me.

            • matthewmc3 3 days ago

              > You can't navigate to a hidden folder by typing its name (let's not get too creative!).

              You can, actually. ⌘-SHIFT-G in Finder lets you navigate to any folder by typing in the path - even hidden paths. No mortal user would ever be expected to know or discover that, but it's there.

              • __mharrison__ 3 days ago

                Finder is annoying for power users. Command shift g is a lifesaver.

                I think my favorite file navigator was konqueror.

                Another Mac annoyance is that the launch tool (command period) seems to forget apps. Or worse, shows the app as you type the name and hides it if you continue typing the next letter in the name. Not sure what focus group approved this...

              • 2 days ago
                [deleted]
            • narag 3 days ago

              Just curious: how does drag & drop works with Dolphin in Mac? I quit KDE because I got mad with the files drop menu. Do you also get it when installing Dolphin?

        • oidar 3 days ago

          Thank you. I'll give it a go.

    • never_inline 3 days ago

      There was also coteditor, which is based on swift ui.

    • peppers-ghost 2 days ago

      Thank you for this!

  • bobajeff 3 days ago

    Kate's a pretty good editor. I've made an attempt to replace vscode/vscodium with it once before.

    The article is right about vscode turning into proprietary mush. I use vscodium and have run into issues with plugins that require cpptools, while cpptools complains whenever you, or an extension you're using, accesses it in an editor other than vscode.

    • leo-notte 3 days ago

      how was your experience with kate as a full vscode replacement? anything major you missed or had to work around?

      • bobajeff 3 days ago

        It's been awhile but I remember there were things I was used to, some really nice things, that I didn't want to give up.

        I love vscode's markdown editing features. (pasting a link over text to create a hyperlink or dragging and dropping image files to embed images etc.) I think some of the keyboard shortcuts I was used to were different (duplicating lines, selecting all occurrences of a selected text). Behavior of word/token traversing(Ctrl + Left|Right Arrow) was different. There were some things kate couldn't do at all that I don't remember.

  • bogwog 3 days ago

    This is pretty much the exact same way I use Sublime (except the git diff stuff is done in Sublime Merge, which is a separate application)

    I've tried switching to Kate a few times since I prefer open source tools, but it feels like a major step down UX-wise. My primary workstations have been Linux with KDE Plasma for many years, but I am not a huge fan of the KDE aesthetics (which seems to aim for maximizing clutter).

    I'm generally not a picky person, but my text editor is by far my most-used tool, so it's an exception.

    • dr_kiszonka 2 days ago

      I like that you can extend Sublime with Python. I know that it will never be Emacs, but Emacs is too hard for me, while Sublime feels much more accessible.

  • HexDecOctBin 3 days ago

    One feature that is impossible to live without for me is Undo Tree. Unfortunately, the only editors that support it are Vim/Neovim and Emacs. I would love to switch to one of these modern editors, but not a single one of them supports this feature.

    • homebrewer 3 days ago

      You don't get a visible tree representation, but JetBrains at least saves every change to your files regardless of how they were edited and whether any changes were reverted. It produces a flat list though, but you do get diffs and it works across all edited files, not just the current one (it's basically a built-in mini-VCS).

      https://www.jetbrains.com/help/idea/local-history.html

    • HexDecOctBin 3 days ago

      EDIT: Actually, there is one more: https://fred-dev.tech/ But it's still deep in development, I'm keep an eye on how it turns out.

    • levodelellis 3 days ago

      I'm writing an editor. Could you explain to me the use case? I looked it up and I don't exactly understand the reason besides it might be fun to look at

      I really did not like that other editors would lose text if you pressed undo and type. The way my undo's work is if you type "a b c" and hit undo twice (so it's just "a") then type "d", then undo twice, it'll restore to "a b c"

      • HexDecOctBin 3 days ago

        Many times, I write a bunch of code before realising that a lot of it (but not all of it) is incorrect. At this point, being able to switch between two different points of history and selectively copy-paste the stuff that was correct is a godsend.

        This is especially useful if you undid some operations, typed a little and then realised that you forgot to copy some important stuff that was strewn around in the old version.

        • levodelellis 3 days ago

          That's one reason why I implemented it so it wouldn't lose information.

          Hmm. I plan to implement a diff. The way I have it, you could copy the current source, hit undo to a version you want to compare again than use the clipboard as the version to diff with (vscode calls this "Compare Active File with Clipboard".) If you mess up you can still hit undo to go through all the previous edits you made since it's not lossy. Would this be as good for your usecase?

          • HexDecOctBin 3 days ago

            A tree is essentially a nice GUI on top of what you already have. It's allows me to visually click (or navigate) to a specific point of history, instead of remembering to hit Undo 15 times.

            • ahartmetz 3 days ago

              AFAIU, it also allows you to redo, even if you accidentally added a letter after undoing. That accidental edit then adds a branch to the tree instead of replacing all the redo entries.

            • levodelellis a day ago

              Just a thought, do you want it as a tree? It seems like it'd make more sense if there was a bar or key you can press to go back and forward to the changes you want. I didn't really understand why having it as a tree was helpful.

              I'm not going to say I wont implement it, I'm just saying I'm not understanding why you want it that specific way. Is the change you want always many minutes apart and why you want it as a tree? To find the one that happened many minutes before another? I know some people like how vscode has a timeline that says how many minutes/hours ago a change was, so they can pick it out

              • HexDecOctBin 20 hours ago

                I type "A B C D". Then I undo thrice to get "A". Then I type to get "A E". And now I realise that what I actually want is "A E B D". My edits have created a branch is history. And I need to switch to the old branch and copy stuff twice (first "B" then "D"). That is why a tree is important.

      • bradrn 2 days ago

        If I understand correctly, this is the same as the default behaviour for Emacs (on top of which Undo Tree is implemented).

  • pvg 4 days ago
  • actuallyalys 3 days ago

    I don’t think it will dethrone Neovim for me, but this makes me wonder whether Kate could become my second editor and allow me to largely drop VS Code, especially with the DAP support. The session support also looks interesting.

    • israrkhan 3 days ago

      I have been using neovim extensively for past several years. I also use vscode occasionally. Last year I tried Zed and was very impressed with its speed, responsiveness and featureset. Now it is available for Linux has well, but I have not tried linux version yet.

    • nartho 3 days ago

      Have you tried zed ? I have been really impressed by it.

      • bigstrat2003 3 days ago

        I have tried zed, and promptly uninstalled once I saw it was automatically downloading and running nodejs. I want an editor that is lightweight, not one that starts running extra crap I neither need nor want in the background. That was on top of the big focus on LLM integration (itself already a significant negative for me), but which I was willing to overlook to try out the rest.

        I don't think Zed is very good in its current state. Too much extra cruft out of the box which you need to disable.

        • creatonez 3 days ago

          Using a runtime doesn't automatically mean it's bloat. I mean, do you uninstall Python from your system immediately after installing a distro?

          I would much rather an editor provide as many runtimes as possible for plugins, so that developers from all walks of life can contribute. This is largely the success story of Neovim, which lets you interface with it in 7 different languages. Most editors that are constrained to only one language for plugins have a completely barren ecosystem.

          • watermelon0 3 days ago

            The main issue is that Zed doesn't package them (or rely on having them installed on the system), but instead downloads binaries from the web.

            • tasuki 3 days ago

              Oh, that sounds pretty bad. I wonder if there's a reason...

        • d3Xt3r 3 days ago

          Are you sure that was Zed? I see that it's 98.3% coded in Rust. But if you're right and it still depends on node.js, I'll have to scratch that off my list.

          • bigstrat2003 3 days ago

            It was definitely Zed. I forget what it was that used node.js, and I was able to disable that with some effort. But it annoyed me because I shouldn't have to, you know? In my opinion the default out of the box install should be sleek and not use many resources, and only add more stuff if I ask for it.

            • cirwin 3 days ago

              Zed maintainer here.

              We use node.js to run a number of language servers and formatters (which are often written in node due to the VSCode ancestry...).

              There've been a lot of requests to disable language servers by default; but I think that's not the right default for most users – things should work out of the box.

              That said, better control over this is definitely something we will add.

              • tasuki 3 days ago

                Is it true Zed downloads node.js as a binary from the web? Why wouldn't you use the system provided node or package it with Zed if it's necessary?

                • cirwin 2 days ago

                  We currently download node if the system version isn't recent enough (we used to always download it, but I fixed that...).

            • d3Xt3r 3 days ago

              You're right, I just checked the Arch package and it has a non-optional dependency on the nodejs package[1], which means you're forced to install it even if you don't use it. That sucks. :(

              [1] https://archlinux.org/packages/extra/x86_64/zed/

          • wmedrano 3 days ago

            It's probably for some extensions. So things like LSP and formatters

        • tengbretson 3 days ago

          Do you not use anything at all that has a V8-based JavaScript runtime? Or is it the node-specific things you dislike like their bizarre Stream API?

          • bigstrat2003 3 days ago

            I actively avoid any desktop app that uses JS, yes. I find it to be a silly design choice to use a web language (which the vast majority of people, even its creator, agree is not very good) outside of the context of a web environment. And in my experience such apps are serious memory hogs (like VS Code which takes something like 1 GB of memory to display the same files that take Sublime Text 300 MB).

        • kstrauser 3 days ago

          Zed on my Mac is taking 180MB of RAM right now. That's far less proportionally than Emacs use to be teased about.

      • actuallyalys 2 days ago

        Fasterthanlime recommended it a while back on Mastodon so that did pique my interest. The focus on AI kind of put me off Zed, though. I don’t know whether that’s fair—I see one of their blog posts touts “Out of Your Face AI”—but that was my reaction.

    • shmerl 3 days ago

      I use Kate only causally for some small temporary text snippets. I use Neovim with DAP fine using nvim-dap + nvim-dap-ui. I also recently started using LSP in neovim, and it's actually pretty powerful.

      • actuallyalys 2 days ago

        I should honestly give DAP a try in Neovim. I think DAP being newer, seemingly getting less attention than other elaborate technologies to integrate like LSP or Treesitter, and having a more complex UI made me suspect it might not be reliable. Adding a DAP plugin to a secondary editor also feels less risky. But it sounds like my concerns may have been addressed, if not overblown all along.

        • shmerl 2 days ago

          If you worry about it interfering with other stuff, you can lazy load nvim-dap + nvim-dap-ui on demand (using lazy.nvim for example), but it's not really interfering with what I use in my experience.

          Plus I use sessions for key mappings, i.e. temporary sets of mappings used for debugging for example, which can be reset to what they were after debugging is finished. This way you can assign a bunch of common combos for stuff like step in / step out without it messing up other existing mappings which you can restore after you are done.

    • arendtio 3 days ago

      Well, I use KDE for a while now, but one thing I've always tried to avoid was Kate ;-)

      My primary editor is vim (cli), and my secondary editor is kwrite. Nowadays, I think kwrite is part of the Kate package, just simpler, as I don't like the whole session feature when you just want to edit a single file.

      • ognarb 3 days ago

        Kwrite is basically kate without any plugins. Both applications are hosted in the same repo and developed at the same time.

  • larusso 3 days ago

    I‘m contemplating for a while to find a replacement for VSCode. I switched to it because Atom became too slow and it had great builtin support for most stuff. But I actually was never 100% happy. I usually split my work between bigger projects and smaller file edits. And VSCode was good for the second flow. But over the years and the popularity of LSPs it kinda became dump as well. I mean the fact that if one wants to edit a python or ruby file and simply wants code formatting and a semi smart intelli sense one needs to install an lsp plus plugin etc etc. Which used to work out of the box without bigger configuration. I work on different types of projects and need a fast and quick editor from time to time. VSCode used to be that for me. But now it’s bloated as a full IDE in some cases. Will look into Kate just to see what it has to offer.

    • tanelpoder 3 days ago

      TIL about Kate editor, but after 30 years of just using vi in a terminal (Unix, Mac, even Windows in cmd.exe) I switched to Zed editor (https://zed.dev). I had tried other editors in the past, but quickly fell back to vi/vim after a few hours or days, for various reasons. Been using Zed for a couple of months now and no plans to go back. It also uses LSPs, but whenever I connect to some (Linux) dev host from Zed on my Mac, it autoinstalls clangd to a .local directory and so far I haven’t had to manually install any extra software. Just took a while to figure out the best Zed config for me. It’s very configurable, customizable, but the UI itself is snappy & clean (written in Rust, for those who care about it).

      • israrkhan 3 days ago

        I also really like Zed. But what prevents me from switching to Zed, is my workflow. I tend not to run desktop GUI applications on my main development machine (headless and sometimes remote). nvim is excellent in such circumstances. Also nvim is available on all platforms. I know Zed is also recently available on Linux, but I really doubt it will be as good as Zed on Mac.

        • ash-ali 3 days ago

          One of the biggest problems i have with running basic text editors like vim/nvim is the investment time to spin up a fully loaded workable development env; esp since i've never done it before. basic vim with some modifications in .vimrc is all i have and i know some of my colleagues are also this way!

          nowadays though i really want to use LLMs to write code for me instead of switching contexts on different platforms. can i ask what you use for LLM stuff on nvim? how do you like it compared to running bare bones vim and switching platforms?

          • israrkhan 3 days ago

            Github copilot has an official [1] neovim extension. There are also third-party plugins for Copilot, Chat, Next edit etc.

            [1] https://github.com/github/copilot.vim

            • tanelpoder 3 days ago

              It works with vanilla vim (and MacVim) these days too. "Vim 9.0.0185 or newer" is mentioned in the Getting Started section.

              I was about to install it a couple of years ago, but then started thinking about the privacy threat model.

              I realized that having a "copilot" in my everyday editor (not just for public open source coding!) is never gonna fly. I may end up accidentally uploading any file I open to a 3rd party for tab completion and "AI stuff". Even if I can configure it to hopefully ignore some directories, too risky for me. With a separate editor just for coding (Zed in my case), the risk of accidentally opening and uploading a wrong file would be much lower for me, as I'll keep using vim without any AI for everything other than OSS coding.

              Edit: I'm sure there's an option only manually load the copilot plugin when you explicitly want it, but it still makes me too uneasy.

              • pxc 3 days ago

                How hard would it be to have an editor just ignore files that aren't in source control (at least staged)?

                • 3 days ago
                  [deleted]
    • bigstrat2003 3 days ago

      Haven't used Kate, but I strongly recommend Sublime Text. It's lightweight and the plugin support means you can add more features if you need them.

      • MonkeyClub 3 days ago

        What I can't get over with Sublime is how it's $99 for an editor license, while IntelliJ is €169. It doesn't feel value for money.

      • larusso 2 days ago

        I used sublime before and was happy enough. But the license thing never sit well with me.

  • eviks 3 days ago

    > I remember having two CMake extensions where both had something I needed, but they both also overlap in some basic features, so it got very confusing.

    The easy strictly equivalent solution is to just one extension. Or does Kate have a single included plugin that covers everything those two extensions cover?

  • bornfreddy 3 days ago

    Wow, that's an app name I haven't heard in quite some time! Glad to hear it is still alive and kicking.

    I see it has a proper multicursor support, so that's nice. There are a few plugins in vscod(e/ium) I regularly use and would miss a lot - like converting between camel/kebab/snake/sentence case, generating sequence numbers/digits, and especially calculations. I'd be surprised if these minor things are supported... Still, long time ago it was already a very capable IDE, so I'm curious where it is now. I'll give it a spin...

  • rgrieselhuber 3 days ago

    Kate editor is a hidden gem.

  • AbuAssar 3 days ago

    there is one feature that I truly miss from notepad++ and couldn't find it in kate.

    the feature is the option to bookmark all matching lines in the find dialog, then from the bookmarks submenu you can delete bookmarked lines or delete unbookmarked lines.

    super useful, yet couldn't find it in any other editor.

    • jcgl 3 days ago

      You have this in vim. It’s called “the quickfix list.”

      Granted, it’s not as obvious to use as NP++ I’m sure. And it’s actually a generalized feature that works for more than just searches. But it does automatically get populated whenever you :grep in vim.

  • ryukoposting 3 days ago

    I used Kate as my main editor several years back, before switching to Sam halfway through college, then to VS Code when I wanted debugging stuff. I'll have to give it another try, I always liked it. Its multi-cursor support still strikes me as being better than VS Code's.

  • smusamashah 3 days ago

    The page doesn't say it, how well it handles very large files? Also, how does it handle editing files with various encodings? Asking this while having Notepad++ in mind.

    • badsectoracula 3 days ago

      I use Kate all the time and IME it doesn't. In fact it struggles even with relatively small files. In fact try this:

          seq -f"foo %100.100f" 1 1000 > /tmp/test1000 && kate /tmp/test1000
      
      ...and watch Kate struggle with a ~100KB file. It seems to be related to the text layout or something along these lines (i.e. it isn't because of whatever data structure it uses for text, modern PCs should be able to handle the naivest of naive text editor structures even when editing a few MBs without sweat) because the slowness is triggered whenever text is about to be displayed (e.g. when scrolling) or lines are added/removed (modifying a single line is fine, but if you move say to the middle of the file, press Enter and keep it down you'll see that it struggles to add new lines).

      I'm only using for editing text files and source code so it rarely bothers me personally but it can be annoying sometimes.

      • slightwinder 3 days ago

        > ...and watch Kate struggle with a ~100KB file

        What do you consider as struggle? Here this works fast and flawless with Kate, VS Code, vim... Though, I did not use /tmp, but $HOME. But I doubt this would make a difference, unless your KDE is broken and Kate struggles because of kio on opening the file.

        • badsectoracula a day ago

          > What do you consider as struggle?

          Choppy scrolling, taking up to a second to add a line in the middle of the text, etc. As i wrote, the issue was with scrolling and adding/removing lines - so most likely text layout stuff. The file I/O was fine.

      • quibono 3 days ago

        Just as another data point: I've used Kate for ~90MB JSON files and had no issues at all

        • zelphirkalt 3 days ago

          Could it be then, that the layout or styling of JSON is performant, while the one for random text is not? But then again what's there actually to style or layout in random text.

  • otistravel 3 days ago

    Kate seems like yet another editor trying to be everything to everyone while mastering nothing. The author complains about VSCode's extensions clashing, but then proudly lists a dozen Kate plugins they use. That's not simplicity; it's the same complexity with different branding. And let's be honest - if your workflow requires JavaScript snippets to generate blog headers, you're not using a "simple" text editor anymore.

    • bmn__ 3 days ago

      > The author complains about VSCode's extensions clashing, but then proudly lists a dozen Kate plugins they use.

      That makes sense; when I was reading this I inferred that VSCode's extensions were clashing, making him loath to use it, but Kate's were not.

      > That's not simplicity […] you're not using a "simple" text editor anymore

      Kate has literally "advanced" in its name. KWrite exists for those who need simplicity.

  • sangpugogogo 3 days ago

    I've been using Kate for quick edits but never explored its deeper features. The LSP integration and session handling look particularly useful. Good to see a thoughtful workflow built around a lightweight editor that doesn't compromise on functionality.

  • alex1115alex 3 days ago

    Surprised to see so much love for Kate here. I've always felt it has too much UI clutter for to make for a good Notepad.exe alternative, but too few features to be a good VSCode alternative. It seems most default KDE apps suffer from issues like this, to the point where I ended up using for VSCode for everything on my Linux machine (before eventually switching to MacOS and just using the Notes app for everything that isn't code).