我已经知道gg=G
可以在Vim上缩进整个文件。但这会让我在缩进后转到文件的开头。如何缩进整个文件并将光标保持在同一位置?
答案 0 :(得分:14)
请参阅:h ''
这会让你回到你开始的第一个字符:
gg=G''
这将使您返回起始行和起始栏:
gg=G``
我认为带有反引号的第二个版本就是你想要的版本。在实践中,我通常只使用双撇号版本,因为我的键盘很难访问反引号。
答案 1 :(得分:2)
将此添加到.vimrc
function! Preserve(command)
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
" Do the business:
execute a:command
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
nmap <leader>> :call Preserve("normal gg>G")<CR>
您也可以在任何其他命令上使用它,只需将参数更改为保留功能即可。从这里获取的想法:http://vimcasts.org/episodes/tidying-whitespace/
答案 2 :(得分:1)
您可以使用m命令后跟字母为当前位置设置书签。然后在运行indent命令后,可以使用`(反引号)命令返回该书签,后跟同一个字母。
答案 3 :(得分:0)
与Alex的回答类似,我在vimrc中使用以下映射。
nnoremap g= :let b:PlugView=winsaveview()<CR>gg=G:call winrestview(b:PlugView) <CR>:echo "file indented"<CR>
在正常模式下按g=
整个缓冲区缩进,并保留滚动/光标位置。
答案 4 :(得分:0)