• vim note(6)--vim的一个较全的介绍(转)


    vim的配置文件

      ~/.vimrc        用户的默认配置文件   ~/.vim/plugin/   用户的默认脚本文件的存放文件夹   ~/.vim/ftplugin/ 用户的默认文件类型相关脚本文件的存放文件夹


     vim提供的编程支持

      文本信息(行号、文件名称等)   代码缩进   语法高亮   高速定位   标记位置   全文搜索   补全   多文件编辑   多窗体编辑   函数列表   文件列表   函数跳转   语法错误   字符集的编码   二进制查看

      等等...


    初试vim

      在终端以root启动 输入vim命令 显示vim首页

    :r filename 读入一个文件内容,并写入到当前编辑器中

    按i进入插入模式

    编辑完后:w保存

    编辑完后按esc退出插入模式 进入正常模式

    然后输入:sh进入shell

    编译执行


    文本信息配置

    set nu(写入配置文件.vimrc中) 显示行号。 ctrl-g(正常模式下使用命令) 显示文件信息和当前行。 statusline.vim(插件) 添加底部状态栏。


    代码缩进配置

    filetype on(写入配置文件.vimrc中) 使vim对文件类型敏感。 autocmd FileType c,cpp,h :setlocal cindent cinoptions=:0,g0,t0(写入配置文件.vimrc中) 设置c缩进风格。详细详情參见:h cinoptions-values。 autocmd FileType c,cpp,h :setlocal et sta sw=4 sts=4 tabstop=4(写入配置文件.vimrc中) 设置一次缩进的距离是4个空格。 =(正常模式或者可视模式下使用命令) 依照缩进风格排版代码。 <(可视模式下使用命令) 向左缩进一级。 >(可视模式下使用命令) 向右缩进一级。


    语法高亮

    filetype plugin on(写入配置文件.vimrc中) 通常安装的vim中已经增加了各种语言的语法高亮插件。我们仅仅须要打开文件类型相关的插件就能够了。


    高速定位

    gd(正常模式下使用命令) 跳转到局部变量定义处。 gD(正常模式下使用命令) 跳转到全局标量定义处。 *(正常模式下使用命令) 搜索并跳到下一个光标所在的单词。 g*(正常模式下使用命令) 功能接近*,可是查找的目标不带<和>单词分界符号。

    #(正常模式下使用命令) 搜索并跳到上一个光标所在的单词。 g#(正常模式下使用命令) 功能接近#,可是查找的目标不带<和>单词分界符号。


    标记位置

    m{a-zA-Z0-9} (正常模式下使用命令) 在当前位置制作一个标记,标记名字能够使用a-z或者A-Z之间的随意字符,比如输入ma,就是将当前位置标记为a标记。注意a-z为单文件标记,不可跨文件使用。而A-Z0-9为全局标记,能够跨文件使用。

    ‘{a-zA-Z0-9} (正常模式下使用命令) 跳转到本文件的标记上。

    :marks [{a-zA-z0-9}] (正常模式下使用命令) 查看指定标记的内容,不写标记号则查看全部。

    :delm {a-zA-z0-9} (正常模式下使用命令) 删除一个标记。


    全文搜索

    :vimgrep(正常模式下使用命令) 全文搜索,功能同grep命令。可是支持在vim进行多文件跳转定位。

    用法:vimgrep 正則表達式 文件。

    文件支持通配符。比如*.c代表全部的.c文件。

    假设希望递归搜索,能够使用**/*,表示搜索全部的文件。 :cl 列举结果 :cc(正常模式下使用命令) 当前结果 :cn(正常模式下使用命令) 下一个结果 :cp(正常模式下使用命令) 上一个结果 :cw(正常模式下使用命令) 又一次打开搜索结果窗体


    多文件编辑

    vim f1 f2 …… fn(在shell下使用命令) 打开多个文件。 :e 文件名称(正常模式下使用命令) 在vim中打开新文件。

    :ls(正常模式下使用命令) 全部打开文件列表。 :bn(正常模式下使用命令) 到下一个文件。 :bp(正常模式下使用命令) 到上一个文件。 :b# 或 ctrl-6(正常模式下使用命令) 到近期的前一个文件。 set  autowriteall(写入配置文件.vimrc中) 假设讨厌每次打开新文件,vim喋喋不休的要求你保存。那么能够设置自己主动保存。


    多窗体编辑 :sp  文件名称(正常模式下使用命令) 横向拆分窗体(多行窗体)。

    :vsp 文件名称(正常模式下使用命令) 纵向拆分窗体(多列窗体)。 ctrl-w h(正常模式下使用命令) 将光标移动到左一个窗体。 ctrl-w j(正常模式下使用命令) 将光标移动到下一个窗体。 ctrl-w k(正常模式下使用命令) 将光标移动到上一个窗体。 ctrl-w l(正常模式下使用命令) 将光标移动到右一个窗体。

    ctrl-w +(正常模式下使用命令) 当前窗体尺寸变大。 ctrl-w -(正常模式下使用命令) 当前窗体尺寸变小。 ctrl-w o(正常模式下使用命令) 仅仅显示当前窗体。


    函数列表 taglist.vim(插件) 列表插件。 let Tlist_Use_Right_Window = 1(写入配置文件.vimrc中) 假设希望列表在右側显示,则增加这个配置,默认是左側。 :Tlist(正常模式下使用命令) 显示函数列表。 d(在taglist窗体下使用) 从列表中删除文件。 +(在taglist窗体下使用) 展开文件。 -(在taglist窗体下使用) 折叠文件。

    =(在taglist窗体下使用) 折叠全部文件。 x(在taglist窗体下使用) 显示或隐藏正常窗体。


    文件列表 NERD_tree.vim(插件) 横向拆分窗体(多行窗体)。

    let NERDTreeWinPos = 'right'(写入配置文件.vimrc中) 假设希望文件树在右側显示。则增加这个配置,默认是左側。 :NERDTree(正常模式下使用命令) 显示文件列表。


    函数跳转 ctags(软件,须要另外安装) 生成多种语言tag文件的软件。

    Ctags –R *.c(在shell下使用命令) 生成当前路径全部.c文件的tag。-R代表递归。 :ta 标记 或 [g] ctrl-] 列举标签(多个标签)或者跳转到标签(单个标签)。

    ctrl-t 返回上一级。

    :tags 列出标签栈。


    语法错误 :make(正常模式下使用命令) 运行外部make命令。而且显示全部的编译警告和错误,而且能够在vim中定位。 :cl 列举结果 :cc(正常模式下使用命令) 当前结果 :cn(正常模式下使用命令) 下一个结果 :cp(正常模式下使用命令) 上一个结果 :cw(正常模式下使用命令) 又一次打开搜索结果窗体


    二进制文件查看 (鉴于有同学理解出现分歧 将二进制查看更新为二进制文件查看)

    :范围!xxd(正常模式下使用命令) 把指定范围的部分转化为二进制文件阅读方式。

    :范围!xxd -r(正常模式下使用命令) 把指定范围的部分转回字符阅读方式。


    字符集的编码 let &termencoding=&encoding set fileencodings=utf-8,gbk,cp936(写入配置文件.vimrc中)  增加多种字符编码支持。

    :set fileencoding(正常模式下使用命令) 设定文件字符编码。


    补充

    ctrl-p(插入模式下使用命令) 跳出补全菜单。 ctrl-n(在跳出补全菜单后) 下一个结果。 ctrl-p(在跳出补全菜单后) 上一个结果。 ctrl-y(在跳出补全菜单后) 选择当前结果。 ctrl-x ctrl-f(插入模式下使用命令) 文件名称补全。 ctrl-x ctrl-i(插入模式下使用命令) 包括的头文件。 ctrl-x ctrl-](插入模式下使用命令) ctags(将在下文中介绍)符号补全。

    ctrl-x ctrl-o(插入模式下使用命令) omni补全,须要设置omnifunc变量。


    vim其它命令 (參考vi(vim)教程)

    打开文件、保存、关闭文件:

    vi filename       //打开filename文件 :w              //保存文件 :w vpser.net  //保存至vpser.net文件 :q             //退出编辑器。假设文件已改动请使用以下的命令 :q!           //退出编辑器。且不保存 :wq              //退出编辑器。且保存文件

    插入文本或行:

    a      //在当前光标位置的右边加入文本 i       //在当前光标位置的左边加入文本 A     //在当前行的末尾位置加入文本 I      //在当前行的開始处加入文本(非空字符的行首) O     //在当前行的上面新建一行 o     //在当前行的以下新建一行 R    //替换(覆盖)当前光标位置及后面的若干文本 J    //合并光标所在行及下一行为一行(依旧在命令模式)

    移动光标:

    使用上下左右方向键

    命令模式下:h   向左、j   向下 、k   向上、l  向右。 空格键 向右、Backspace  向左、Enter  移动到下一行首、-  移动到上一行首。

    删除:

    x         //删除当前字符 nx        //删除从光标開始的n个字符 dd      //删除当前行 ndd   //向下删除当前行在内的n行 u       //撤销上一步操作 U      //撤销对当前行的全部操作

    搜索:

    /vpser     //向光标下搜索vpser字符串 ?vpser    //向光标上搜索vpser字符串 n           //向下搜索前一个搜素动作 N           //向上搜索前一个搜索动作

    跳转:

    n+        //向下跳n行 n-         //向上跳n行 nG        //跳到行号为n的行 G           //跳至文件的底部

    设置行号:

    :set  nu     //显示行号 :set nonu    //取消显示行号

    复制:

    yy    //将当前行拷贝到缓存区。也能够用 "ayy 复制,"a 为缓冲区,a也能够替换为a到z的随意字母,能够完毕多个复制任务。 nyy   //将当前行向下n行拷贝到缓冲区。也能够用 "anyy 复制。"a 为缓冲区,a也能够替换为a到z的随意字母,能够完毕多个复制任务。 yw    //复制从光标開始到词尾的字符。 nyw   //复制从光标開始的n个单词。 y^      //复制从光标到行首的内容。 

    y$      //复制从光标到行尾的内容。 p        //粘贴剪切板里的内容在光标后,假设使用了前面的自己定义缓冲区,建议使用"ap 进行粘贴。

    P        //粘贴剪切板里的内容在光标前,假设使用了前面的自己定义缓冲区,建议使用"aP 进行粘贴。

    替换:

    :s/old/new      //用new替换行中首次出现的old :s/old/new/g         //用new替换行中全部的old :n,m s/old/new/g     //用new替换从n到m行里全部的old :%s/old/new/g      //用new替换当前文件中全部的old

    编辑其它资源:

    :e otherfilename    //编辑文件名称为otherfilename的文件。

    改动文件格式:

    :set fileformat=unix   //将文件改动为unix格式,如win以下的文本文件在linux下会出现^M。


    客串答案

      c传递參数都是值传递的,指针的一个作用是为了解决实现类似引用的效果,另外,使用指针能够直接操作内存!

      孙鹤同学的解释:

      每一个线程有固定大小的栈,通常主线程的栈默认通常是8M,用指针去引用内存,往往是在使用堆内存,栈是有限的,而且受生存期影响,所以用堆的情况要比用栈很多其它,有些东西生存期非常长,超过一个函数的调用。那么就须要用堆内存。


     本篇到此 希望对大家有帮助

    下载地址:http://www.vim.org/scripts/script.php?

    script_id=273 “Tag List" 插件是一个为VIM编写的源码浏览插件,须要ctags的支撑 ,直接能够在左边列出函数列表,全局參数列表,宏。(能够排序) 1、下载taglist.zip文件,解压到$HOME/.vim文件夹下,或者$HOME/vimfiles或$VIM/vimfiles文件夹下。在这一步后,你应该有这两个文件(文件夹结构应该被保留)          plugin/taglist.vim - taglist 插件文件          doc/taglist.txt    -  文档(帮助)文件 2. 进入 $HOME/.vim/doc 或者 $HOME/vimfiles/doc 或者 $VIM/vimfiles/doc      文件夹, 执行Vim,在命令行模式下执行 ":helptags ." 命令处理taglist帮助文件,假设没有这上步,你将不能得到taglist帮助提示 3、假设ctags工具不在你的PATH搜索路径中,你须要在$HOME/.vimrc中设置Tlist_Ctags_Cmd 变量指出ctags的路径。 4、假设你执行的是terminal/console版本号的VIM,以及terminal 不支持改变窗体的宽度,你须要在$/HOME/.vimrc设置    'Tlist_Inc_Winwidth'  变量为0, 5、重新启动vim 6、你能够在vim的命令行模式中使用 ":TlistToggle" 命令打开/关闭taglist窗体。你能够使用 ":help taglist" 命令得到很多其它的关于使用taglist插件的信息

    NERDTree的安装和使用
    2009-09-03 12:47
    NERDTree来自: http://www.vim.org/scripts/script.php?script_id=1658 A。安装。

    1,解压后,拷贝plugin/NERD_tree.vim文件到~/.vim/plugin下。拷贝doc/NERD_tree.txt文件到~/.vim/doc下 2,打开vim,载入文档。 :helptags ~/.vim/doc/NERD_tree.txt 以后查看帮助仅仅要 :h NERD_tree.txt 就可以。 B。经常使用使用。 1。标签。

    1 - 1。打开一个文件夹。

    :NERDTree ~/share/abc 1 - 2。标记它。 :Bookmark your_mark_name_of_abc 1 - 3。打开这个标签。 :NERDTree your_mark_name_of_abc  效果同 1 - 1。 2,高速帮助光标在NERDTree的文件夹工作区时候,按?

    键。

     

    去除高亮

    方法一::nohlsearch 方法二:/awertgvcxz (查找一个肯定不存在的字符串) 设置了高亮搜索(:set hlsearch)以后,能够通过 :set nohlsearch 永久地关闭高亮 显示,也能够通过 :nohlsearch 临时关闭高亮显示。下次搜索时将自己主动恢复高亮。
    怎么改动当前文件的文件名称


    最相近的方法是 :saveas xxx 可是原文件还是存在的



    this is the same way to same the file

    then you need to delete the original file


  • 相关阅读:
    如何将网格式报表打印成其它样式
    拥有与实力不相称的脾气是种灾难——北漂18年(23)
    8.8.1 Optimizing Queries with EXPLAIN
    mysql 没有rowid 怎么实现根据rowid回表呢?
    secondary index
    8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载
    mysql 中key 指的是索引
    8.5.4 Optimizing InnoDB Redo Logging 优化InnoDB Redo 日志
    8.5.3 Optimizing InnoDB Read-Only Transactions 优化InnoDB 只读事务
    8.5.1 Optimizing Storage Layout for InnoDB Tables InnoDB表的存储布局优化
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5219351.html
Copyright © 2020-2023  润新知