Vim操作命令合集

Posted 尚谕Learning

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim操作命令合集相关的知识,希望对你有一定的参考价值。

Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个前端工作者不得不安装的一些插件,而关于 Vim 的简介,主题的选择,以及为何使用 vim-plug 来管理插件等内容,有兴趣的同学下来可以自己了解和对比下。 
枫上雾棋

安装

sudo yum install -y vim //CentOS 
其他Linux版本,请自行baidu。

新手指南

vim三种模式一般模式、编辑模式和命令模式

一般模式:

用户启动vim编辑器,便进入了一般模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。 
以下是常用的几个命令: 
  i 切换到输入模式,以输入字符。 
  x 删除当前光标所在处的字符。 
  : 切换到命令模式,以在最底一行输入命令。 
若想要编辑文本:启动Vim,进入了一般模式,按下i,切换到编辑模式

编辑模式:

在一般模式下按下i就进入了编辑模式。在编辑模式下,可以进行编辑内容等操作。

命令模式:

在一般模式下按下:(英文冒号)就进入了命令模式。命令模式可以输入单个或多个字符的命令,可用的命令非常多。 
在命令模式中,基本的命令有: 
  :q 退出程序 
  :w 保存文件 
按ESC键可随时退出命令模式。

移动光标

# hjkl 
# 2w 向前移动两个单词 
# 3e 向前移动到第 3 个单词的末尾 
# 0 移动到行首 
# $ 当前行的末尾 
# gg 文件第一行 
# G 文件最后一行 
# 行号+G 指定行 
# +o 跳转回之前的位置 
# +i 返回跳转之前的位置

退出

# [esc] 进入正常模式 
# :q! 不保存退出 
# :wq 保存后退出

删除

# 删除当前字符 
# dw 删除至当前单词末尾 
# de 删除至当前单词末尾,包括当前字符 
# d$ 删除至当前行尾 
# dd 删除整行 
# 2dd 删除两行

修改

# 插入文本 
# A 当前行末尾添加 
# r 替换当前字符 
# o 打开新的一行并进入插入模式

撤销

# u 撤销 
# +r 取消撤销 
# 复制粘贴剪切 
# v 进入可视模式 
# y 复制 
# p 粘贴 
# yy 复制当前行 
# dd 剪切当前行

状态

# +g 显示当前行以及文件信息 
查找 
# / 正向查找(n:继续查找,N:相反方向继续查找) 
# ? 逆向查找 
# % 查找配对的 {,[,( 
# :set ic 忽略大小写 
# :set noic 取消忽略大小写 
# :set hls 匹配项高亮显示 
# :set is 显示部分匹配

替换

# :s/old/new 替换该行第一个匹配串 
# :s/old/new/g 替换全行的匹配串 
# :%s/old/new/g 替换整个文件的匹配串

折叠

# zc 折叠 
# zC 折叠所有嵌套 
# zo 展开折叠 
# zO 展开所有折叠嵌套

执行外部命令

# :!shell 执行外部命令

.vimrc

.vimrc 是 Vim 的配置文件,需要我们自己创建:

cd Home // 进入 Home 目录 
touch .vimrc // 配置文件

 
   
   
 
  1. # Unix

  2. # vim-plug

  3. # Vim

  4. curl -fLo ~/.vim/autoload/plug.vim --create-dirs \

  5. https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

  6. # Neovim

  7. curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \

  8. https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

其他平台,可以查看 vim-plug[1]。

基本配置

取消备份

set nobackup 
set noswapfile

文件编码

set encoding=utf-8

显示行号

set number

取消换行

set nowrap

显示光标当前位置

set ruler

设置缩进

set cindent 
set tabstop=2 
set shiftwidth=2

突出显示当前行

set cursorline

查找

set ic 
set hls 
set is

左下角显示当前vim模式

set showmode

代码折叠

#启动 vim 时关闭折叠代码 
set nofoldenable

主题

syntax enable 
set background=dark 
colorscheme solarized

◈ altercation/vim-colors-solarized[2] 
◈ Anthony25/gnome-terminal-colors-solarized[3]

插件配置

树形目录

 
   
   
 
  1. Plug 'scrooloose/nerdtree'

  2. Plug 'jistr/vim-nerdtree-tabs'

  3. Plug 'Xuyuanp/nerdtree-git-plugin'


  4. autocmd vimenter * NERDTree

  5. map <C-n> :NERDTreeToggle<CR>

  6. let NERDTreeShowHidden=1

  7. let g:NERDTreeShowIgnoredStatus = 1

  8. let g:nerdtree_tabs_open_on_console_startup=1

  9. let g:NERDTreeIndicatorMapCustom = {

  10. \ "Modified" : "✹",

  11. \ "Staged" : "✚",

  12. \ "Untracked" : "✭",

  13. \ "Renamed" : "➜",

  14. \ "Unmerged" : "═",

  15. \ "Deleted" : "✖",

  16. \ "Dirty" : "✗",

  17. \ "Clean" : "✔︎",

  18. \ 'Ignored' : '☒',

  19. \ "Unknown" : "?"

  20. \ }

# o 打开关闭文件或目录 
# e 以文件管理的方式打开选中的目录 
# t 在标签页中打开 
# T 在标签页中打开,但光标仍然留在 NERDTree 
# r 刷新光标所在的目录 
# R 刷新当前根路径 
# X 收起所有目录 
# p 小写,跳转到光标所在的上一级路径 
# P 大写,跳转到当前根路径 
# J 到第一个节点 
# K 到最后一个节点 
# I 显示隐藏文件 
# m 显示文件操作菜单 
# C 将根路径设置为光标所在的目录 
# u 设置上级目录为根路径 
# ctrl + w + w 光标自动在左右侧窗口切换 
# ctrl + w + r 移动当前窗口的布局位置 
# :tabc 关闭当前的 tab 
# :tabo 关闭所有其他的 tab 
# :tabp 前一个 tab 
# :tabn 后一个 tab 
# gT 前一个 tab 
# gt 后一个 tab

◈ scrooloose/nerdtree[4] 
◈ vim-nerdtree-tabs[5] 
◈ nerdtree-git-plugin[6]

代码,引号,路径补全

 
   
   
 
  1. Plug 'Valloric/YouCompleteMe'

  2. Plug 'Raimondi/delimitMate'

  3. Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }

◈ Valloric/YouCompleteMe[7] 
◈ Raimondi/delimitMate[8] 
◈ Shougo/deoplete.nvim[9]

语法高亮,检查

 
   
   
 
  1. Plug 'sheerun/vim-polyglot'

  2. Plug 'w0rp/ale'


  3. let g:ale_linters = {

  4. \ 'javascript': ['eslint'],

  5. \ 'css': ['stylelint'],

  6. \}

  7. let g:ale_fixers = {

  8. \ 'javascript': ['eslint'],

  9. \ 'css': ['stylelint'],

  10. \}

  11. let g:ale_fix_on_save = 1


  12. let g:ale_sign_column_always = 1

  13. let g:ale_sign_error = '●'

  14. let g:ale_sign_warning = '▶'


  15. nmap <silent> <C-k> <Plug>(ale_previous_wrap)

  16. nmap <silent> <C-j> <Plug>(ale_next_wrap)

◈ w0rp/ale[10] 
◈ sheerun/vim-polyglot[11]

文件,代码搜索

Plug 'rking/ag.vim' 
Plug 'kien/ctrlp.vim'

◈ kien/ctrlp.vim[12] 
◈ ggreer/the_silver_searcher[13] 
◈ rking/ag.vim[14]

加强版状态栏

 
   
   
 
  1. Plug 'vim-airline/vim-airline'

  2. Plug 'vim-airline/vim-airline-themes'


  3. let g:airline_theme='papercolor'

◈ vim-airline/vim-airline[15] 
◈ vim-airline/vim-airline-themes[16]

代码注释

 
   
   
 
  1. Plug 'scrooloose/nerdcommenter'


  2. # <leader>cc // 注释

  3. # <leader>cm 只用一组符号注释

  4. # <leader>cA 在行尾添加注释

  5. # <leader>c$ /* 注释 */

  6. # <leader>cs /* 块注释 */

  7. # <leader>cy 注释并复制

  8. # <leader>c<space> 注释/取消注释

  9. # <leader>ca 切换 // 和 /* */

  10. # <leader>cu 取消注释


  11. let g:NERDSpaceDelims = 1

  12. let g:NERDDefaultAlign = 'left'

  13. let g:NERDCustomDelimiters = {

  14. \ 'javascript': { 'left': '//', 'leftAlt': '/**', 'rightAlt': '*/' },

  15. \ 'less': { 'left': '/**', 'right': '*/' }

  16. \ }

◈ scrooloose/nerdcommenter[17]

git

Plug 'airblade/vim-gitgutter' 
Plug 'tpope/vim-fugitive'

◈ airblade/vim-gitgutter[18] 
◈ tpope/vim-fugitive[19]

