VIM пользовательские привязки клавиш - PullRequest
9 голосов
/ 13 февраля 2011

Какие пользовательские привязки клавиш VIM вы используете для повышения производительности? Это два моих любимых.

inoremap jj <Esc>

" Clear screen clears search highlighting.
nnoremap <C-L> :nohl<CR><C-L>

Ответы [ 6 ]

4 голосов
/ 14 февраля 2011

Windows и буферы

" Window splitting

nmap <silent> <leader>sh :leftabove vnew<cr>
nmap <silent> <leader>sl :rightbelow vnew<cr>
nmap <silent> <leader>sk :leftabove new<cr>
nmap <silent> <leader>sj :rightbelow new<cr>
nmap <silent> <leader>swh :topleft vnew<cr>
nmap <silent> <leader>swl :botright vnew<cr>
nmap <silent> <leader>swk :topleft new<cr>
nmap <silent> <leader>swj :botright new<cr>

" Scroll the window next to the current one
"   (especially useful for two-window split)
nmap <silent> <leader>j <c-w>w<c-d><c-w>W
nmap <silent> <leader>k <c-w>w<c-u><c-w>W

Редактирование

" Toggle search highlighting
nmap <silent> <leader>/ :set hlsearch!<cr>
" Toggle paste mode
"   (prefer this over 'pastetoggle' to echo current state)
nmap <leader>p :setlocal paste! paste?<cr>

" Select the last edited/pasted text
nmap gv `[v`]

" Keep lines that do (or do not) contain last search term
nmap <leader>v/ :v/<c-r>//d<cr>gg
nmap <leader>g/ :g/<c-r>//d<cr>gg

" Email (de-)quotation
nmap <leader>q vip:s/^/> /<cr>
vmap <leader>q :s/^/> /<cr>
nmap <leader>Q vip:s/^> //<cr>
vmap <leader>Q :s/^> //<cr>

Файлы

" Save and restore session
nmap <leader>ss :wa<cr>:mksession! $HOME/.vim/sessions/
nmap <leader>rs :wa<cr>:source $HOME/.vim/sessions/

" Write buffer through sudo
cnoreabbrev w!! w !sudo tee % >/dev/null

" Change current directory to the directory of the file in buffer
nmap <silent> <leader>cd :cd %:p:h<cr>:pwd<cr>

" Open file located in the same directory as the current one
nmap <leader>e :e <c-r>=expand('%:p:h').'/'<cr>
3 голосов
/ 13 февраля 2011

Grep слово под курсором :

Используя следующие параметры grepprg, он будет рекурсивно искать в текущем каталоге, исключая и включая некоторые конкретные файлы.

" Quick Grep
noremap <Leader>g :grep<space><C-r><C-w><CR>:copen<CR><CR><C-W>b

set grepprg=grep\ -nH
\\--include='*.c'
\\--include='*.cpp'
\\--include='*.h'
\\--exclude-dir='.svn'
\\--exclude='*.svn-base'
\\--exclude-dir='OBJ'
\\--exclude='symTbl.c'
\\ $*
\\ -R\ .

Он поджимает слово под курсором, затем открывает окно Quickfix и перемещает курсор в окно подделки (это должен быть список результатов grep)

Это, вероятно, один из ярлыков, который я использую чаще всего, и он экономит много печатания!

Быстрое перемещение между окнами

noremap <C-j> <C-W>j
noremap <C-k> <C-W>k
noremap <C-h> <C-W>h
noremap <C-l> <C-W>l

Довольно интуитивно и удобно перемещаться, когда ваш экран разделен по горизонтали и вертикали.

2 голосов
/ 14 февраля 2011

Режим вставки

" <esc> in normal mode clears highlight
nnoremap <silent> <esc> :noh<cr><esc>

Редактирование командной строки

" copy an entire word from the line above instead of just one
inoremap <expr> <c-y> matchstr(getline(line('.')-1), '\%' . 
\ virtcol('.') . 'v\%(\k\+\\|.\)')

" Insert Directory of current buffer and open completion
cnoremap <expr> <c-k> getcmdline()[getcmdpos()-2] == " " ? 
\ expand("%:h") .  "/\<c-d>" : "\<c-d>"
2 голосов
/ 13 февраля 2011

Следующая команда переназначает ; в : в командном режиме, избавляя вас от траты драгоценных миллисекунд, удерживая и отпуская клавишу Shift при наборе таких команд, как :wq:

" Remap ";" to ":"
map ; :
noremap ;; ;

Если вам нужно ввести фактический ;, просто нажмите его дважды.

1 голос
/ 13 февраля 2011
let mapleader=","

" omnicompletion : words
inoremap <leader>, <C-x><C-o>

" omnicompletion : filepaths
inoremap <leader>: <C-x><C-f>

" omnicompletion : lines
inoremap <leader>= <C-x><C-l>

" toggle TagList
nnoremap <leader>l :TlistToggle<CR>

" toggle NERDTree
nnoremap <leader>n :NERDTreeToggle<CR>

" I like vertically aligned assignation operators
nnoremap <leader>a :Tabularize<Space>

" with | marking the cursor
" it turns this 
" function foo(){|}
" into this
" function foo(){
"   |
" }
inoremap <C-Return> <CR><CR><C-o>k<Tab>

" push the current ligne up and down
nnoremap <M-D-Up>   ddKp
nnoremap <M-D-Down> ddP  

" swap word under the cursor with previous word on the left
" from the Vim wiki
nnoremap <M-D-Left>  "_yiw?\w\+\_W\+\%#<CR>:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o><C-l>

" swap word under the cursor with next word on the right
" from the Vim wiki
nnoremap <M-D-Right> "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o>/\w\+\_W\+<CR><C-l>

" and I have lusty-explorers "modes" mapped to:
" "files"   <leader>f
" "buffers" <leader>b
" "grep"    <leader>g
0 голосов
/ 13 февраля 2011

Полезно для навигации вверх / вниз по длинным строкам, которые переносятся на несколько строк на вашем дисплее: Alt + или Клавиши со стрелками перемещаются по экранным линиям скореечем строки файла.

map <A-Down> gj
map <A-Up> gk
imap <A-Up> <ESC>gki
imap <A-Down> <ESC>gji
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...