-
Notifications
You must be signed in to change notification settings - Fork 0
Enabling Horizontal Scrolling
The Typewriter.nvim
plugin for Neovim enhances the editing experience by keeping the cursor centered on the screen while typing or navigating through code. With the recent addition of the enable_horizontal_scroll
configuration option, users can now also enjoy horizontal scrolling. This feature centers the cursor horizontally within the window, providing a more focused and distraction-free coding environment.
To enable horizontal scrolling in Typewriter mode, you need to set the enable_horizontal_scroll
option to true
in the plugin configuration.
-
Open your Neovim configuration file (
init.vim
orinit.lua
):nvim ~/.config/nvim/init.vim
Or for Lua configuration:
nvim ~/.config/nvim/init.lua
-
Set the
enable_horizontal_scroll
option:If you are using
init.vim
, add the following lines:lua << EOF require('typewriter').setup({ enable_horizontal_scroll = true }) EOF
If you are using
init.lua
, add the following lines:require('typewriter').setup({ enable_horizontal_scroll = true })
-
Save and close your configuration file.
-
Restart Neovim to apply the changes:
:source ~/.config/nvim/init.vim
Or for Lua configuration:
:source ~/.config/nvim/init.lua
When enable_horizontal_scroll
is set to true
, the plugin ensures that the cursor remains horizontally centered within the window as you navigate through your code. This is particularly useful when working with long lines of code or text, as it reduces the need to manually scroll horizontally to keep the relevant portion of the line in view.
The core functionality for horizontal scrolling is implemented in the center_cursor_horizontally
function. Here is an overview of how it works:
-
Get the current window width:
local win_width = vim.api.nvim_win_get_width(0)
-
Get the current cursor column position:
local cursor_col = vim.fn.virtcol '.'
-
Calculate the left column position to center the cursor horizontally:
local left_col = math.max(cursor_col - math.floor(win_width / 2), 0) - 1
-
Disable line wrapping to ensure horizontal scrolling:
vim.api.nvim_win_set_option(0, 'wrap', false)
-
Set the window view to the calculated left column position:
vim.fn.winrestview { leftcol = left_col }
This function is integrated into the CursorMoved
and CursorMovedI
autocommands to ensure it is triggered whenever the cursor moves.
Here is a complete example configuration for enabling Typewriter mode with horizontal scrolling:
lua << EOF
require('typewriter').setup({
enable_with_zen_mode = true,
enable_with_true_zen = true,
keep_cursor_position = true,
enable_notifications = true,
enable_horizontal_scroll = true,
})
EOF
require('typewriter').setup({
enable_with_zen_mode = true,
enable_with_true_zen = true,
keep_cursor_position = true,
enable_notifications = true,
enable_horizontal_scroll = true,
})
The addition of horizontal scrolling to Typewriter.nvim provides users with an even more immersive and focused coding experience. By centering the cursor both vertically and horizontally, distractions are minimized, allowing you to concentrate on the code that matters.
If you have any questions or encounter any issues, please refer to the README or open an issue on the GitHub repository.
Thank you for exploring the Typewriter.nvim documentation. We hope you find this plugin enhances your writing and coding experience in Neovim. If you have any questions, suggestions, or contributions, please feel free to reach out or submit an issue on our GitHub repository.
Stay Connected:
Crafted with care by Josh Peterson.