📓 Archive

  • Pricing
  • Chess
  • Syntax
  • VIM

    FGJ: Create:2024/06/10 Update: (2025-02-08)

    • Intro(VIM) #

      • 版本信息 #

      • 基本操作配置 #

        命令和解释
        命令解释
        基本配置
        set nocompatible不与VI兼容(采用vim自己的操作命令)
        syntax on打开语法高亮。自动识别代码,多种颜色显示
        set showmode在底部显示编辑模式
        set showcmd命令模式底部显示键入指令
        set mouse=a支持使用鼠标
        set encoding=utf-8使用utf-8编码
        set t_Co=256启用256色
        filetype indent on开启文件类型检查
        缩进
        set autoindet按下回车,自动缩进,跟上一行保持一致
        set tabstop=2按下Tab键,vim显示的空格数
        set shiftwidth=4>> « ==
        set expandtab将TAB 转为空格
        set softtabstop=2Tab转为多个空格
        外观
        set number显示行号
        set relativenumber其他行为对应该行的相对行号
        set cursorline光标所在行高亮
        set textwidth=80设置行宽,一行显示多少个字符
        set wrap set nowrap自动拆行,即太长的行分成几行
        set linebreak折行不会发生在单词内部
        set wrapmargin=2折行与窗口边缘的空出字符
        set scrolloff=5垂直滚动时,光标距离顶部/底部的位置
        set sidescrolloff=15水平滚动时
        set laststatus=2是否显示状态栏
        set ruler在状态栏显示光标的位置
        搜索
        set showmatch自动高亮另半个括号
        set hlsearch搜索时,高亮显示匹配结果
        set incsearch自动高亮第一匹配的结果
        set ignorecase搜索时忽略大小写
        set smartcase同时打开ignorecase
        编辑
        set spell spelllang=en_us打开英语单词的拼写检查
        set nobackup不创建备份文件
        set noswapfile不创建交换文件
        set undofile保留撤销历史
        set backupdir=~/.vim/.backup
        set directory=设置备份文件保存位置
        set undodir
        set autochdir自动切换工作目录
        set noerrorbells出错时,不要发出响声
        set visualbell出错时,发出视觉提示
        set historyvim 需要记住多少次历史操作
        set autoread打开文件监视
        set listchars=tab:»■,trail:■ set list该配置将让多余空格显示成可见的小方块。
        set wildmenu set wildmode=longest:list,full命令模式下,底部操作指令按下 Tab 键自动补全。第一次按下 Tab,会显示所有匹配的操作指令的清单;第二次按下 Tab,会依次选择各个指令。
        annotation
        word字面意思,比如<go!duto!school> 不包括其他是三个单词
        WORD一长串中间没有空格的字符
        motion
        iwinner word without white space
        iWinner WORD without white space
        awa word with white space
        aWa WORD with white space
        itinner tag block it
        del()
        d只是删除操作,并不带motion,一般为d + motion
        d$,D删除光标到结尾的所有字符
        dl,x删除光标下的字符
        dh,X删除光标之前的字符
        diw删除 inner word 不包括空白字符
        daw删除 a word 包括空白字符
        dw删除光标后word 包括空白字符
        c只是删除并进入插入操作,并不带motion,一般为d + motion
        c$,C删除光标到结尾的字符并进入插入模式
        cl,s删除光标下的字符 && 进入插入模式
        cc,S删除一行并进入插入模式
        WINDOWS
        :(crtl + w) n新建窗口
        :(ctrl + w) s分割窗口
        :(ctrl + w) v垂直分割窗口
        :(ctrl + w) c关闭当前窗口
        :(ctrl + w) o关闭其它窗口
        :(ctrl + w) R向上轮换窗口
        :(crtl + w) r向下轮换窗口
        :(crtl + w) =使窗口等宽
        :(ctrl + w) 1_使窗口最小化
        :(crtl + w) _使窗口最大化
        :(crtl +w ) 1|使窗口向左最小化
        :(crtl + w) |使窗口向右最大化
        :(crtl + w) ^将缓冲区分割到一个窗口中
        :new+窗口名(保存后就是文件名):split+窗口名,也可以简写为:sp+窗口名横向切割窗口
        :vsplit+窗口名,也可以简写为:vsp+窗口名纵向切割窗口名
        q!也可以使用:close,最后的窗口不能使用close关闭。而且只是临时的,其内容还在缓存中。:tabc 关闭当前窗口:tabo 关闭所有窗口
        :ctrl+w+j/k通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。
        窗口大小调整纵向调整
        :ctrl+w +纵向扩大(行数增加)
        :ctrl+w -纵向缩小 (行数减少)
        :res(ize) num例如::res 5,显示行数调整为5行
        :res(ize)+num把当前窗口高度增加num行
        :res(ize)-num把当前窗口高度减少num行
        :vertical res(ize) num指定当前窗口为num列
        :vertical res(ize)+num把当前窗口增加num列
        :vertical res(ize)-num把当前窗口减少num列
        :f file给窗口重命名
        vi a b cvi打开多文件.:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件。:e# 回到刚才编辑的文件
        文件浏览
        :Ex开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
        :Sex水平分割当前窗口,并在一个窗口中开启目录浏览器
        :ls显示当前buffer情况
        vi与shell切换
        :shell可以在不关闭vi的情况下切换到shell命令行
        :exit从shell回到vi
      • 十六进制查看文件内容 #

        用vim打开文件vim -b file不加-b会在末尾追加0x0A多一个字节
        然后使用xxd工具查看:%!xxd -u-u表示大写字母显示

      • 设置和查看文件编码 #

        检查当前文件的编码::set encoding?
        检查 Vim 的默认编码::set fileencodings?
        设置文件编码::set encoding=utf-8:set encoding=latin1(ISO 8859-1 编码通常被称为 latin1)。

        vim 查看 UTF-16 文件 file format ==> : Unicode text, UTF-16, little-endian text 参考
        通过vim -c 'e ++enc=utf-16le' /Users/stevenobelia/Downloads/temporary-download/百度mac个性短语导出2024_09_24
        或者 通过:e ++enc=utf-16le进行设置

      • :wq 和 :x 的区别 #

        作用和:wq相同,但是:x只有文件内容发生改变的时候才会发生写入操作参考
        :wq不管有没有改变,都会写入,所以即使没有修改文件内容,只要执行:wq,就会重新写入,文件属性发生改变。可以通过命令验证,比如执行命令stat -f%Sm file查看文件的修改时间。

      • map映射中修饰 #

        <Leader>是一个特殊的键,它是 Vim 中用户定义的前缀键。你可以通过设置 mapleader 变量来自定义<Leader>键。例如:let mapleader = ","
        默认情况下,<Leader>是反斜杠\

        作用:当你在定义快捷键时使用leader修饰符,表示这个快捷键是基于你定义的前缀键的。这样可以避免与默认快捷键发生冲突,并使你的快捷键更具可读性和组织性。
        其他定义关键字可以参考 这个

    • Reference #


    comments powered by Disqus