加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 服务器 > 安全 > 正文

如何让 vim 成为我们的神器(小结)

发布时间:2020-11-23 21:55:21 所属栏目:安全 来源:网络整理
导读:这篇文章主要介绍了如何让 vim 成为我们的神器(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小
副标题[/!--empirenews.page--]

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:删除一个字符然后进入插入模式;

cc:修改整行;

撤销

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 tabstop=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.com/preservim/nerdtree Plug 'jistr/vim-nerdtree-tabs' " https://github.com/jistr/vim-nerdtree-tabs Plug 'Xuyuanp/nerdtree-git-plugin' " https://github.com/Xuyuanp/nerdtree-git-plugin Plug 'ryanoasis/vim-devicons' " https://github.com/ryanoasis/vim-devicons Plug 'tiagofumo/vim-nerdtree-syntax-highlight' " https://github.com/tiagofumo/vim-nerdtree-syntax-highlight Plug 'tpope/vim-eunuch' " https://github.com/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.com/majutsushi/tagbar nnoremap <F9> :TagbarToggle<CR> inoremap <F9> <C-O>:TagbarToggle<CR>

自动补全

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读