Linux基础:vim
一、常用操作
1.批量缩进
在Esc模式下:
:7,10< 表示7至10行回退一个缩进
:7,10> 表示7到10行前进一个缩进
>> 当前行前进一个缩进,<< 当前行回退一个缩进
2.删除
在Esc模式下:
dd 表示删除当前行
:7,10d 表示删除7到10行
d1G:删除光标所在到第一行数据
dG:删除光标所在到最后一行数据
d0:删除光标到该行首
d$:上次光标到该行尾
x,X:向后、前删除一个字符
3x,X:向后、前删除3个字符
3.复制及粘贴
yy单行复制
3yy向下复制3行
p粘贴
:9,11 copy 12 将9到11行内容复制到12行,copy可以简写为co
:9,11 move 12 将9到11行内容移动到12行,move 可以简写为m
4.移动
3gg:移动到第3行
G:移动到末行
gg:移动到首行
| :移动到行首
3.代码块编辑(列选择模式)
在Esc模式下:
1.光标移到插入位置的第一行第一列。
2.ctrl+v 进入块选择模式。
3.通过移动选择代码块。
4.键入(I大写字母),进入编辑模式。
5.输入要插入的字符:如#。
6.按Esc退出。
4.查找替换
在Esc模式下
1.假设你想要在整个文件中查找“foo”并将其替换为“bar”,你可以这样做:
:%s/foo/bar/g
2.如果你只想替换每行的第一个匹配项,可以去掉g:
:%s/foo/bar/
3.如果你想要在一定范围内进行查找替换,可以指定行号:
:10,20s/foo/bar/g
上面的命令会在第10行到第20行之间查找“foo”并替换为“bar”。
5.取消高亮显示
在Esc模式下
:noh
6.在vim模式下直接退到shell
:qa
7.其他快捷键
u撤销,Ctrl+r恢复上一步被撤销的操作
ZZ(大写的)保存并突出 等同于 :wq

