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. WordCount程序(Java)

    Github项目地址:https://github.com/softwareCQT/web_camp/tree/master/wordCount 一.题目描述 实现一个简单而完整的软件工具(源程序特征 ...

  2. java基础-Map

    简介 Map是一种接口,实现类有 hashMap SortedMap是继承自Map的接口,实现类为TreeMap,在内部会对Key进行排序 遍历Map 使用for each循环遍历Map实例的keyS ...

  3. Go语言库系列之flag

    背景 终端(命令行)操作是程序员的必备技能,但是你知道怎么通过golang制作出如下命令吗? $ flag girl -h Usage of girl: -height int 身高 (default ...

  4. Qt 事件使用示例 (一)

    Qt 事件使用示例,以一个常见的使用来说明:QLabel 当鼠标滑过时改变颜色. 事先说明要想实现这一功能有很多种方法,如Qss实现,本文使用Qt事件的方式来实现. 第一步,我们得实现一个从QLabe ...

  5. zookeeper java代码实现master 选举

    1,master选举使用场景及结构 现在很多时候我们的服务需要7*24小时工作,假如一台机器挂了,我们希望能有其它机器顶替它继续工作.此类问题现在多采用master-salve模式,也就是常说的主从模 ...

  6. Spring - 事务管理概述

      什么是事务管理? 第一个问题:什么是事务? 事务一般是相对数据库而言的,对于数据库一次操作就属于一个事务, 一次操作可以是几句 SQL 语句,也可以是若干行 JDBC 的 Java 语句.事务既然 ...

  7. CSS基础总结 1

    一.什么是 CSS? CSS 指层叠样式表 (Cascading Style Sheets),是一种用来表现 HTML 文档样式的语言,样式定义如何显示 HTML 元素,是能够真正做到网页表现与结构分 ...

  8. 使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署

    1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...

  9. P3376 【模板】网络最大流( Edmonds-krap、Dinic、ISAP 算法)

    P3376 [模板]网络最大流( Edmonds-krap.Dinic.ISAP 算法) 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入格式 第一行包含四个正整数N.M.S ...

  10. idea 本地代码被覆盖问题

    一不小心误操作先执行更新操作怎么办!辛辛苦苦工作一下午的代码全被覆盖了,心里紧张死了!不过别着急,还好用的idea,请看如图操作! 1.点击鼠标右键 => 2.点击Local History = ...