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 命令,不用再手工键入.

Linux c++ vim环境搭建系列(5)——vim使用的更多相关文章

  1. Linux c++ vim环境搭建系列(0)——简介

    vim 学习 简介: 源码编译使用vim及其插件. 内容包含: vim的编译安装, llvm clang的编译安装, 插件youcompleteme的编译安装使用, 以及vim其他插件的使用. 搭建环 ...

  2. Linux c++ vim环境搭建系列(4)——vim插件安装配置使用

    4. 插件 主要是c++相关的. ~/.vimrc文件在GitHub上有:https://github.com/whuwzp/vim_config 以下内容参考: https://github.com ...

  3. Linux c++ vim环境搭建系列(3)——Ubuntu18.04.4编译安装youcompleteme

    3. youcompleteme编译安装 参考网址: https://github.com/ycm-core/YouCompleteMe#linux-64-bit 建议不要用这个博客的方法: http ...

  4. Linux c++ vim环境搭建系列(1)——Ubuntu18.04.4编译安装vim8.2

    1. vim源码编译安装 参考网址: https://github.com/ycm-core/YouCompleteMe/wiki/Building-Vim-from-source 安装各类依赖库 s ...

  5. Linux c++ vim环境搭建系列(6)——CMakeLists.txt多文档多目录组织方法和编写示例

    CMakeLists.txt学习 1. 概要 主要是关于cmakelists.txt的编写模板,和多文档多目录的组织方法详解, 涉及第三方库的添加使用方法. 这里主要介绍cmakelists.txt的 ...

  6. Linux c++ vim环境搭建系列(2)——Ubuntu18.04.4编译安装llvm clang

    2. 源码编译安装llvm clang 参考网址: https://llvhttps

  7. Ubuntu环境搭建系列—JavaEE篇

    恩,其实我是一时兴起,所以就写了目前这几篇环境的博文,希望能给自己做一个笔记,同时也能够给一些新手带来一些帮助,不会在配置方面那么迷茫.本篇文章主要就是针对Java web开发进行环境搭建. 一.To ...

  8. Linux vagrant+virtualbox环境搭建步骤

    Linux vagrant+virtualbox环境搭建步骤 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用. 我们可 ...

  9. 服务器环境搭建系列(四)-mysql篇

    1.按照上一篇服务器环境搭建系列(三)-JDK篇中的方法检查系统是否已经预装Mysql并卸载. 2.下载mysql,这里是MySQL-server-5.5.25-1.linux2.6.x86_64.r ...

随机推荐

  1. docker redis安装及配置(外网访问 关闭安全限制 设置密码)

    docker run -p 6379:6379 --name redis -v /usr/local/redis/etc/redis.conf:/etc/redis/redis.conf -v /us ...

  2. vue 组件通讯方式到底有多少种 ?

    前置 做大小 vue 项目都离不开组件通讯, 自己也收藏了很多关于 vue 组件通讯的文章. 今天自己全部试了试, 并查了文档, 在这里总结一下并全部列出, 都是简单的例子. 如有错误欢迎指正. 温馨 ...

  3. [bfs,深度记录] East Central North America Regional Contest 2016 (ECNA 2016) D Lost in Translation

    Problem D Lost in Translation The word is out that you’ve just finished writing a book entitled How ...

  4. Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序

    Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序 引子   上期给大家介绍了如何使用如何用华为HMS MLKit SDK 三十分钟在安卓上开发一个微笑抓 ...

  5. coding++ :javascript Date format (js日期格式化)

    方式一: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1 ...

  6. js 的位运算

    api 用途 待更...

  7. spring boot 装载自定义yml文件

    yml格式的配置文件感觉很人性化,所以想把项目中的.properties都替换成.yml文件,蛋疼的是springboot自1.5以后就把@configurationProperties中的locat ...

  8. nginx 报 502 bad gateway 分析解决

    出现nginx 502 bad gateway 问题,先从nginx端日志入手,分析排查原因. 1.排查问题 首先需要打开nginx错误日志. 编辑nginx.conf,默认路径在/usr/local ...

  9. [洛谷2671]求和<前缀和&模拟>

    题目链接:https://www.luogu.org/problemnew/show/P2671 这是noip2015普及组的第三题,谁说的普及组的题就一定水的不行,这道题就比较有意思的 这道题的暴力 ...

  10. 接口测试彻底弄懂Session、Cookie、Token的区别及联系hold住面试官--hold住了开3万,hold不住开3K!

    一.前言:接口测试之伤:cookie,session,token本是一家! cookie,session,token的区别早就已经成为测试同行的心病,各大论坛,各大博客,各大视频网站无不充斥着各种疑问 ...