Markdown

 
   
   
 
  1. Plug 'suan/vim-instant-markdown'


  2. let g:instant_markdown_slow = 1

  3. let g:instant_markdown_autostart = 0

  4. # :InstantMarkdownPreview

◈ suan/vim-instant-markdown[20]

Emmet

 
   
   
 
  1. Plug 'mattn/emmet-vim'


  2. let g:user_emmet_leader_key='<Tab>'

  3. let g:user_emmet_settings = {

  4. \ 'javascript.jsx' : {

  5. \ 'extends' : 'jsx',

  6. \ },

  7. \ }

◈ mattn/emmet-vim[21]

html 5

Plug'othree/html5.vim'

◈ othree/html5.vim[22]

css 3

 
   
   
 
  1. Plug 'hail2u/vim-css3-syntax'

  2. Plug 'ap/vim-css-color'


  3. augroup VimCSS3Syntax

  4. autocmd!


  5. autocmd FileType css setlocal iskeyword+=-

  6. augroup END

◈ hail2u/vim-css3-syntax[23] 
◈ ap/vim-css-color[24]

JavaScipt

 
   
   
 
  1. Plug 'pangloss/vim-javascript'

  2. let g:javascript_plugin_jsdoc = 1

  3. let g:javascript_plugin_ngdoc = 1

  4. let g:javascript_plugin_flow = 1

  5. set foldmethod=syntax

  6. let g:javascript_conceal_function = "ƒ"

  7. let g:javascript_conceal_null = "ø"

  8. let g:javascript_conceal_this = "@"

  9. let g:javascript_conceal_return = "⇚"

  10. let g:javascript_conceal_undefined = "¿"

  11. let g:javascript_conceal_NaN = "ℕ"

  12. let g:javascript_conceal_prototype = "¶"

  13. let g:javascript_conceal_static = "•"

  14. let g:javascript_conceal_super = "Ω"

  15. let g:javascript_conceal_arrow_function = "⇒"

  16. let g:javascript_conceal_noarg_arrow_function = " "

  17. let g:javascript_conceal_underscore_arrow_function = " "

  18. set conceallevel=1

◈ pangloss/vim-javascript[25] 
(注:上述脚本中存在特殊字符,有的情况下显示不正确,请直接用上述链接的内容。)

React

 
   
   
 
  1. Plug 'mxw/vim-jsx'

  2. let g:jsx_ext_required = 0

  3. mxw/vim-jsx[26]


  4. Prettier


  5. Plug 'prettier/vim-prettier', {

  6. \ 'do': 'yarn install',

  7. \ 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql'] }

  8. let g:prettier#config#bracket_spacing = 'true'

  9. let g:prettier#config#jsx_bracket_same_line = 'false'

  10. let g:prettier#autoformat = 0

  11. autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql PrettierAsync

  12. # :Prettier

◈ prettier/vim-prettier[27]

总结

最后,呈上参考配置 .vimrc[28],如果关于 vim 有更好的 idea,欢迎在评论中交流。 
https://github.com/junegunn/vim-plug 
https://github.com/altercation/vim-colors-solarized 
https://github.com/Anthony25/gnome-terminal-colors-solarized 
https://github.com/scrooloose/nerdtree 
https://github.com/jistr/vim-nerdtree-tabs 
https://github.com/Xuyuanp/nerdtree-git-plugin 
https://github.com/Valloric/YouCompleteMe 
https://github.com/Raimondi/delimitMate 
https://github.com/Shougo/deoplete.nvim 
https://github.com/w0rp/ale 
https://github.com/sheerun/vim-polyglot 
https://github.com/kien/ctrlp.vim 
https://github.com/ggreer/the_silver_searcher 
https://github.com/rking/ag.vim 
https://github.com/vim-airline/vim-airline 
https://github.com/vim-airline/vim-airline-themes 
https://github.com/scrooloose/nerdcommenter 
https://github.com/airblade/vim-gitgutter 
https://github.com/tpope/vim-fugitive 
https://github.com/suan/vim-instant-markdown 
https://github.com/mattn/emmet-vim 
https://github.com/othree/html5.vim 
https://github.com/hail2u/vim-css3-syntax 
https://github.com/ap/vim-css-color 
https://github.com/pangloss/vim-javascript 
https://github.com/mxw/vim-jsx 
https://github.com/prettier/vim-prettier 
https://github.com/FengShangWuQi/to-vim/blob/master/.vimr


以上是关于Vim操作命令合集的主要内容,如果未能解决你的问题,请参考以下文章

Vim命令合集

vim命令合集

Vim命令合集

Vim 命令合集

Vim命令合集

VIM命令合集