• vim (四) 使用技巧


    1. 复制粘贴

    普通模式下,可使用 yaw 命令复制当前光标所在单词

    2. 查找

    2.1 普通查找

    1. 最快的方式是让光标停留在想要查找的单词的任意一个字母上面, 然后输入Shift + *  ,即可快速选中该单词,并且可以通过 n  或  N 进行上一个或下一个的匹配。

    2. 让光标停留在单词的第一个字母上, 然后输入yw拷贝该单词, 然后输入 / (Ctrl + R) 0 (即 /”0),回车, 就查找到了第一个匹配的单词, 并且可以通过 n  或  N 进行上一个或下一个的匹配。
      解释一下:
      Ctrl + r 是指使用寄存器 , 你会发现先输入/ ,然后输入 Ctrl + r , 会立刻变为 “ , 即寄存器的前缀, 然后 ”0 就可以理解了吧?
      合起来就是 /“0, 就是查找刚才复制的那个单词.

    3. 还有一种方式, 和第二种方式差不多,不过是将单词拷贝到系统剪贴板, 然后再从系统剪贴板拿出来。 即选中需要查找的单词, 然后输入 “+y, 然后输入/(Shfit + Ctrl + v), 就查找到了第一个匹配的单词, 并且可以通过 n  或  N 进行上一个或下一个的匹配。

    我们打开别的文件,发现也被高亮了,怎么关闭高亮?
    命令模式下,输入:nohlsearch 也可以:set nohlsearch; 当然,可以简写,noh或者set noh

    2.2 ag查找

    首先安装ag搜索工具, 输入如下命令:

    sudo  apt-get   install    silversearcher-ag

    接着在~/.vimrc中添加以下内容:

    " Set mapleader
    let mapleader = ","
    " for easy using sliver search
    nmap <leader>f :norm yiw<CR>:Ag! -t -Q "<C-R>""
    nmap <leader>r :norm yiw<CR>:Ag! -t "<C-R>""
    " Locate and return character "above" current cursor position.
    function! LookUpwards()
        let column_num = virtcol('.')
        let target_pattern = '\%' . column_num . 'v.'
        let target_line_num = search(target_pattern . '*S', 'bnW')
        if !target_line_num
            return ""
        else
            return matchstr(getline(target_line_num), target_pattern)
        endif
    endfunction
    imap <silent> <C-Y> <C-R><C-R>=LookUpwards()<CR>
    

    3. ctag 错误

    在函数名处按快捷键“ctrl+]”,报“vim E257: cstag: tag not found”错误。
    原因以及解决:
    在vimrc中设置了两处tags.
    例如,我有两个文件夹/home/test1和/home/test2 ,但是只有/home/test1文件夹下有tags文件。
    在vimrc中,找到tags的设定,修改即可
    vim中ctags的设置

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " CTags的设定
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    let Tlist_Sort_Type = "name"    " 按照名称排序
    let Tlist_Use_Left_Window = 1  " 在右侧显示窗口
    let Tlist_Compart_Format = 1    " 压缩方式
    let Tlist_Exist_OnlyWindow = 1  " 如果只有一个buffer,kill窗口也kill掉buffer
    let Tlist_File_Fold_Auto_Close = 0  " 不要关闭其他文件的tags
    let Tlist_Enable_Fold_Column = 0    " 不要显示折叠树
    autocmd FileType java set tags+=D:	oolsjava	ags
    ""autocmd FileType h,cpp,cc,c set tags+=D:	oolscpp	ags
    let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的
    "设置tags
    set tags=/home/lin/kernel/linux-4.19/net/tags
    set autochdir
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "其他东东
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "默认打开Taglist
    let Tlist_Auto_Open=1
    """"""""""""""""""""""""""""""
    " Tag list (ctags)
    """"""""""""""""""""""""""""""""
    let Tlist_Ctags_Cmd = '/usr/bin/ctags'
    let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
    let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vi
    let Tlist_Use_Left_Window = 1
    "let Tlist_Use_Right_Window = 0
    " minibufexpl插件的一般设置
    let g:miniBufExplMapWindowNavVim = 1
    let g:miniBufExplMapWindowNavArrows = 1
    let g:miniBufExplMapCTabSwitchBufs = 1
    let g:miniBufExplModSelTarget = 1
    map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
    let Tlist_Show_One_File=1
    let Tlist_Exit_OnlyWindow=1
    """"""""""""""""""""""""""""""""""""""'
    """ctags  auto update""""""""""
    """""""""""""""""""""""""""""""""""""""
    function! UpdateCtags()
        let curdir=getcwd()
        while !filereadable("./tags")
            cd ..
            if getcwd() == "/"
                break
            endif
        endwhile
        if filewritable("./tags")
            !ctags -R --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q
            TlistUpdate
        endif
        execute ":cd " . curdir
    endfunction
    ""nmap <F10> :call UpdateCtags()<CR>
    ""autocmd BufWritePost *.c,*.h,*.cpp call UpdateCtags()
    """"""""""""""""""""""""""""""""""""""""""
    ""set onmicppcompete
    """"""""""""""""""""""""""""""""""""""""""
    

    4. vim 改变字体

    control+shift+"+"增加显示字体
    cotrol+“-” 减小字体

    欢迎评论交流
  • 相关阅读:
    Netflix Ribbon(负载均衡)介绍
    Annotation 注解
    框架设计的灵魂-反射
    idea maven java.lang.outofmemoryerror gc overhead limit exceeded
    洛谷P4427 [BJOI2018]求和
    洛谷P1196 [NOI2002]银河英雄传说
    CF191C Fools and Roads
    洛谷P2296 寻找道路
    洛谷P3389 【模板】高斯消元法
    洛谷P1351 联合权值
  • 原文地址:https://www.cnblogs.com/linengier/p/12383117.html
Copyright © 2020-2023  润新知