• Linux c++ vim环境搭建系列(5)——vim使用


    5. 使用

    5.1 快捷键及设置

    5.1.1 光标移动

    • w : 正向移动到相邻单词的首字符
    • b : 逆向移动到相邻单词的首字符
    • e : 正向移动到相邻单词的尾字符
    • ge : 逆向移动到相邻单词的尾字符
    • fa : 正向移动到第一个字符 a 处
    • Fa : 逆向移动到第一个字符 a 处
    • 8w : 正向移动到相隔八个单词的首字符执行
    • 4Fa : 逆向移动到第四个 a 字符处
    • 0 : 行尾
    • $ : 行首
    • gg : 跳转到文件头
    • Shift+g : 跳转到文件末尾

    5.1.2 编辑操作

    • u : 撤销上一步的操作
    • Ctrl+r : 恢复上一步被撤销的操作
    • CTRL+s : 锁死
    • Ctrl+Q : 来解除锁死

    5.1.3 窗口移动

    CTRL+w即可, 上述的tagbar和搜索的窗口相互切换.

    • ;wh : 向左切换窗口
    • ;wj : 向下切换窗口
    • ;wk : 向上切换窗口
    • ;wl : 向右切换窗口

    5.2 折叠代码

    " 基于缩进或语法进行代码折叠
    "set foldmethod=indent
    set foldmethod=syntax
    " 启动 vim 时关闭折叠代码
    set nofoldenable
    

    操作:za,打开或关闭当前折叠;zm,关闭所有折叠;zr,打开所有折叠。

    5.3 高亮同名词

    • gd : 高亮显示所有相同的单词
    • shift + "*" : 向下查找相同单词并高亮显示
    • shift + "#" : 向上查找相同单词并高亮显示
    • :noh : 命令行模式下输出:“noh” 命令取消高亮显示
    " 取消高亮单词
    nnoremap <leader>no :noh<CR>
    

    5.4 替换

    1. 你也可以指定行范围,如,第三行到第五行的my替换为your,flag是是否确认.

      :3,5s/my/your/[flags]
      :3,5s/my/your/ #这是替换第一个
      :3,5s/my/your/g # 这是替换所有p
      
    2. 选中内容替换 先进入visual模式选中,然后输入:, 之后系统默认变为:'<,'>,所以我们只需要再输入:

      s/my/your/[flags]
      

      flags为g表示替换所有

    3. 如果对工程内所有文件进行替换,先 :args **/.cpp **/.h 告知 vim 范围,再执行替换.

    5.5 环境保护

    请确保你的 vim 支持这两个特性:

    vim --version | grep mksession
    vim --version | grep viminfo
    
    " 设置环境保存项
    set sessionoptions="blank,buffers,globals,localoptions,tabpages,sesdir,folds,help,options,resize,winpos,winsize"
    " 保存 undo 历史
    set undodir=~/.undo_history/
    set undofile
    " 保存快捷键
    map <leader>ss :mksession! my.vim<cr> :wviminfo! my.viminfo<cr>
    " 恢复快捷键
    map <leader>rs :source my.vim<cr> :rviminfo my.viminfo<cr>
    

    使用:

    • ;ss: 保护环境
    • ;rs: 还原环境

    5.6 编译执行

    1. txt编辑不多说
    2. makefile: vim 内部通过 ! 前缀可以执行 shell 命令,:!cmake CMakeLists.txt
    3. 设定快捷键, ;m,即make

    删除main程序,重新编译.

    nmap <Leader>make :!rm -rf main<CR>:wa<CR>:make<CR><CR>:cw<CR>
    

    CMakeLists.txt文件内容, 编译选项详见: https://www.jianshu.com/p/cbd1f2e52542

    PROJECT(main) 
    SET(SRC_LIST server.cpp) 
    SET(CMAKE_CXX_COMPILER "clang++") 
    SET(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ -Werror -Weverything -Wno-deprecated-declarations -Wno-disabled-macro-expansion -Wno-float-equal -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-global-constructors -Wno-exit-time-destructors -Wno-missing-prototypes -Wno-padded -Wno-old-style-cast -Wno-unreachable-code")
    SET(CMAKE_EXE_LINKER_FLAGS "-lc++ -lc++abi") 
    SET(CMAKE_BUILD_TYPE Debug) 
    ADD_EXECUTABLE(server ${SRC_LIST})
    
    

    5.7 窗口尺寸修改

    • 如果是水平分隔可以使用:nwinc +/-把当前激活窗口高度增加、减少n个字符高度,比如:10winc +
    • 如果是垂直分隔可以使用:nwinc >/<把当前激活窗口宽度增加、减少n个字符宽度,比如:5winc >

    5.8 纯本文复制

    摘自链接:https://blog.csdn.net/Liu_jalon/article/details/88657513

    我们经常会遇到再linux vim编辑器中复制粘贴代码时出现格式错乱的问题,这会影响我们工作的效率,下面介绍一种解决这种问题的办法: 运行如下命令,进入 paste 模式::set paste 进入 paste 模式后,按 i 键进入插入模式,然后再粘帖,文本格式不会错乱了。但粘帖后还需要按 进入普通模式并执行如下命令结束 paste 模式::set nopaste

    " 设置纯文本复制粘贴
    map <F9> :set paste<CR>i
    map <F10> :set nopaste<CR>
    

    5.9 系统剪切板

    vimrc中增加以下:

    " 设置快捷键将选中文本块复制至系统剪贴板
    vnoremap <Leader>y "+y
    " 设置快捷键将系统剪贴板内容粘贴至 vim
    nmap <Leader>p "+p
    

    以下摘自:https://blog.csdn.net/u014104588/article/details/81071479 引发问题出现的原因是~/.viminfo拥有者为root,因此执行以下命令将~/.viminfo拥有者更改为当前用户。

    # 把username改为自己的用户名
    sudo chown username ~/.viminfo 
    

    5.10 man支持

    1. 安装 以下直接摘自博客:

      要使用该功能,系统中必须先安装对应 man。安装 linux 系统函数 man,先下载(https://www.kernel.org/doc/man-pages/download.html ),解压后将 man1/ 至 man8/ 拷贝至 /usr/share/man/,运行 man fork 确认是否安装成功。安装 C++ 标准库 man,先下载(ftp://GCC.gnu.org/pub/GCC/libstdc++/doxygen/ ),选择最新 libstdc++-api-X.X.X.man.tar.bz2,解压后将 man3/ 拷贝至 /usr/share/man/,运行 man std::vector 确认是否安装成功.

      https://www.cnblogs.com/lymboy/p/8143569.html, 中直接找到了IP,以免解析不了, http://216.165.129.141/pub/sourceware.org/libstdc++/doxygen/

    2. 使用

      • :Man fork: 手动输入
      • ;man: 光标所在单词将被传递给 :Man 命令,不用再手工键入.
  • 相关阅读:
    二维数组循环获取替换逗号(PH商品详情页中的,,,去除)
    怎样去除IE9以下浏览器的input自带的X?
    js基础之---slice()
    js基础之---parseInt()
    js去掉字符串中的空格
    div超出内容后自动显示滚动条
    Pytorch 基础
    Pytorch 线性回归问题 总结
    python 图像分类问题 (cifar10)
    Python绘图总结(seaborn库的使用)(下)
  • 原文地址:https://www.cnblogs.com/whuwzp/p/ubuntu_vim_5.html
Copyright © 2020-2023  润新知