Vi the way you expect it

You're always in control

Configure it to your liking


Vicious for Xcode adds Vi functionality to Xcode. Many of the traditional Vi commands work exactly as you would expect them to do. It's the perfect combination of Xcode functionality with the power of Vi!

You don't want your editor to constantly stand in your way. Vicious for Xcode is unobtrusive. It indicates the current mode and lets you enter your commands. That's it, you won't see anything else!

Vi can be used in many ways. Vicious for Xcode lets you configure the way it works to your personal needs. There's a whole preference dialog waiting for you!


What is this all about?

Vicious for Xcode is a plugin for Xcode 4 that emulates Vi keybindings in Xcode text editors. It doesn't implement all of Vi but most of the parts used in daily code editing are available.

But Xcode 4 doesn't allow plugins!

That's correct. Xcode 4 doesn't provide any documented public plugin API. However it still supports loading custom plugins the way Xcode 3 and older version did. That's how Vicious gets loaded into Xcode.

So all of Vi(m) is implemented?

Well, no. Right now Vicious supports a large subset of normal mode commands as well as the most important Ex commands. Your favourite command is missing? Tell us, we'll implement it!

Do you support blockwise selection?

Yes! Vicious supports visual mode operations with characterwise, linewise and blockwise text selection. A visual selection can also be converted to a regular Xcode selection.


How is it implemented?

Vicious embeds a small handler into Xcode's text handling system. Most of the Vi commands themselves are written in Lua. That enables easy customization and modification of commands at runtime without having to restart Xcode. Using Lua also prevents a lot of crashes that can happen when using a pure Objective C plugin implementation.

Can I still use regular Xcode commands?

Yes, for sure! Vicious allows you to use all the usual Xcode text modification commands while being in insert mode. All keybindings as well as the menu options will peacefully coexist with the Vi commands Vicious provides. In case you temporarily need to disable Vicious you can do so in the preferences dialog of Vicious added to the "Xcode" menu.