Skip to content

Instantly share code, notes, and snippets.

@anhdiepmmk
Last active October 25, 2024 10:30
Show Gist options
  • Save anhdiepmmk/a7c82a3610b66049fda149357932876e to your computer and use it in GitHub Desktop.
Save anhdiepmmk/a7c82a3610b66049fda149357932876e to your computer and use it in GitHub Desktop.
my configuration vimrc for intellij
let mapleader = " "
set relativenumber number
set surround
set ignorecase
set scrolloff=999
set highlightedyank
let g:highlightedyank_highlight_color = "rgba(160, 160, 160, 155)"
let g:highlightedyank_highlight_duration = "500"
nnoremap J 5jzz
nnoremap K 5kzz
nnoremap H ^
nnoremap L $
vnoremap > >gv
vnoremap < <gv
vnoremap <Tab> >gv
vnoremap <S-Tab> <gv
" ESC
noremap <ESC> <ESC>:noh<CR>
" Keep cursor centered vertically
noremap j jzz
noremap k kzz
noremap } }zz
noremap { {zz
noremap <C-D> <C-D>zz
noremap <C-U> <C-U>zz
" Registers
noremap <leader>rl :registers<CR>
noremap <leader>rc "+
noremap <leader>rq "q
noremap <leader>rw "w
noremap <leader>re "e
noremap <leader>rr "r
noremap <leader>rt "t
noremap <leader>ry "y
" Buffers
nnoremap <leader>bl :buffers<CR>
nnoremap <leader>bd :bdelete<CR>
nnoremap <leader>bc :%bdelete<CR>
nnoremap <leader>bn :bnext<CR>
nnoremap <leader>bp :bprevious<CR>
nnoremap <leader>be :blast<CR>
nnoremap <leader>bb :bfirst<CR>
vnoremap J :action MoveLineDown<CR>
vnoremap K :action MoveLineUp<CR>
"vnoremap J :m '<-2<CR>gv=gv
"vnoremap K :m '>+1<CR>gv=gv
"" Don't use arrow keys
map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>
vnoremap y ygv<ESC>
" Copy to clipboard
vnoremap Y "+ygv<ESC>
noremap P "+p<ESC>
"set sneak
"set ignorecase
"map <f> <Plug>(sneak-s)
"map <F> <Plug>(sneak-s)
"nmap <.> <Plug>(sneak-s)
"omap <.> <Plug>(sneak-k)
"xmap <.> <Plug>(sneak-s)
set easymotion
"" -- Suggested options --
" Show a few lines of context around the cursor. Note that this makes the
" text scroll if you mouse-click near the start or end of the window.
set scrolloff=5
" Do incremental searching.
set incsearch
set hlsearch
" Map <C-L> (redraw screen) to also turn off search highlighting until the
" next search
nnoremap <C-L> :nohl<CR><C-L>
" Don't use Ex mode, use Q for formatting.
map Q gq
"map y y`]
"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t
"" Map \r to the Reformat Code action
"map \r <Action>(ReformatCode)
"" Map <leader>d to start debug
"map <leader>d <Action>(Debug)
"" Map \b to toggle the breakpoint on the current line
"map \b <Action>(ToggleLineBreakpoint)
" Find more examples here: https://jb.gg/share-ideavimrc
# Change tmux prefix
unbind C-b
set -g prefix C-x
# Start windows and panes at 1, not 0
set -g base-index 1
setw -g pane-base-index 1
# Increase time for ctrl + b q
set -g display-panes-time 4000
# Increase history limit
set-option -g history-limit 5000
# Enable mouse usage
set-option -g mouse on
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Setup 'v' to begin selection as in Vim
unbind -T copy-mode-vi 'v'
unbind -T copy-mode-vi 'y'
unbind -T copy-mode-vi MouseDragEnd1Pane
unbind -T copy-mode-vi Enter #this is the default binding for copy (but not to system clipboard)
bind -T copy-mode-vi 'v' send-keys -X begin-selection
bind -T copy-mode-vi 'y' send-keys -X copy-pipe-no-clear 'xclip -in -selection clipboard'
bind -T copy-mode-vi Enter send-keys -X copy-pipe-no-clear 'xclip -in -selection clipboard'
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-no-clear 'xclip -in -selection clipboard'
# Double LMB Select & Copy (Word)
bind-key -T copy-mode-vi DoubleClick1Pane \
select-pane \; \
send-keys -X select-word-no-clear \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel clipboard"
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel clipboard"
# Triple LMB Select & Copy (Line)
bind-key -T copy-mode-vi TripleClick1Pane \
select-pane \; \
send-keys -X select-line \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel clipboard"
bind-key -n TripleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-line \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel clipboard"
set -g default-terminal "screen-256color"
set -g pane-border-style fg=white
set -g pane-active-border-style "bg=default fg=colour154"
# Navigate bettwen panes using hjkl
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Resize panes
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
set -g pane-border-status top
set -g pane-border-format "#{pane_index} #{pane_current_command}"
# status bar
set -g status on
set -g status-interval 1
set -g status-justify centre
set -g status-keys vi
set -g status-position bottom
set -g status-bg colour235
#setw -g window-status-activity bg=colour235
#setw -g window-status-activity fg=colour154
#setw -g window-status-separator ''
set -g status-left "#[fg=colour232,bg=colour154] #S #[fg=colour154,bg=colour238,nobold,nounderscore,noitalics]#[fg=colour222,bg=colour238] #W #[fg=colour238,bg=colour235,nobold,nounderscore,noitalics]#[fg=colour121,bg=colour235] #(whoami)  #(uptime | cut -f 4-5 -d ' ' | cut -f 1 -d ',') #[fg=colour235,bg=colour235,nobold,nounderscore,noitalics]"
set -g status-right "#[fg=colour235,bg=colour235,nobold,nounderscore,noitalics]#[fg=colour121,bg=colour235] %r  %a  %Y #[fg=colour238,bg=colour235,nobold,nounderscore,noitalics]#[fg=colour222,bg=colour238] #H #[fg=colour154,bg=colour238,nobold,nounderscore,noitalics]#[fg=colour232,bg=colour154] "
setw -g window-status-format "#[fg=colour235,bg=colour235,nobold,nounderscore,noitalics]#[default] #I  #W #[fg=colour235,bg=colour235,nobold,nounderscore,noitalics]"
setw -g window-status-current-format "#[fg=colour235,bg=colour238,nobold,nounderscore,noitalics]#[fg=colour222,bg=colour238] #I  #W  #F #[fg=colour238,bg=colour235,nobold,nounderscore,noitalics]"
-- Author: anhdiepmmk
-- TODO: dashboard
-- TODO: lsp keymap (gf, gd, gr...)
-- TODO: format code with null-ls
-- TODO: git integration
-- TODO: refactor, break init.lua to pieces
-- remap leader key to space
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-- increment timout for leader key
vim.o.timeoutlen = 10000
-- mouse support
vim.o.mouse = 'a'
-- cursor
vim.o.cursorline = true
-- auto write and read
vim.o.autowrite = true
vim.o.autoread = true
-- using relative number
vim.o.number = true
vim.o.relativenumber = true
-- indent
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.softtabstop = 2
vim.o.expandtab = true
vim.o.autoindent = true
vim.o.smartindent = true
-- search
vim.o.ignorecase = true
vim.o.incsearch = true
vim.o.smartcase = true
-- keep cursor centerd
vim.o.scrolloff = 999
-- keybindings
-- select all file content
vim.api.nvim_set_keymap('', '<C-a>', "<ESC>ggVG", { noremap = false })
-- duplicate selected lines
vim.api.nvim_set_keymap('v', 'D', "yp", { noremap = false })
-- move selected lines
vim.api.nvim_set_keymap('v', 'J', "<cmd>'<,'>m '>+1<CR>gv=gv", { noremap = true })
vim.api.nvim_set_keymap('v', 'K', "<cmd>'<,'>m '<-2<CR>gv=gv", { noremap = true })
-- keep cursor position after yank
vim.api.nvim_set_keymap('v', 'y', 'ygv<ESC>', { noremap = true })
-- highlight on yank (no plugin needed, this is build-in function just for neovim 0.5)
vim.cmd[[au TextYankPost * silent! lua vim.highlight.on_yank()]]
-- indent selected lines and keep selection on these lines
vim.api.nvim_set_keymap('v', '>', '>gv', { noremap = true })
vim.api.nvim_set_keymap('v', '<', '<gv', { noremap = true })
vim.api.nvim_set_keymap('v', '<TAB>', '>gv', { noremap = true })
vim.api.nvim_set_keymap('v', '<S-TAB>', '<gv', { noremap = true })
-- clear hightlight
vim.api.nvim_set_keymap('n', '<M-l>', '<cmd>noh<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>l', '<cmd>noh<CR>', { noremap = true })
-- esc
vim.api.nvim_set_keymap('i', '<ESC>', '<ESC><cmd>silent! update<CR>', { noremap = true })
vim.api.nvim_set_keymap('i', 'jk', '<ESC>', { noremap = false })
-- this make sure when hit esc button at normal mode data will be write to disk
vim.api.nvim_set_keymap('n', '<ESC>', '<ESC><cmd>silent! update | noh<CR>', { noremap = true })
-- saving (actually we already remap save on press <ESC> then this will be unnecessary,
-- but i realized that we still need this due to some change in normal mode)
vim.api.nvim_set_keymap('', '<C-s>', '<cmd>wa<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>s', '<cmd>wa<CR>', { noremap = true })
-- disable arrow keys
vim.api.nvim_set_keymap('', '<Up>', "<cmd>echoe 'please use k'<CR>", { noremap = true })
vim.api.nvim_set_keymap('', '<Down>', "<cmd>echoe 'please use j'<CR>", { noremap = true })
vim.api.nvim_set_keymap('', '<Left>', "<cmd>echoe 'please use h'<CR>", { noremap = true })
vim.api.nvim_set_keymap('', '<Right>', "<cmd>echoe 'please use l'<CR>", { noremap = true })
-- quick navigation
vim.api.nvim_set_keymap('n', 'J', '5j', { noremap = true })
vim.api.nvim_set_keymap('n', 'K', '5k', { noremap = true })
-- quick tab navigation
vim.api.nvim_set_keymap('n', 'L', '<cmd>bn<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', 'H', '<cmd>bp<CR>', { noremap = true })
-- split
vim.api.nvim_set_keymap('n', '<leader>\\', '<cmd>vsplit<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>/', '<cmd>split<CR>', { noremap = true })
-- registers (map y,Y = "+y, p,P = "+p)
vim.api.nvim_set_keymap('', 'Y', '"+y<CR>', { noremap = true })
vim.api.nvim_set_keymap('', 'P', '"+p<CR>', { noremap = true })
vim.api.nvim_set_keymap('', '<leader>rl', '<cmd>registers<CR>', { noremap = true })
vim.api.nvim_set_keymap('', '<leader>rc', '"+', { noremap = true })
vim.api.nvim_set_keymap('', '<leader>rq', '"q', { noremap = true })
vim.api.nvim_set_keymap('', '<leader>rw', '"w', { noremap = true })
vim.api.nvim_set_keymap('', '<leader>re', '"e', { noremap = true })
vim.api.nvim_set_keymap('', '<leader>rr', '"r', { noremap = true })
vim.api.nvim_set_keymap('', '<leader>rt', '"t', { noremap = true })
vim.api.nvim_set_keymap('', '<leader>ry', '"y', { noremap = true })
-- buffers
vim.api.nvim_set_keymap('n', '<leader>bl', '<cmd>buffers<CR>', { noremap = true})
vim.api.nvim_set_keymap('n', '<leader>bd', '<cmd>bdelete!<CR>', { noremap = true})
vim.api.nvim_set_keymap('n', '<leader>bc', '<cmd>%bdelete!<CR>', { noremap = true})
vim.api.nvim_set_keymap('n', '<leader>bn', '<cmd>bnext<CR>', { noremap = true})
vim.api.nvim_set_keymap('n', '<leader>bp', '<cmd>bprevious<CR>', { noremap = true})
vim.api.nvim_set_keymap('n', '<leader>be', '<cmd>blast<CR>', { noremap = true})
vim.api.nvim_set_keymap('n', '<leader>bb', '<cmd>bfirst<CR>', { noremap = true})
vim.api.nvim_set_keymap('n', '<leader>bo', '<cmd>%bdelete! | e#<CR>', { noremap = true})
-- tabs
-- resize split
-- navigation bettwen split
vim.api.nvim_set_keymap('n', '<C-j>', '<C-w>j', { noremap = true })
vim.api.nvim_set_keymap('n', '<C-k>', '<C-w>k', { noremap = true })
vim.api.nvim_set_keymap('n', '<C-l>', '<C-w>l', { noremap = true })
vim.api.nvim_set_keymap('n', '<C-h>', '<C-w>h', { noremap = true })
vim.api.nvim_set_keymap('n', '<TAB>', '<C-w>w', { noremap = true })
vim.api.nvim_set_keymap('n', '<S-TAB>', '<C-w>W', { noremap = true })
vim.api.nvim_set_keymap('n', '<C-q>', '<cmd>update | q<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>q', '<cmd>update | q<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<C-Q>', '<cmd>bufdo update | qa<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>Q', '<cmd>bufdo update | qa<CR>', { noremap = true })
-- only display single window
vim.api.nvim_set_keymap('n', '<M-o>', '<cmd>wa | only<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>o', '<cmd>wa | only<CR>', { noremap = true })
-- nvim tree
-- vim.api.nvim_set_keymap('n', '<leader>nt', '<cmd>NvimTreeToggle<CR>', { noremap = true })
-- vim.api.nvim_set_keymap('n', '<leader>nr', '<cmd>NvimTreeRefresh<CR>', { noremap = true })
-- vim.api.nvim_set_keymap('n', '<leader>nf', '<cmd>NvimTreeFindFile<CR>', { noremap = true })
-- neo tree
vim.api.nvim_set_keymap('n', '<leader>nt', '<cmd>Neotree toggle<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>nf', '<cmd>Neotree focus<CR>', { noremap = true })
-- telescope
vim.api.nvim_set_keymap('n', '<leader>tf', '<cmd>Telescope find_files<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>tg', '<cmd>Telescope live_grep<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>tb', '<cmd>Telescope buffers<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>th', '<cmd>Telescope help_tags<cr>', { noremap = true })
-- packer
vim.api.nvim_set_keymap('n', '<leader>pc', '<cmd>PackerCompile<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>pi', '<cmd>PackerInstall<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>ps', '<cmd>PackerSync<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>pS', '<cmd>PackerStatus<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>pu', '<cmd>PackerUpdate<CR>', { noremap = true })
-- toggleterm
vim.api.nvim_set_keymap('n', '<leader>cf', '<cmd>ToggleTerm direction=float<cr>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>ch', '<cmd>ToggleTerm size=10 direction=horizontal<cr>', { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>cv', '<cmd>ToggleTerm size=80 direction=vertical<cr>', { noremap = true })
-- plugins
packer = require('packer')
packer.startup(function(use)
use 'wbthomason/packer.nvim'
-- Movement
use 'easymotion/vim-easymotion'
-- Surround
use 'tpope/vim-surround'
-- Commentary
use 'tpope/vim-commentary'
-- Auto close pairs
use 'jiangmiao/auto-pairs'
-- Language server protocol
use 'neovim/nvim-lspconfig'
-- use 'williamboman/nvim-lsp-installer'
-- use {
-- 'kyazdani42/nvim-tree.lua',
-- requires = {
-- 'kyazdani42/nvim-web-devicons',
-- },
-- }
use {
'akinsho/bufferline.nvim',
tag = "*",
requires = 'kyazdani42/nvim-web-devicons'
}
use {
'nvim-neo-tree/neo-tree.nvim',
branch = 'v2.x',
requires = {
'nvim-lua/plenary.nvim',
'kyazdani42/nvim-web-devicons',
'MunifTanjim/nui.nvim',
}
}
use {
'nvim-telescope/telescope.nvim',
requires = { {'nvim-lua/plenary.nvim'} }
}
use 'navarasu/onedark.nvim'
use {
'nvim-lualine/lualine.nvim',
requires = { 'kyazdani42/nvim-web-devicons', opt = true }
}
use {"akinsho/toggleterm.nvim"}
use {
'hrsh7th/nvim-cmp',
requires = {
'hrsh7th/cmp-buffer',
'hrsh7th/cmp-nvim-lsp',
-- 'quangnguyen30192/cmp-nvim-ultisnips',
'hrsh7th/cmp-nvim-lua',
'octaltree/cmp-look',
'hrsh7th/cmp-path',
'hrsh7th/cmp-calc',
'f3fora/cmp-spell',
'hrsh7th/cmp-emoji'
}
}
use {
'nvim-treesitter/nvim-treesitter',
run = ':TSUpdate'
}
end)
-- treesitter
require'nvim-treesitter.configs'.setup {
ensure_installed = { "javascript", "lua", "typescript" },
sync_install = false,
ignore_install = {},
highlight = {
enable = true,
disable = {},
additional_vim_regex_highlighting = false,
},
}
-- bufferline
vim.opt.termguicolors = true
require("bufferline").setup {}
-- nvim-tree
-- require'nvim-tree'.setup {
-- }
-- toggleterm
require('toggleterm').setup {
}
-- neotree
require('neo-tree').setup {
close_if_last_window = false
}
-- onedark
require('onedark').setup {
style = 'darker'
}
require('onedark').load()
-- lualine
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'onedark',
component_separators = { left = '', right = ''},
section_separators = { left = '', right = ''},
disabled_filetypes = {},
always_divide_middle = true,
globalstatus = false,
},
sections = {
lualine_a = {'mode'},
lualine_b = {'branch', 'diff', 'diagnostics'},
lualine_c = {'filename'},
lualine_x = {'encoding', 'fileformat', 'filetype'},
lualine_y = {'progress'},
lualine_z = {'location'}
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {'filename'},
lualine_x = {'location'},
lualine_y = {},
lualine_z = {}
},
tabline = {},
extensions = {}
}
-- cmp-nvim-lsp
require('cmp').setup {
sources = {
{ name = 'nvim_lsp' }
}
}
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
-- cmp-nvim-ultisnips
-- require("cmp_nvim_ultisnips").setup {
-- filetype_source = "treesitter",
-- show_snippets = "all",
-- documentation = function(snippet)
-- return snippet.description
-- end
-- }
-- lsp installer
-- local lsp_installer = require('nvim-lsp-installer')
-- lsp_installer.on_server_ready(function(server)
-- local opts = {}
-- server:setup(opts)
-- end)
-- lsgconfig
local opts = { noremap = true }
vim.api.nvim_set_keymap('n', '<space>e', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
vim.api.nvim_set_keymap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
vim.api.nvim_set_keymap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
vim.api.nvim_set_keymap('n', '<space>q', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts)
local on_attach = function(client, bufnr)
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
end
local servers = { 'eslint', 'tsserver' }
for _, lsp in pairs(servers) do
require('lspconfig')[lsp].setup {
capabilities = capabilities,
on_attach = on_attach,
-- flags = {
-- debounce_text_changes = 150,
-- }
-- cmd = {
-- 'typescript-language-server', '--stdio'
-- }
}
end
let mapleader=" "
set mouse=a
set cursorline
set cursorcolumn
set relativenumber number
set list
set listchars=tab:\¦\
set tabstop=4 shiftwidth=4 expandtab
set hlsearch incsearch
set ignorecase smartcase
" Clear last search highlighting
nnoremap <C-l> :noh<CR>
vnoremap <Tab> >gv
vnoremap <S-Tab> <gv
vnoremap > >gv
vnoremap < <gv
vmap y ygv<Esc>
vnoremap K :m '<-2<CR>gv=gv
vnoremap J :m '>+1<CR>gv=gv
nnoremap <M-j> <C-w>j
nnoremap <M-k> <C-w>k
nnoremap <M-h> <C-w>h
nnoremap <M-l> <C-w>l
map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>
call plug#begin()
Plug 'machakann/vim-highlightedyank'
Plug 'preservim/nerdtree'
Plug 'ryanoasis/vim-devicons'
Plug 'Xuyuanp/nerdtree-git-plugin'
" Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'jiangmiao/auto-pairs'
Plug 'alvan/vim-closetag'
Plug 'tpope/vim-commentary'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'voldikss/vim-floaterm'
Plug 'vim-airline/vim-airline'
Plug 'morhetz/gruvbox'
Plug 'easymotion/vim-easymotion'
Plug 'justinmk/vim-sneak'
Plug 'tpope/vim-surround'
Plug 'michaeljsmith/vim-indent-object'
Plug 'tpope/vim-fugitive'
Plug 'wfxr/minimap.vim'
call plug#end()
let g:highlightedyank_highlight_duration = 500
colorscheme gruvbox
" let NERDTreeMapOpenInTab='<TAB>'
" let NERDTreeMapOpenInTabSilent='<ENTER>'
" Open nerdtree automatically when start vim on a folder
let g:NERDTreeHijackNetrw = 1
au VimEnter NERD_tree_1 enew | execute 'NERDTree '.argv()[0]
" Auto-open NERDTree in "EVERY" tab
autocmd VimEnter * NERDTree
autocmd BufEnter * NERDTreeMirror
" Close vim NERDtree on close of file
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree")
\ && b:NERDTree.isTabTree()) | q | endif
nnoremap <leader>n :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
" Replace f with sneak
map f <Plug>Sneak_s
map F <Plug>Sneak_S
" Restore original s
map s s
@anhdiepmmk
Copy link
Author

Mode letters:

n: normal only
v: visual and select
o: operator-pending
x: visual only
s: select only
i: insert
c: command-line
l: insert, command-line, regexp-search (and others. Collectively called "Lang-Arg" pseudo-mode)

@anhth99
Copy link

anhth99 commented Jan 11, 2023

Em cảm ơn Anh <3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment