zoukankan      html  css  js  c++  java
  • vim

    vim基础

    进入vim编辑器

    vim默认模式为normal模式

    • a,进入插入模式,定位到当前字母 后面,
    • A,进入插入模式,定位当当前行后面
    • i,进入插入模式,定位到当前字母前
    • I,进入插入模式,定位到当前行前面
    • o,进入插入模式,向下一行(open a line below)
    • O,向上插入

    esc: insert->normal

    命令模式(Command)

    在normal模式下,输入:,进入命令模式

    • :wq,保存并退出
    • 分屏,:vs(vertical split), :sp(split)
    • :v,进入visual模式,可以进行文本选中,使用y复制,p粘贴
    • :% s/foo/bar/g, 全局替换

    s:表示替换,%表示全文搜索,将foo替换成bar,g表示全局替换

    • :set nu 设置行号

    查找替换

    查找

    在normal模式下,输入/ + 带查询的字符串

    /word
    # 输入n下一个
    

    查询光标字符

    # 输入 * / #
    

    替换

    :% s/string/string/[g,c,n]
    # g:全局
    # c:confirm
    # n:查询个数
    

    单行替换

    # normal模式下, :s /str/newStr
    :s /str/newStr
    

    全局替换

    # 每行只会替换一个
    :%s /str/newStr
    
    # 替换所有
    :%s /str/newStr/g
    
    替换指定行区间
    模式下,Ctrl+P可以调出上次命令,Ctrl+N下一条
    :10,20s /str/newStr/g
    

    替换单词

    # hello 会被替换, helloa不会被替换
    :% s/<hello>/Hello/g  # 全局匹配,正则(单词hello),替换
    

    如何快速纠错

    insert模式

    1. 使用Ctrl+u:快速从当前字符删除到当前行开始
    2. Ctrl+w:快速删除上一个单词
    3. Ctrl+H:快速定位到上一个字符[normal]

    ctrl+H:删除上一个字符[insert]

    1. gi:快速进入插入模式,并且定位到上次编辑的位置

    vim移动

    1. hjkl,上下左右
    2. w/W,单词移动
    3. b/B,单词
    4. e/E,单词

    代码高亮:syntax on

    1. 行内搜索,f{char},使用;进入下一个

    2. 水平移动,移动到行首,行尾,^/0

    $,移动到行尾

    1. 垂直移动,(),{}
    2. 页面移动,gg/GG,文件开头,结尾

    移动到页面Head,middle,lower

    1. 翻页,Ctrl+u,ctrl+f ,(upword,forward)

    快速增删改查

    快速删除字符,单词

    • x,字符
    • d,单词

    daw,diw

    多文件编辑

    • 打开多个文件
    vim aa bb
    
    • 查看正在编辑的文件
    :ls
    
    • 编辑某个文件
    :b 1
    :bpre
    :bnext
    
    • 窗口
    # 分割
    :vs
    :sp
    # 切换
    ctrl+w+w
    ctrl+w+'hjkl'
    :vs bb.txt  # 分割窗口编辑bb.txt
    # 移动窗口
    Ctrl+w+L
    
    # 新开一个窗口,并打开文件
    :vsp file
    
    • tab
    :tabnew bb.txt  # 打开新标签页
    # 切换
    gt
    tabc  # 关闭当前标签页中的所有窗口
    tabo[only]  # 只保留当前标签页
    :tabe[edit] file  # 在新标签中打开文件
    
    

    选中

    -v

    vi[w,char]
    # 
    print('hello world')
    vi'   # 选中单引号中的所有字符
    # a = {'name':'',xxx}
    ci{
    
    # 选中整行
    Shift+V
    # 局部选中
    v+方向键
    

    赋值,粘贴

    # 赋值
    y
    # 粘贴
    p   -- 当选中整行(yy,V,dd)赋值到下一行
    P   -- 当选中整行(yy,V,dd)复制到上一行
    # 赋值当前行
    yy
    
    

    代码格式对其你

    :set autoindent

    :set paste ,粘贴代码是不乱

    全选

    gg + V + G
    

    配置文件

    配置文件

    vim映射

    什么以映射?把一个操作映射到另一个操作

    normal模式下的映射

    1. 使用-代替x
    :map - x
    
    1. 使用空格选中一个单词
    :map <space> viw
    
    1. 使用Ctrl+d删除一行
    :map <c-d> dd
    
    set number
     
    set tabstop=4
    
    
    
    " 穘ormal模式下,非递归方式
    
    nnoremap <c-d> dd " 删除行
    nnoremap <C-h> <C-w>h
    nnoremap <C-j> <C-w>j
    nnoremap <C-k> <C-w>k
    nnoremap <C-l> <C-w>l
    
    " 插入模式
    imap <c-d> <Esc>ddi  " 删除▒
    imap <c-l> <Esc>Vyp<c-o> " 赋值一行
    inoremap jj <Esc>`^  " 进入normal模式,同时光标定位到上次编辑的地方
    
    " mommand
    com! Fmtjson %!python -m json.tool
    
    
  • 相关阅读:
    你好毒
    Sketchup创建屋顶插件
    sketchup实体开洞插件holeonsolid
    SolidWork支架模型
    让WebForm异步起来
    正则表达式点滴(2)
    异步调用之精简方式
    浅谈C#中常见的委托
    基于异步方式的语法着色器
    利用WPF的ListView进行大数据量异步加载
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/12272779.html
Copyright © 2011-2022 走看看