二、vim配置
标准的vim不是很好用,基本的就是设置行号,如果想更好用可以安装插件
设置行号:
方案一:在Esc模式下,输入:set nu 或者 :set number
方案二:永久设置,修改vim配置文件(.)。vim生效的地方有两处,一个是root用户/root目录(~)(不推荐,因为对所有用户都生效),另一个是用户目录下,对指定用户生效。如/home/ubuntu目录下,只对ubuntu用户生效。root用户有默认存在配置文件,一般用户需要自己创建。
在用户目录下
vim .vimrc
1 set number
2 set showmatch "显示匹配的括号
3 set scrolloff=3 "距离顶部和底部3行"
4 #set mouse=a "启用鼠标,注意这里最好不要,因为启动后,右键粘贴外部复制项目就不能正常粘贴
5 set hlsearch "搜索高亮
6 syntax on "语法高亮
7 au BufNewFile,BufRead *.py
8 \ set tabstop=4 "tab宽度
9 \ set softtabstop=4
10 \ set shiftwidth=4
11 \ set textwidth=79 "行最大宽度
12 \ set expandtab "tab替换为空格键
13 \ set autoindent "自动缩进
安装插件vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
使用方法:
在配置文件~/.vimrc中添加一个 vim-plug 部分
以
call plug#begin()开始该部分使用
Plug命令列出插件以
call plug#end()结束该部分
如下:
call plug#begin()
" 在此列出您的插件
Plug 'tpope/vim-sensible'
call plug#end()重新加载文件或重启 Vim,然后您可以,
:PlugInstall安装插件:PlugUpdate安装或更新插件:PlugDiff审查上次更新的更改:PlugClean移除列表中不再存在的插件
三、vim-plus常用插件
(1)NERDTree
Plug 'scrooloose/nerdtree' :目录树插件
可在.vimrc中配置该插件快捷键
" Configure the NERDTree plugin mapping button
" Automatically open NERDTree after opening the file
autocmd VimEnter * NERDTree
" Key F2: Map other tabs
map <F2> :NERDTreeMirror<CR>
" Key F3: Expand/shrink NERDTree
map <F3> :NERDTreeToggle<CR>
" Key f: In the NERDTree window, jump the cursor to the currently open file.
map f :NERDTreeFind<CR>
" Key 1: Switch to the previous tab
map 1 :tabp<CR>
" Key 2: Switch to the next tab
map 2 :tabn<CR>NERDTree 的官方文档默认位置在 ~/.vim/plugged/nerdtree/doc/NERDTree.txt 快捷键部分在文本的 2.3. NERDTree Mappings 中介绍。
常用快捷键
o 或 回车(光标位于 NERDTree 窗口):光标在文件夹上时,为展开 / 折叠文件夹。
光标在文件上时,为打开文件,光标会跳转到新打开的文件第一行第一列的位置。
go(光标位于 NERDTree 窗口的文件): 为打开文件,光标不跳转。
Ctrl + w + w:光标在各个被打开的窗口切换
Ctrl + w + h :光标向左侧的窗口切换
Ctrl + w + j :光标向下侧的窗口切换
Ctrl + w + k :光标向上侧的窗口切换
Ctrl + w + l :光标向右侧的窗口切换
i(光标位于 NERDTree 窗口的文件):沿水平分割出一个新窗口,并显示光标所在位置的文件内容,光标会跳转到新窗口。
gi(光标位于 NERDTree 窗口的文件):与 i 不同处是光标不会跳转,依旧停留在 NERDTree 窗口。
s(光标位于 NERDTree 窗口的文件):沿垂直分割出一个新窗口,并显示光标所在位置的文件内容,光标会跳转到新窗口。
gs(光标位于 NERDTree 窗口的文件):与 s 不同处是光标不会跳转,依旧停留在 NERDTree 窗口。
q(光标位于 NERDTree 窗口):关闭 NERDTree 窗口。
gt:切换tab
(2)Tagbar(代码结构)
1.安装ctags软件
sudo apt install exuberant-ctags
2.配置
"""tagbar相关配置(ctags可执行文件不能是mac只带的ctags,mac用户需要brew install
"""ctags 并且软连接 ctags
"""为当前环境变量的ctags,然后利用ctags生成tags文件给vim函数分屏读取
"""
"let g:tagbar_ctags_bin='/usr/local/Cellar/ctags/5.8_1/bin/ctags'
let g:tagbar_right=1
set tags=tags;
set autochdir
"ctrl+m开启文件tagbar(就是函数提示分屏)
map <C-m> :TagbarToggle<CR>
"""
"文件目录树分屏ctrl+n
map <C-n> :NERDTreeToggle<CR>
(3)tab智能补全
Plug 'ervandew/supertab'
(4)ptthon自动补全
Plug 'davidhalter/jedi-vim'
(5)vim-airline插件来美化状态栏,同时也可以显示更多信息
" vim-airline
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
可以去 GitHub 上下载更多主题文件,然后放到 ~/.vim/plugged/vim-airline-themes/autoload/airline/themes 中,这样就可以配置更多主题了。地址:https://github.com/vim-airline/vim-airline-themes
配置:
"airline
"Set up the topic
let g:airline_theme='light'
(6)vim-illuminate单词突出
安装:
" vim-illuminate
Plug 'rrethy/vim-illuminate'
配置:
hi illuminatedWord ctermfg=white ctermbg=99
(7)NERDCommenter代码注释器
安装:
" NERDCommenter
Plug 'scrooloose/nerdcommenter'
常用快捷键
这里要解释快捷键里两个元素,分别是 [count] 和 <leader>,[count] 是指被选中的行,在 Vim 的命令行模式下,按下 v 键可以进入 Visual 模式(可视模式),然后以光标所在行为起点,按上下方向键或者 k 键(上)和 j 键(下),选中需要注释或者取消注释的行。<leader> 是一个特殊的键序列,默认情况下映射为反斜杠 \。
快捷键 功能
[count]cc: 注释当前行或者可视模式下选中的内容。
[count]cn :与 [count]<leader>cc 一样。 cn 可以嵌套注释,而 cc 不能
[count]cm:与上面不同的命令是,使用一组符号进行注释选定内容。
[count]cu :取消注释。
(8)CtrlP文件搜索插件
安装:Plug ‘ctrlpvim/ctrlp.vim’
使用:
在vim中使用快捷键<ctlr + p> 打开CtrlP界面