如何让 vim 成为我们的神器(小结)
网络编程 2021-07-05 12:59www.168986.cn编程入门
这篇文章主要介绍了如何让 vim 成为我们的神器(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化随着长沙网络推广来一起学习学习吧
Vim 是一个上古神器,刚刚接触的同学可能很难驾驭,本篇文章主要带领大家快速入门,并持续分享当前流行的一些 vim-plugin,有兴趣的同学还可以参考 to-vim-tmux-zsh 仓库继续研究 Tmux 和 Zsh。
Vim 的优势
- Vim 是一个完全 跨平台 的编辑器;
- Vim 是一个高度 可定制、可扩展 的编辑器;
- Vim 有着 良好的生态 环境;
新手指南
$ vimtutor // vim 教程
Vim 模式
- 普通模式: 默认模式,可用于文本删除、替换,恢复、粘贴等操作;
- 插入模式: 输入 i 进入插入模式,相当于普通编辑器的编辑模式;
- 可视模式: 输入 v 进入可视模式,选择文本,进行复制等操作;
- 命令模式: 输入 : 进入命令模式,可执行执行内部和外部命令;
移动光标
- hjkl: 上下左右;
- 2w向前移动两个单词;
- 3e向前移动到第 3 个单词的末尾;
- 0移动到行首;
- \$当前行的末尾;
- H光标移动到顶部;
- M光标移动到中间;
- L光标移动到底部;
- gf根据 path 跳转到指定文件;
- gg第一行;
- G一行;
- 行号 + G指定行;
- ( ): 移到上一句和下一句;
- { }: 移到上一段和下一段;
- ctrl + o跳转回之前的位置;
- ctrl + i返回跳转之前的位置;
- ctrl + d向下移动半页;
- ctrl + u向上移动半页;
- ctrl + f向下移动整页;
- ctrl + b向上移动整页;
退出
- esc进入普通模式;
- :q!不保存退出;
- :wq保存后退出;
删除
- x删除当前字符;
- dw删除至当前单词末尾;
- de删除至当前单词末尾,包括当前字符;
- d\$删除至当前行尾;
- dd删除整行;
- 2dd删除两行;
修改
- i插入文本;
- a在当前字符后面进入插入模式;
- A当前行末尾添加;
- r替换当前字符;
- o: 打开新的一行进入插入模式;
- s删除一个字符然后进入插入模式;
- 修改整行;
撤销
- u撤销
- ctrl + r 取消撤销
复制粘贴剪切
- y复制
- p粘贴
- yy复制当前行
- dd剪切当前行
文件
- :e! 强制刷新该文件
- ctrl + g 显示当前行以及文件信息
查找
- /正向查找(n继续查找,N相反方向继续查找)
- ?逆向查找
- %查找配对的 {,[,(
替换
- :s/old/new替换该行第一个匹配串
- :s/old/new/g替换全行的匹配串
- :%s/old/new/g替换整个文件的匹配串
基本配置
创建 Vim 的配置文件 .vimrc
touch ~/.vimrc
文件编码
set enc=utf-8
不和 vi 兼容
set noswapfile
备份和撤销文件
set nobackup set noswapfile if has('persistent_undo') set undofile set undodir=~/.vim/undodir if !isdirectory(&undodir) call mkdir(&undodir, 'p', 0700) endif endif
中文
set fileencodings=ucs-bom,utf-8,gb18030,latin1
鼠标支持
if has('mouse') if has('gui_running') || (&term =~ 'xterm' && !has('mac')) set mouse=a else set mouse=nvi endif endif set clipboard=unnamed
设置文本菜单
if has('gui_running') let do_syntax_sel_menu = 1 let do_no_lazyload_menus = 1 endif if !has('gui_running') if has('wildmenu') set wildmenu set cpoptions-=< set wildcharm=<C-Z> nnoremap <F10> :emenu <C-Z> inoremap <F10> <C-O>:emenu <C-Z> endif endif
查找
set ignorecase set smartcase set hlsearch set incsearch nnoremap <silent> <F2> :nohlsearch<CR> inoremap <silent> <F2> <C-O>:nohlsearch<CR>
显示行号
set number
设置缩进
set shiftwidth=2 set tabs=2
突出显示当前行
set cursorline
启动 vim 时关闭折叠代码
set nofoldenable
主题
syntax enable colorscheme one set background=dark
背景透明
hi Normal ctermfg=252 ctermbg=none
插件配置
使用 vim-plug 管理插件
树形目录
Plug 'scrooloose/nerdtree' " https://github./preservim/nerdtree Plug 'jistr/vim-nerdtree-tabs' " https://github./jistr/vim-nerdtree-tabs Plug 'Xuyuanp/nerdtree-git-plugin' " https://github./Xuyuanp/nerdtree-git-plugin Plug 'ryanoasis/vim-devicons' " https://github./ryanoasis/vim-devicons Plug 'tiagofumo/vim-nerdtree-syntax-highlight' " https://github./tiagofumo/vim-nerdtree-syntax-highlight Plug 'tpope/vim-eunuch' " https://github./tpope/vim-eunuch map <C-n> :NERDTreeToggle<CR> let NERDTreeMinimalUI = 1 let NERDTreeShowHidden = 1 let g:nerdtree_tabs_open_on_console_startup = 1 nnoremap <F5> :UndotreeToggle<cr> " i 在新的水平分割的窗口中打开 " s 在新的竖直分割的窗口中打开 " t 在标签页中打开 " go 预览文件 " r 刷新光标所在的目录 " R 刷新当前根路径 " I 显示隐藏文件 " m 显示文件操作菜单 " C 将根路径设置为光标所在的目录 " u 设置上级目录为根路径 " gT 前一个 tab " gt 后一个 tab " <C-W> 加方向键(h、j、k、l、<Left> 等)可以在窗口之间跳转 " <C-W> + w 跳转到下一个窗口 " <C-W> + s 和 :split 作用相同,把当前窗口横向一分为二 " <C-W> + v 和 :vsplit 作用相同,把当前窗口纵向一分为二 " <C-W> + o 或 :only 只保留当前窗口,关闭其他所有窗口
标签
Plug 'majutsushi/tagbar' " https://github./majutsushi/tagbar nnoremap <F9> :TagbarToggle<CR> inoremap <F9> <C-O>:TagbarToggle<CR>
自动补全
Plug 'Valloric/YouCompleteMe' " https://github./ycm-core/YouCompleteMe Plug 'Raimondi/delimitMate' " https://github./Raimondi/delimitMate nnoremap <Leader>fi :YcmCompleter FixIt<CR> nnoremap <Leader>gd :YcmCompleter GoToDefinition<CR>
语法高亮,检查
Plug 'sheerun/vim-polyglot' " https://github./sheerun/vim-polyglot Plug 'w0rp/ale' " https://github./w0rp/ale let g:ale_fix_on_save = 1 let g:ale_sign_column_always = 1 let g:ale_sign_error = '●' let g:ale_sign_warning = '▶' nmap <silent> <C-k> <Plug>(ale_previous_wrap) nmap <silent> <C-j> <Plug>(ale_next_wrap)
全局搜索,快速打开文件
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " https://github./junegunn/fzf Plug 'junegunn/fzf.vim' " https://github./junegunn/fzf.vim Plug 'ctrlpvim/ctrlp.vim' " https://github./ctrlpvim/ctrlp.vim let g:ctrlp_user_mand = ['.git', 'cd %s && git ls-files -co --exclude-standard'] let g:ctrlp_regexp = 1 " <c-r>: 切换匹配模式 " <c-t>在新的 tab 中打开 " :Rg
状态条
Plug 'vim-airline/vim-airline' " https://github./vim-airline/vim-airline Plug 'vim-airline/vim-airline-themes' " https://github./vim-airline/vim-airline-themes let g:airline_theme='onedark' let g:airline_powerline_fonts = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#formatter = 'unique_tail' let g:airline#extensions#ale#enabled = 1 let g:airline#extensions#tabline#buffer_nr_show = 1 let g:airline#extensions#nerdtree_statusline = 0 let g:airline_section_c = ''
注释
Plug 'scrooloose/nerdmenter' " https://github./preservim/nerdmenter let g:NERDSpaceDelims = 1 let g:NERDDefaultAlign = 'left' " <leader>c<space> 注释/取消注释 " <leader>ca 切换 // 和 / / " <leader>cs / 块注释 / " <leader>cm 只用一组符号注释 " <leader>cA 在行尾添加注释
git
Plug 'airblade/vim-gitgutter' " https://github./airblade/vim-gitgutter Plug 'tpope/vim-fugitive' " https://github./tpope/vim-fugitive Plug 'tpope/vim-rhubarb' " https://github./tpope/vim-rhubarb set updatetime=100 let g:gitgutter_max_signs = -1 " jump to next hunk: ]c " jump to previous hunk: [c " stage the hunk: <Leader>hs " undo the hunk: <Leader>hu " preview the hunk: <Leader>hp " :G " :Gvdiffsplit " :GBrowse " " s: 加到暂存区中 " u: 重置加入暂存区的修改 " =: 切换 diff 显示 " : 提交当前暂存区中的文件
Markdown
Plug 'iamo/markdown-preview.nvim', { 'do': 'cd app && yarn install' } " https://github./iamo/markdown-preview.nvim " :MarkdownPreview " :MarkdownPreviewS
Emmet
Plug 'mattn/emmet-vim' " https://github./mattn/emmet-vim let g:user_emmet_leader_key='<C-Z>' " <C-Z>,
Prettier
Plug 'prettier/vim-prettier', { 'do': 'npm install' } " https://github./prettier/vim-prettier autocmd BufWritePre .js,.jsx,.mjs,.ts,.tsx,.css,.less,.scss,.json,.graphql,.md,.vue,.yaml,.html PrettierAsync " :PrettierAsync
Wakatime
Plug 'wakatime/vim-wakatime' " https://github./wakatime/vim-wakatime "
Whitespace
Plug 'ntpeters/vim-better-whitespace' " https://github./ntpeters/vim-better-whitespace let g:better_whitespace_enabled=1 " :StripWhitespace
,呈上 to-vim-tmux-zsh 仓库可供参考,顾名思义,除了 vim,还有 tmux 和 zsh 的相关内容。
到此这篇关于如何让 vim 成为我们的神器(小结)的文章就介绍到这了,更多相关vim 使用入门 内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程