我已经知道在Vim中使用gg=G
可以缩进整个文件。但是这会让我在缩进后返回到文件的开头位置。我该如何缩进整个文件并保持光标在原来的位置?
我已经知道在Vim中使用gg=G
可以缩进整个文件。但是这会让我在缩进后返回到文件的开头位置。我该如何缩进整个文件并保持光标在原来的位置?
请参见:h ''
这将使光标回到您所在行的第一个字符:
gg=G''
这将使您回到起始行和起始列:
gg=G``
我假设你想要使用带有反引号的第二个版本。实际上,我通常只使用双撇号版本,因为反引号在我的键盘上很难输入。
gg=G``zz
- Herbert SitzmqHmwgg=G\
wzt`q。注意,它使用了
q和
w` 标记。 - Fábio Perez<C-O><C-O>
? - user90726将以下内容添加到你的 .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>
let
替换为 let w = winsaveview()
,将结尾的 let
和 call
替换为 call winrestview(w)
,这样你甚至可以还原滚动位置。 - dash-tom-bang与Alex的回答类似,我在vimrc中使用以下映射。
nnoremap g= :let b:PlugView=winsaveview()<CR>gg=G:call winrestview(b:PlugView) <CR>:echo "文件已缩进"<CR>
在正常模式下按下g=
,整个缓冲区都会被缩进,并保留滚动/光标位置。
您可以使用m命令加上一个字母来为当前位置设置书签。然后在运行缩进命令后,您可以使用`(反引号)命令加上相同的字母返回到该书签处。