VIM使用简记

Vim使用简记:
普通模式进入编辑模式:

  • i insert
    a append
    o open a line blow
    I insert in line befor
    A append in line end
    O open a line above
    ctrl [ 可以跟esc一样退出编辑模式
    gi 快速回到退出时的位置并进入编辑模式

编辑模式下:

  • ctrl w 删除上一个单词
    ctrl h 删除上一个字符
    ctrl u 删除一行
    在这里插入图片描述
    通过使用上面的命令可以解决复制代码时的缩进问题。

普通模式下:

  • v 可视化模式 批量选择选择

  • V      按行批量选择

  • vaw 和viw    选中一个单词

  • ctrl v     按块批量选择

  • y(ank)    复制

  • yiw         复制一个单词

  • yy     复制一行

  • p(ut)   粘贴

  • u(ndo)  撤销

  • ctrl r   使用上一步的修改

  • d(elete) 删除(剪切)

  • d p    命令配合进行剪切
    方向移动:
    在这里插入图片描述

单词间:

  • w/W可以在跳到下一个单词的开头
    e/E 可以跳到一个word的尾部
    b/B 回到上一个单词的首部

行间:

  • f{char} 快速移动到char字符上,t{char}移动char的前一个字符
    ; 该行的下一个 ,该行上一个
    F 向上搜索

水平移动:

  • 0 移动到行首, ^ 移动到行首第一个非空白字符
    $ 移动到行尾, g_移动到行尾非空白字符
    记住0和$即可

垂直移动:

  • 使用()在句子间移动,{ } 在段落间移动

页面移动:

  • gg/G移动到文件开头和结尾 ctrl+o快速返回
    H/M/L跳到屏幕开头(head),中间(Middle),结尾(Lower)
    Ctrl+u Ctrl+f 上下翻页(upword/forward)

增删改查:

  • :进入编辑模式

  • 删除:x删除一个字符,dd删除一行,dw=daw删除一个单词,diw删除一个单词,4x删除四个字符

  • 修改:r(replace),c(change),s(substitute),r可以替换一个字符,s替换并进入插入模式,c配合文本对象可以快速修改,caw,ct{char}

  • 查询:使用/或者?进行前向或者反向搜索;使用n/N跳转到下一个或者上一个匹配;使用*或者#进行当前单词的前向和后向匹配

  • 搜索替换substitute:

    :[range]s[ubstitute]/{pattern}/{string}/[flags]

  • range 范围 10,20表示10-20行,%表示全部

  • 常用Flags标志(可以进行组合使用):

    • g(global)表示全局范围执行
    • c(confirm)表示确认,可以确认或者拒绝修改
    • n(number)报告匹配到的次数而不替换,可以用来查询匹配次数

寄存器:

  • 通过"{register}前缀可以指定寄存器,不指定默认使用无名寄存器
    “” 表示无名寄存器,缺省下就表示无名寄存器
    "0 复制专用寄存器
    “+ 系统剪切板,”% 当前文件名, ". 上次插入的文本

cmd:命令模式

  • set clipboard=unnamed 将复制寄存器设为系统剪切板
  • vs 竖分屏
  • sp 横分屏
  • % s/word1/word2/g 使用word2替换文件中的所有word1
  • e! 禁止刚才所有的更改

多文件操作(buffer window tab):

  • 操作:
    :e file_name 可以将多个文件添加到缓冲区(edit)
    buffer之间切换:
    • :ls列举当前缓冲区,然后:b n跳转到第n个缓冲区
      :bpre :bnext :bfirst :blast
      :b buffer_name

window 窗口
<ctrl+w>s 水平分割,<ctrl+w>v垂直分割,或者:sp和:vs
切换窗口:
在这里插入图片描述
Tab(标签页)操作
在这里插入图片描述
:tabnew {filename} 在新标签中打开一个文件
在这里插入图片描述
文本对象操作方式(例如之前的dw):
[number] {text object]
number 表示次数,command 是命令,d(elete),c(hange),y(ank),v批量选择
text object 要操作的文本对象,单词w,句子s,段落p
vi“ 选择”之间的对象
ci“ change inner of ”
ca[ change around of []
宏完成批量操作:

  • q 进行宏的录制,再按一下q结束录制,@a,执行a寄存器中的宏。
  • 也可以在v 可视化模式下,选择所有行,然后进入:cmd模式执行,normal命令。也可以实现宏的效果。

补全:

  • ctrl+n 和 ctrl+p 补全单词
  • ctrl+x ctrl+f 补全文件名
  • ctrl+x ctrl+o补全代码,要开启文件类型检测,安装插件

vim配色更换:

vim配置文件:vimrc

" 常用设置
" 设置行号
set number
colorscheme hybrid
" 按F2进入粘贴模式
set pastetoggle=<F2>
" 高亮搜索
set hlsearch
" 设置折叠方式
set foldmethod=indent
" 使用映射

递归映射与非递归映射
个人vimrc临时配置:

set shiftwidth=4
set softtabstop=4

syntax on
set nu
set autoindent

let mapleader=','
inoremap <leader>w <Esc>:w<cr>

inoremap jj <Esc>

noremap <C-h> <C-w>h
noremap <C-j> <C-w>j
noremap <C-k> <C-w>k
noremap <C-l> <C-w>l
" Specify a directory for plugins
" - For Neovim: stdpath('data') . '/plugged'
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'Yggdroot/indentLine'
Plug 'w0ng/vim-hybrid'
Plug 'valloric/youcompleteme'

Plug 'preservim/nerdtree'
Plug 'kien/ctrlp.vim'
Plug 'easymotion/vim-easymotion'

" Initialize plugin system
call plug#end()


nnoremap <leader>v :NERDTreeFind<cr>
nnoremap <leader>g :NERDTreeToggle<cr>
let NERDTreeShowHidden=1
let NERDTreeIgnore = ['\.pyc$', '\.swp', '\.swo', '\.vscode', '__pycache__']

let g:ctrlp_map = '<c-p>'

nmap ss <Plug>(easymotion-s2)

" 寻找全局配置文件
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'

let g:ycm_add_preview_to_completeopt = 0
let g:ycm_show_diagnostics_ui = 0
let g:ycm_server_log_level = 'info'
let g:ycm_min_num_identifier_candidate_chars = 2
let g:ycm_collect_identifiers_from_comments_and_strings = 1
let g:ycm_complete_in_strings=1
let g:ycm_key_invoke_completion = '<c-z>'
set completeopt=menu,menuone

noremap <c-z> <NOP>

let g:ycm_semantic_triggers =  {
        ¦   \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
        ¦   \ 'cs,lua,javascript': ['re!\w{2}'],
        ¦   \ }
let g:ycm_filetype_whitelist = {
        ¦   \ "c":1,
        ¦   \ "cpp":1,
        ¦   \ "objc":1,
        ¦   \ "sh":1,
        ¦   \ "zsh":1,
        ¦   \ "zimbu":1,
        ¦   \ }

Tmux常用命令:

  • 基本操作1是pane,window,session的新建:
    session: tmux new -s session_name
    window: ctr+b + c
    pane: ctr+b + %, ctr+b+"

  • 基本操作2是pane之间,window之间,session之间 的切换
    pane之间的切换: ctr+b + 方向键(或者向作者那样配置类vim的hjkl键)
    window之间的切换: ctr+b+n(ext), ctr+b+p(revious) (补充:ctr+b+w)
    session之间的切换: ctr+b+s (补充:ctr+b+d, tmux attach -t )

使用neovim替代vim
插件管理器:

  • vim-plug, Vundle, pathogen, Dein.vim, volt 在vimrc中安装vim-plug插件: https://github.com/junegunn/vim-plug 使用vim-plug安装vim-startify

插件的介绍:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考:玩转VIM从放弃到爱不释手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值