Linux工具 VIM的使用

进入插入模式shell

    i/a 在光标字符处/后 I/A 在光标行首/尾 O/o 在光标上/下行新建一行vim

    s 删除当前字符后插入 与xi功能相同 cw 删除当前单词后插入 与dwi功能相同code

文件退出与保存ip

    :wq, ZZ, :x[若是内容和源文件一致 则不保存] 保存退出 :q! 不保存退出ci

    :w 保存 :w! 保存只读文件(root) :saveas FILE 另存为rem

    将当前文件中部份内容另存为另一个文件 :ADDR1,ADDR2w PATH字符串

    将另一个文件填充到当前文件中 :r PATHast

光标移动sed

    逐字符移动配置

        h, l ,j ,k --- left, right, up, down <iMode>

    逐单词移动

        w移至下一个单词词首 e移至当前单词/下一个单词词尾

        b移至当前单词/前一个单词词首 B与b相似

        shift+left/right 单词词首移动 <iMode>

    翻屏操做

        ctrl+b/f 上/下翻一屏 ctrl+u/d 上/下翻半屏

        shift+up/down 上/下翻一屏 <iMode>

    行内跳转

        0, ^[非空白字符]行首 $, g_[非空白字符]行尾

        #G 第#行 G 最后一行 gg 第一行

        #f& 第#个&字符 #t& 第#个&字符前 F/T 功能相同 方向相反

        % 匹配括号移动 m& 标记  '& 标记跳转 ''回到上一次位置

         {/} 上/下一段开头 (/)光标处/下一个句子开头

编辑命令

    x 删除单个字符 dd 删除整行 yy 复制整行

    P/p 粘贴至所在行上方/下方|字符前/后

    d, x, yy与组合 #[d/x/yy] #表明数字 de dw ye 等等也能够组合

替换模式

    r 替换单个字符 用法同x R 替换多个字符 需ESC

    u 撤销前一次编辑操做 #u 撤销#次编辑操做

    撤销最近一次撤销操做 Ctrl+r 重复最近一次操做 .

选取模式

    v 按字符选取 V 按行选取 Ctrl+V 按块选取

查找和替换

    /PATTERN 从前日后查找 ?PATTERN 从后往前查找 n 查找下一个 N 查找上一个

    用法同sed :{sed_script} 例子-> :.,$s/hello/HELLO/g

打开文件时操做

    光标自动处于 vim +N FILE N行 vim + FILE 最后一行 vim +/PATTERN FILE 符合PATTERN的行

    vim FILE... :next :prev 来切换上/下一个文件 :first :last 切换到最前/后一个文件

    vim -o/O FILE...水平/垂直分窗口编辑多个文件 :qa 退出全部文件/窗口

打开多个文件和分屏

    :e FILE :bn :bp来切换上/下一个文件 若是使用:wq则所有保存 [临时打开多个文件]

    Ctrl+w, s 水平拆分窗口 Ctrl+w, v 垂直拆分窗口 Ctrl+w, ARROW 窗口间切换光标

    :sp 水平拆分窗口 :vsp 垂直拆分窗口 :qa 退出全部文件/窗口

其余

    配置文件 全局 /etc/vimrc 我的 ~/.vimrc 行为 ~/.viminfo

    和shell交互 不用退出vim也能执行命令 :! CMD

    vim出错的应对状况 删除对应文件.swp后缀名的文件

    一个vim高级操做例子

        0<Ctrl-v>[选取行数]I[输入字符串]<ESC> 批量在行首添加字符串

        <Ctrl-v>[选取行数]$A[输入字符串]<ESC> 批量在行尾添加字符串

一些vim设置

    显示/隐藏行号 :set nu/nonu

    忽略/区分大小写 :set ic/noic

    设定自动缩进/不缩进 :set ai/noai

    查找单词时高亮 :set hlsearch/nohlsearch

    语法高亮 :syntax on/off

    C/C++缩进方式:set cindent

    用其余命令以及map键位映射等高级设置配置VIM

本身的vim简易设置[shell脚本]

set nu
set tabstop=4
set ai

inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i<cr><cr><UP><TAB>
inoremap < <><ESC>i
inoremap " ""<ESC>i
inoremap ' ''<ESC>i

imap if<TAB> if [  <RIGHT>; then<cr>fi<ESC>O<TAB><UP><RIGHT>
imap for<TAB> for  in ; do<cr>done<ESC>O<TAB><UP>
imap case<TAB> case  in<cr>*)<cr><TAB><cr>;;<cr><bs>esac<ESC>4k2li
imap func<TAB> (<RIGHT> {
相关文章
相关标签/搜索