Linux基础:vim

22

一、常用操作

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.png

二、vim配置

标准的vim不是很好用,基本的就是设置行号,如果想更好用可以安装插件

  • 设置行号:

方案一:在Esc模式下,输入:set nu 或者 :set number

方案二:永久设置,修改vim配置文件(.)。vim生效的地方有两处,一个是root用户/root目录(~)(不推荐,因为对所有用户都生效),另一个是用户目录下,对指定用户生效。如/home/ubuntu目录下,只对ubuntu用户生效。root用户有默认存在配置文件,一般用户需要自己创建。

  1. 在用户目录下

  2. 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 部分

  1. call plug#begin() 开始该部分

  2. 使用 Plug 命令列出插件

  3. call plug#end() 结束该部分

如下:

call plug#begin()

" 在此列出您的插件
Plug 'tpope/vim-sensible'

call plug#end()

重新加载文件或重启 Vim,然后您可以,

  1. :PlugInstall 安装插件

  2. :PlugUpdate 安装或更新插件

  3. :PlugDiff 审查上次更新的更改

  4. :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界面