Variable

%      : nom du fichier en cours (test.txt)
%:p    : chemin complet du fichier en cours (/home/user/test.txt)
%:p:h  : répertoire complet du fichier en cours (sans le nom du fichier et sans le dernier /,   /home/user.txt)

Trucs

Changer le répertoire en cours: :cd repertoire

vimdiff

Changer les couleurs affreuses de vimdiff (dans le fichier ~/.vimrc)

highlight DiffAdd cterm=none ctermfg=white ctermbg=green
highlight DiffDelete cterm=none ctermfg=white ctermbg=Red
highlight DiffChange cterm=none ctermfg=black ctermbg=Yellow
highlight DiffText cterm=none ctermfg=white ctermbg=Magenta

Remplacer

Remplacer <92> par un ' :%s/[\x92]/'/g (source: http://superuser.com/a/224526)

vim + tmux

Avec Vundle et vim+tmux

#vundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

# .vimrc
https://github.com/VundleVim/Vundle.vim
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'christoomey/vim-tmux-navigator'
call vundle#end()
filetype plugin indent on

# .tmux.conf
# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
    | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n C-h if-shell "$is_vim" "send-keys C-h"  "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j"  "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k"  "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l"  "select-pane -R"
bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
bind-key -T copy-mode-vi C-h select-pane -L
bind-key -T copy-mode-vi C-j select-pane -D
bind-key -T copy-mode-vi C-k select-pane -U
bind-key -T copy-mode-vi C-l select-pane -R
bind-key -T copy-mode-vi C-\ select-pane -l

Commande tmux: CTRL % (split). Commande Vim: CTRL-H (gauche), CTRL-L (droite), CTRL-J (haut), CTRL_K (bas)

Source: christoomey/vim-tmux-navigator

Mes configs

" pathogen from https://github.com/tpope/vim-pathogen
" SyntasticCheck from https://github.com/vim-syntastic/syntastic
" deb package phpcode-sniffer
execute pathogen#infect()

syntax on
" indentation selon le langage avec = 
filetype plugin indent on
" appuyer sur "i" et F3 pour activer/désactiver le mode insertion (collage)
" pareil que :set paste / :set nopaste
set pastetoggle=<F3>

set nu
set ai
set ts=4
set et
set sts=4
set sw=4
set listchars=tab:»»,trail:-,nbsp:£
set list
set iskeyword+=-,:
set pastetoggle=<F3>

let php_parent_error_close = 1
let php_folding = 0
let php_noShortTags = 1
let php_sql_query = 0

" https://akrabat.com/checking-your-code-for-psr-2/
let g:syntastic_php_checkers=['php', 'phpcs']
let g:syntastic_php_phpcs_args='--standard=PSR2 -n'

Indentation des array() php avec vim

Actuel: autoindent, expandtab, softtabstop=4, tabstop=4, filetype=php, shiftwidth=4, syntax=php
/usr/share/vim/vim80/syntax/php.vim, Jason Woofenden (Last Change: Dec 11, 2016)

Indentation actuelle avec la commande =

$a = array(
         'ab',
         'cd'
         );

Résultat attendu:

$a = array(
     'ab',
     'cd'
);

Test #2, https://github.com/2072/PHP-Indenting-for-VIm

1. installer vundle https://github.com/VundleVim/Vundle.vim#quick-start
2. résolu:
$a = array(
    'ab',
    'cd'
);
// avec filetype plugin indent on ???