Vim相关
Posted feisonzl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim相关相关的知识,希望对你有一定的参考价值。
1 Vim
1.1 Vim常用插件
1.ctags
<ctrl+t>:ctags 回退
<ctrl+]>:ctags 查找定义
2.minibuff
:bn 下一个buffer
:bf 上一个buffer
3.Taglist
let Tlist_WinWidth = 35//tlist 窗口宽度
4.YCM
1.wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh -x
2.YCM
http://www.alexeyshmalko.com/2014/youcompleteme-ultimate-autocomplete-plugin-for-vim/
5.winmanager
let g:winManagerWidth = 35//winmanager 窗口宽度
1.2 vim配置文件:
普通用户:~/.vimrc
root:/root/.vimrc
hi Comment ctermfg =green //注释颜色
hi String ctermfg =darkred //修改字符串颜色
hi Type ctermfg =yellow //修改类型颜色
hi Number ctermfg =darkblue //修改数字颜色
hi Constant ctermfg =blue //修改常量颜色
hi Statement ctermfg =darkyellow //修改声明颜色
(hi也可用highlight)
1.3 vim常用命令
增删改插:
A:在行末插入字符
a:在光标后插入字符
i:在光标前插入字符
I:在行首插入字符
rchar:替换光标处字符为字符char
cw/ce:替换光标所在处到该单词结尾的字符
o:在下一行新增一行输入字符
O:在上一行新增一行输入字符
x:删除光标处字符
X:删除光标处前一个字符
字符串相关:
:/word //向下查找word字符串
:?word //向上查找word字符串
:%s /abc /efg /g //将所有abc字符串替换为efg字符串
文件操作:
:e <path/to/file> //打开文件
:wq/:x/ZZ //保存并退出文件
:q! //强制退出不保存文件
:qa! //强制退出所以正在编辑的文件
:saveas <path/to/file> //另存为文件
多文件操作:
vim file1 file2 ... filen //打开所有想要打开的文件
:e file //再打开一个文件,并且此时vim里会显示出file文件的内容
:split //水平切分窗口
:vsplit //垂直切分窗口
:bn //下一个文件
:bp //上一个文件
:ls //列出打开的文件,带编号
:b1~n //切换至第n个文件
<C-6> //两文件间的切换
<C-w><dir> //切换到前/下/上/后一个窗格
<C-w>h/j/k/l //同上
<C-w>w //依次向后切换到下一个窗格中
<C-w>_ //最大化窗口尺寸
<C-v>+/- //增加/减小窗口尺寸
鼠标位置移动
行内移动:
0:移动到行首
^:移动到本行第一个非blank字符
$:移动到行尾
g_:移动到行尾最后一个非blank字符
[n]h:相对当前位置向左移动n个字符
[n]l:相对当前位置向右移动n个字符
[n]fa:跳到相对想在位置向右的第n个字符为a的地方
[n]ta:跳到相对想在位置向右的第n个字符为a的前一个字符处
页内移动:
[n]j:相对当前位置向下移动到n行
[n]k:相对当前位置向上移动到n行
[n]gg:跳到第n行
[n]G:跳到第n行,G为跳到页末
[n]e:跳到相对想在位置向右的第n个单词的最后一个字符
[n]w:跳到相对想在位置向右的第n个单词的第一个字符
%:匹配括号移动
[n]*:匹配光标当前所在的单词,向下移动光标到第n个匹配单词
[n]#:匹配光标当前所在的单词,向上移动光标到第n个匹配单词
选中括号中的内容
在可视模式下(<ctrl-v>/v)
<ctrl-v>/vi 选中中间的内容,不包括
<ctrl-v>/va 选中中间内容,包括
<ctrl-v>/vi( 选中()中间内容
<ctrl-v>/vi< 选中<>中间内容
<ctrl-v>/vi[ 选中[]中间内容
<ctrl-v>/vit 选中中间的内容
<ctrl-v>/vi” 选中”"中间内容
<ctrl-v>/vi’ 选中”中间的内容
<ctrl-v>/vis 选中一个句子
<ctrl-v>/vib 选中一个block
<ctrl-v>/viw选中一个单词
<ctrl-v>/vip 选中一个段落
快捷操作
1.多字符操作:
<start position><command><end position>
例:
0y$:将本行第一个到最后一个字符复制下来
0gU$:将本好第一个到最后一个字符变为大写
0gu$:将本好第一个到最后一个字符变为小写
2.区域选择:
<action>a<object> 或 <action>i<object>
例:假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 o 的位置。(借用陈皓的例子,我也曾经学习
他的《VIM简明教程》和《跟我一起写makefile》,很赞的牛人,这是他的博客,http://coolshell.cn,有时
间就去溜溜呗!)
vi":选择""之间的foo,不包括""
va":选择""之间的foo,包括""
vi):会选择 "foo"
va):会选择("foo")
v2i):会选择 map (+) ("foo")
v2a):会选择 (map (+) ("foo"))
3.块操作:
[0/^]<C-v><dir><operation><ESC>
例:选择3行代码块的每行末尾添加字符串"feison"
0<C-v>2j$Afeison<ESC>
选择3行代码块的每行行首插入字符串"--"
0<C-v>2jI--<ESC>
注:
特殊<operation>
1.>向右缩进
2.<向左缩进
3.=自动缩进
4.J把所有行连接成一行
4.宏录制:
qa <operation list> q @a/[n]@@
qa:开启宏录制并将操作记录到寄存器a
<operation list>:操作序列
q:退出宏录制
@a:按录制的宏a操作一次
例:qypq:复制当前行并粘贴
@a:执行该动作一次
10@@:执行该动作10次
5.自动提示:
<C-n>/<C-p>
6.执行外部shell命令:
:!<cmd>
7.自增自减:
<C-a>:自加1
num+<C-a>:自加num
<C-x>:自减1
num+<C-x>:自减num
寄存器操作
1.官方帮助手册
:h registers
2.寄存器分类
2.1.无名(unnamed)寄存器:"",缓存最后一次操作内容;
2.2.数字(numbered)寄存器:"0 ~ "9,缓存最近操作内容,复制与删除有别, "0寄存器缓存最近一次复制的内容,"1-"9缓存最近9次删除内容
2.3.行内删除(small delete)寄存器:"-,缓存行内删除内容;
2.4.具名(named)寄存器:"a ~ "z或"A - "0Z,指定时可用;
2.5.只读(read-only)寄存器:":, "., "%, "#,分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名;
2.6.表达式(expression)寄存器:"=,只读,用于执行表达式命令;
2.7.选择及拖拽(selection and drop)寄存器:"*, "+, "~,存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用;
2.8.黑洞(black hole)寄存器:"_,不缓存操作内容(干净删除);
2.9.模式寄存器(last search pattern):"/,缓存最近的搜索模式。
3.查看寄存器内容
:reg 查看所有寄存器内容
:reg 寄存器名 查看单个寄存器内容
4.寄存器操作:
normal模式下,"<reg>[y/p]表示复制内容到寄存器,粘贴寄存器内容指定位置
从vim内容与外部内容之间的拷贝:"+y(+寄存器是外部和vim通用寄存器)
在无clipboard的vim使用系统剪切板
无clipboard的vim使用场景很多,最常见的就是ssh+vim,这是使用系统剪切板的方法有两种:
1.shift+左键选择;
2.关闭鼠标支持set mouse=a 选项;
1.4 gvim使用
关闭windows下的预设mapping:
:e $MYVIMRC<enter> //或直接编辑_vimrc文件
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
"source $VIMRUNTIME/mswin.vim "注释这两行
"behave mswin
1.5 vim常用命令示意图
2 SpaceVim c/c++ IDE搭建
2.1 安装
sudo apt update
sudo apt install cmake curl git
curl -sLf https://spacevim.org/cn/install.sh | bash
curl -sL install-node.now.sh/lts > nodejs-install.sh
bash nodejs-install.sh -P /home/zhanglei/usr/
2.2常用快捷键
常用编辑器窗口
按键 | 功能描述 |
---|---|
<F2> | 打开、关闭语法树 |
<F3> | 打开、关闭文件树 |
SPC c l | 注释/反注释当前行 |
SPC c L | 注释当前行 |
SPC c u | 反注释当前行 |
SPC c p | 注释/反注释段落 |
2.3 插件安装
2.4 配置文件
~/.SpaceVim.d/init.toml
#=============================================================================
# dark_powered.toml --- dark powered configuration example for SpaceVim
# Copyright (c) 2016-2020 Wang Shidong & Contributors
# Author: Wang Shidong < wsdjeg at 163.com >
# URL: https://spacevim.org
# License: GPLv3
#=============================================================================
# All SpaceVim option below [option] section
[options]
# set spacevim theme. by default colorscheme layer is not loaded,
# if you want to use more colorscheme, please load the colorscheme
# layer
colorscheme = "OceanicNext"
colorscheme_bg = "dark"
# Disable guicolors in basic mode, many terminal do not support 24bit
# true colors
enable_guicolors = true
# Disable statusline separator, if you want to use other value, please
# install nerd fonts
statusline_separator = "arrow"
statusline_inactive_separator = "arrow"
buffer_index_type = 4
default_indent = 4
enable_tabline_filetype_icon = true
enable_statusline_mode = false
bootstrap_before = "feisonspacevim#before"
bootstrap_after = "feisonspacevim#after"
vimcompatible = true
autocomplete_method = "coc"
# Enable autocomplete layer
[[layers]]
name = 'autocomplete'
auto_completion_return_key_behavior = "complete"
auto_completion_tab_key_behavior = "smart"
[[layers]]
name = 'shell'
default_position = 'top'
default_height = 30
[[layers]]
name = 'lang#c'
enable_clang_syntax_highlight = true
clang_executable = "/home/zhanglei/usr/bin/clang"
libclang_path = "/home/zhanglei/usr/lib/"
[[layers]]
name = "lsp"
filetypes = [
"c",
"cpp"
]
[layers.override_cmd]
c = ["clangd"]
[[layers]]
name = "git"
git-plugin = "fugitive"
[[custom_plugins]]
name = "mhartington/oceanic-next"
merged = 0
# vista.vim 的依赖
[[custom_plugins]]
name = "majutsushi/tagbar"
# 更加美观的 tagbar
[[custom_plugins]]
name = 'liuchengxu/vista.vim'
# 基于lsp的高亮插件
[[custom_plugins]]
name = 'jackguo380/vim-lsp-cxx-highlight'
# 利用 git blame 显示当前行的 commit message
[[custom_plugins]]
name = 'rhysd/git-messenger.vim'
lazy = 1
on_cmd = 'GitMessenger'
on_map = '<Plug>(git-messenger'
[[layers]]
name = "tags"
[[layers]]
name = "gtags"
[[layers]]
name = "fzf"
~/.SpaceVim/coc-settings.json
"languageserver":
"clangd":
"command": "clangd",
"rootPatterns": ["compile_flags.txt", "compile_commands.json"],
"filetypes": ["c", "cc", "cpp", "c++", "objc", "objcpp"]
~/.SpaceVim.d/autoload/feisonspacevim.vim
function! feisonspacevim#before() abort
let g:coc_disable_startup_warning = 1
#echo "feisonspacevim enter"
endfunction
function! feisonspacevim#after() abort
#echo "feisonspacevim exit"
endfunction
以上是关于Vim相关的主要内容,如果未能解决你的问题,请参考以下文章