- Published on
AstroNvim Install and Config (Based on Ubuntu)
- Authors
- Name
- Piggy DP
- @xiaozhudxiaozhu
AstroNvim Install and Config (Based on Ubuntu)
zsh (optional)
sudo apt-get install zsh -y
chsh -s /bin/zsh
reboot
reboot or open a new terminal
oh my zsh (optional)
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
1. Install Neovim
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt-get update -y
sudo apt-get install neovim -y
2. Install Xclip
sudo apt-get install xclip
3. Back up nvim
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
4. Clone AstroNvim Repository and Start
git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvim
5. Key Mappings Config
nvim ~/.config/nvim/lua/plugins/mappings.lua
Append the below code to mappings.lua
return {
{
"AstroNvim/astrocore",
---@type AstroCoreOpts
opts = {
mappings = {
-- first key is the mode
n = {
-- second key is the lefthand side of the map
-- mappings seen under group name "Buffer"
["<Leader>bn"] = { "<cmd>tabnew<cr>", desc = "New tab" },
["<Leader>bD"] = {
function()
require("astroui.status").heirline.buffer_picker(function(bufnr)
require("astrocore.buffer").close(bufnr)
end)
end,
desc = "Pick to close",
},
-- tables with just a `desc` key will be registered with which-key if it's installed
-- this is useful for naming menus
["<Leader>b"] = { desc = "Buffers" },
-- quick save
-- ["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
},
t = {
-- setting a mapping to false will disable it
-- ["<esc>"] = false,
},
},
},
},
{
"AstroNvim/astrolsp",
---@type AstroLSPOpts
opts = {
mappings = {
n = {
-- this mapping will only be set in buffers with an LSP attached
K = {
function()
vim.lsp.buf.hover()
end,
desc = "Hover symbol details",
},
-- condition for only server with declaration capabilities
gD = {
function()
vim.lsp.buf.declaration()
end,
desc = "Declaration of current symbol",
cond = "textDocument/declaration",
},
},
},
},
},
}
Your personal vim key mappings may conflict with some mappings in astronvim
You can view the following files:
nvim ~/.local/share/nvim/lazy/AstroNvim/lua/astronvim/plugins/_astrocore_mappings.lua
6. Theme
modify the community.lua
file:
nvim ~/.config/nvim/lua/community.lua
append the following code:
{ import = "astrocommunity.colorscheme.catppuccin" }
local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
For more details, please visit https://github.com/AstroNvim/astrocommunity
modify the astroui.lua
, set your theme
nvim ~/.config/nvim/lua/plugins/astroui.lua
7.Remote Server Clipboard
When we use SSH to login to a remote server(like ubuntu), our AstroNvim clipboard may not sync with the clipboard of our local machine. In this case, we can use OSC 52
. Then , we can use y
to copy content from our AstroNvim on the remote server to the local machine, and use Ctrl + V
to paste content into AstroNvim from the local machine to remote server.
The solution is:
vim ~/.config/nvim/init.lua
append the following code to init.lua
vim.o.clipboard = "unnamedplus"
local function paste()
return {
vim.fn.split(vim.fn.getreg(""), "\n"),
vim.fn.getregtype(""),
}
end
vim.g.clipboard = {
name = "OSC 52",
copy = {
["+"] = require("vim.ui.clipboard.osc52").copy("+"),
["*"] = require("vim.ui.clipboard.osc52").copy("*"),
},
paste = {
["+"] = paste,
["*"] = paste,
},
}
For more details, please visit: https://neovim.io/doc/user/provider.html#clipboard-tool