20

分享两个冷门但又超实用的 VIM 使用技巧

 3 years ago
source link: https://www.hi-linux.com/posts/613.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近在使用 VIM 时遇到两个新的问题,觉得还很挺有价值的。现在将处理方法总结后,分享给大家。

VIM 中 delete(backspace)键不能向左删除

MacOS 下打开 vim 编辑文本,进入插入模式,要删除编辑之前的保存过的几个字符,按下 delete 键删除它们,万万没想到呀!只听到 "duang duang duang”,竟然无效!

有一点先明确一下,在 Mac 的键盘中没有 backspace 键,有个键叫 delete ,其实相当于 Window 下的 backspace 键,编辑文本时按下都具有向左删除字符的功能。

问题的原因

网上搜索得知,出现开头说的令人恼火的问题的原因是:

VIM 使用了 compatible 模式,或者把 backspace 变量设置为空。其实 compatible 模式是 VIM 为了兼容 VI 而出现的配置,它的作用是使 VIM 的操作行为和规范和 VI 一致,而这种模式下 backspace 配置是空的。即意味着 backspace 无法删除 indent , end of line , start 这三种字符。

在默认状态下,delete(backspace)按下只会删除本次插入模式下插入的文本,这跟 backspace 的模式设置有关,其模式可以设置为以下三种模式:

0 same as “:set backspace=” (Vi compatible)
1 same as “:set backspace=indent,eol”
2 same as “:set backspace=indent,eol,start”

问题的解决

知道原因后,就好解决了,我们只需要将 backspace 的模式设置成 2 就可以了。

编辑 ~/.vimrc 文件并添加以下内容并保存,下次进入 VIM 就可以在插入模式下任意使用 deletebackspace )键了:

" 解决插入模式下 delete/backspce 键失效问题
set backspace=2

使用 vim-airline 美化你的状态栏

之前一直使用 Powerline 进行状态栏美化,系统升级到 macOS 10.15.5 后突然发现不能正常使用了。

使用 Google 搜索解决问题无果后,发现了另一款更轻量且功能强大的状态栏美化神器 vim-airline

vim-airline 是一个在 VIM 中显示更友好的状态栏的插件,可以让你工作更开心哟!

项目地址: https://github.com/vim-airline/vim-airline

先看下效果,是不是很漂亮呢!

aiMZfaJ.gif!mobile

安装 vim-airline

vim-airline 的使用也很简单,你只需直接下载 vim-airline 插件并放到 VIM 的安装目录下的插件目录即可。

$ git clone https://github.com/vim-airline/vim-airline.git
$ cp vim-airline/plugin/airline.vim ~/.vim/plugin/
$ ls ~/.vim/plugin
airline-themes.vim airline.vim

当然你也可以直接使用多种 VIM 插件管理器来安装 vim-airline 插件,比如:

Plugin Manager Install with… [Pathogen] git clone https://github.com/vim-airline/vim-airline ~/.vim/bundle/vim-airline
Remember to run :Helptags to generate help tags [NeoBundle] NeoBundle 'vim-airline/vim-airline' [Vundle] Plugin 'vim-airline/vim-airline' [Plug] Plug 'vim-airline/vim-airline' [VAM] call vam#ActivateAddons([ 'vim-airline' ]) [Dein] call dein#add('vim-airline/vim-airline') [minpac] call minpac#add('vim-airline/vim-airline') pack feature (native Vim 8 package feature) git clone https://github.com/vim-airline/vim-airline ~/.vim/pack/dist/start/vim-airline
Remember to run :helptags ~/.vim/pack/dist/start/vim-airline/doc to generate help tags

配置 vim-airline

vim-airline 安装完成后,基本上就完全可以使用了。如果你需要定制一些个性化的需求,也可以通过 .vimrc 文件进行配置。下面是我的配置,你可以参考下:

if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_left_sep = '▶'
let g:airline_left_alt_sep = '❯'
let g:airline_right_sep = '◀'
let g:airline_right_alt_sep = '❮'
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.branch = '⎇'

" 是否打开tabline
let g:airline#extensions#tabline#enabled = 1
let g:airline_theme='powerlineish'

set laststatus=2
set encoding=utf-8
set t_Co=256
set fillchars+=stl:\ ,stlnc:\
set term=xterm-256color
set termencoding=utf-8
set nocompatible
set number
syntax enable
set backspace=2

vim-airline 除了自带的样式外,你还可以通过官方主题仓库 vim-airline-themes 项目找到更多漂亮又好用的主题哟!

项目地址: https://github.com/vim-airline/vim-airline-themes

iQbeIzb.png!mobile

最后,如果你还有什么好玩又实用的技巧,欢迎大家留言分享哟!

参考文档

  1. https://www.google.com

  2. https://www.smslit.top/2016/11/27/vim-backspace-invalid/

  3. http://cenalulu.github.io/linux/why-my-backspace-not-work-in-vim/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK