-- Install Lazy package local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", -- latest stable release lazypath, }) end vim.opt.rtp:prepend(lazypath) -- Lazy setup require("lazy").setup({ -- Config defaults = { lazy = true }, -- Packages "asolkar/vim-color-molokini", "navarasu/onedark.nvim", "kyazdani42/nvim-web-devicons", "nvim-lualine/lualine.nvim", "preservim/nerdtree", "tpope/vim-fugitive", "mhinz/vim-signify", "lewis6991/gitsigns.nvim", "mg979/vim-visual-multi", "jiangmiao/auto-pairs", "luochen1990/rainbow", "tpope/vim-surround", "nathanaelkane/vim-indent-guides", -- "https://github.com/intel-sandbox/vim-iosf.git", -- intel -- "https://github.com/intel-sandbox/vim-pcietrk", -- intel "vhda/verilog_systemverilog.vim", { 'nvim-telescope/telescope.nvim', tag = '0.1.2', dependencies = { 'nvim-lua/plenary.nvim' } }, { 'nvim-telescope/telescope-fzf-native.nvim', -- build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' build = 'make' } }) -- LuaLine require('lualine').setup { options = { icons_enabled = false, theme = 'nightfly', section_separators = { left = '', right = '' }, component_separators = { left = '', right = '' } }, sections = { lualine_c = { { 'filename', path = 2, symbols = { modified = ' ●', -- Text to show when the buffer is modified alternate_file = ' ↻', -- Text to show to identify the alternate file directory = ' ▶', -- Text to show when the buffer is a directory }, } } }, tabline = { lualine_a = { { 'buffers', show_filename_only = true, -- Shows shortened relative path when set to false. hide_filename_extension = false, -- Hide filename extension when set to true. show_modified_status = true, -- Shows indicator when the buffer is modified. mode = 4, -- 0: Shows buffer name -- 1: Shows buffer index -- 2: Shows buffer name + buffer index -- 3: Shows buffer number -- 4: Shows buffer name + buffer number max_length = vim.o.columns * 2 / 3, -- Maximum width of buffers component, -- it can also be a function that returns -- the value of `max_length` dynamically. symbols = { modified = ' ●', -- Text to show when the buffer is modified alternate_file = ' ↻', -- Text to show to identify the alternate file directory = ' ▶', -- Text to show when the buffer is a directory }, }} } } -- -- Gitsigns -- -- See `:help gitsigns.txt` -- require('gitsigns').setup { -- signs = { -- add = { text = '+' }, -- change = { text = '~' }, -- delete = { text = '_' }, -- topdelete = { text = '‾' }, -- changedelete = { text = '~' }, -- }, -- } -- Onedark theme require('onedark').setup { style = 'deep' } require('onedark').load() -- [[ Setting options ]] -- See `:help vim.o` if vim.g.neovide then vim.o.guifont = "Iosevka Term:h12" vim.g.neovide_scale_factor = 1.0 end -- Set highlight on search vim.o.hlsearch = true -- Highlight problematic whitespace vim.o.list = true vim.opt.listchars = { tab = '▶ ', trail = '●', extends = '#', nbsp = '.' } -- Whitespace/tab management vim.opt.expandtab = true vim.opt.tabstop = 4 vim.opt.softtabstop = 4 vim.opt.shiftwidth = 4 -- Make line numbers default vim.wo.number = true vim.opt.colorcolumn = '120' vim.opt.cursorline = true -- Enable mouse mode vim.o.mouse = 'a' -- Enable break indent vim.o.breakindent = true vim.o.wrap = false -- Save undo history vim.o.undofile = true -- Case insensitive searching UNLESS /C or capital in search vim.o.ignorecase = true vim.o.smartcase = true -- Decrease update time vim.o.updatetime = 250 vim.wo.signcolumn = 'yes' -- Set colorscheme vim.o.termguicolors = true -- vim.cmd [[colorscheme molokini]] -- vim.cmd.colorscheme('molokini') vim.cmd.colorscheme('onedark') -- Set completeopt to have a better completion experience vim.o.completeopt = 'menuone,noselect' -- Do not auto read file when in focus vim.o.autoread = false -- [[ Basic Keymaps ]] -- Set as the leader key -- See `:help mapleader` -- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) vim.g.mapleader = ',' vim.g.maplocalleader = ',' -- Keymaps for better default experience -- See `:help vim.keymap.set()` vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) -- Remap for dealing with word wrap vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) vim.api.nvim_set_keymap('n', '', ':bn', { noremap = 1 }) vim.api.nvim_set_keymap('v', '', ':bn', { noremap = 1 }) vim.api.nvim_set_keymap('n', '', ':bp', { noremap = 1 }) vim.api.nvim_set_keymap('n', '', ':e', { noremap = 1 }) vim.api.nvim_set_keymap('n', '', 'w', { noremap = 1 }) vim.api.nvim_set_keymap('n', '', 'W', { noremap = 1 }) -- S-F6 (F18 defined in ST's config.h) vim.api.nvim_set_keymap('n', '', 'o', { noremap = 1 }) vim.api.nvim_set_keymap('n', '', 'v', { noremap = 1 }) vim.api.nvim_set_keymap('n', '', 's', { noremap = 1 }) -- S-F8 (F20 defined in ST's config.h) vim.api.nvim_set_keymap('n', '', ':confirm bd', { noremap = 1 }) -- C-F11 (F35 defined in ST's config.h) vim.api.nvim_set_keymap('v', '','"*ygv', { noremap = 1 }) -- Copy selection to clipboard vim.api.nvim_set_keymap('v', '<2-LeftRelease>','"*ygv', { noremap = 1 }) -- Copy word selection to clipboard vim.api.nvim_set_keymap('v', '<3-LeftRelease>','"*ygv', { noremap = 1 }) -- Copy line selection to clipboard vim.api.nvim_set_keymap('v', '<4-LeftRelease>','"*ygv', { noremap = 1 }) -- Copy column selection to clipboard vim.api.nvim_set_keymap('v', '', '"hy/h', { noremap = 1 }) -- Search selected text vim.api.nvim_set_keymap('n', '', 'za', { noremap = 1 }) -- Toggle fold vim.api.nvim_set_keymap('v', '<', '', '>gv', { noremap = 1 }) -- Preserve selection after right indent vim.api.nvim_set_keymap('v', 'Q', 'gqa', { noremap = 1 }) -- Reflow visually highlighted lines with Q vim.api.nvim_set_keymap('n', 'Q', 'gq', { noremap = 1 }) -- Reflow text -- Insert time/date stamps vim.api.nvim_set_keymap('n', 'td', 'i=strftime(\'%Y/%m/%d\')', { noremap = 1 }) -- 'Insert [T]imestamp - [d]ate' vim.api.nvim_set_keymap('n', 'tt', 'i=strftime(\'%Y/%m/%d %H:%M:%S\')', { noremap = 1 }) -- 'Insert [T]imestamp - date[t]ime' vim.g.rainbow_active = 1 -- 0 if you want to enable it later via :RainbowToggle -- vim.g.iosftrk_folddisable = 1 -- intel -- vim.g.iosfsbtrk_folddisable = 1 -- intel -- vim.g.pcietrk_folddisable = 1 -- intel -- [[ Highlight on yank ]] -- See `:help vim.highlight.on_yank()` local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) vim.api.nvim_create_autocmd('TextYankPost', { callback = function() vim.highlight.on_yank() end, group = highlight_group, pattern = '*', }) -- NERDTree vim.api.nvim_set_keymap('n', '', ':NERDTreeToggle %', { noremap = 1 }) vim.g.NERDTreeShowBookmarks = 1 vim.g.NERDTreeIgnore = {'\\.py[cd]$', '\\~$', '\\.swo$', '\\.swp$', '^\\.git$', '^\\.hg$', '^\\.svn$', '\\.bzr$'} vim.g.NERDTreeChDirMode = 3 vim.g.NERDTreeQuitOnOpen = 1 vim.g.NERDTreeMouseMode = 2 vim.g.NERDTreeShowHidden = 1 vim.g.NERDTreeKeepTreeInNewTab = 1 vim.g.nerdtree_tabs_open_on_gui_startup = 0 -- Filetype assignments - TODO: Is there an automatic way for this? vim.cmd("au! BufRead,BufNewFile *.sv,*.svh set filetype=verilog_systemverilog") vim.cmd("au! BufRead,BufNewFile *iosfsb_trk.out set filetype=iosfsbtrk") vim.cmd("au! BufRead,BufNewFile *iosf_trk.out set filetype=iosftrk") -- [[ Configure Telescope ]] -- See `:help telescope` and `:help telescope.setup()` require('telescope').setup { defaults = { mappings = { i = { [''] = false, [''] = false, }, }, }, } -- Enable telescope fzf native, if installed pcall(require('telescope').load_extension, 'fzf') -- See `:help telescope.builtin` vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) vim.keymap.set('n', '', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) vim.keymap.set('n', '/', function() -- You can pass additional configuration to telescope to change theme, layout, etc. require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false, }) end, { desc = '[/] Fuzzily search in current buffer]' }) vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ft=lua ts=4 sts=4 sw=4 et