我有这个:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
我希望你能将这个内容翻译成中文:
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
有没有一种使用键盘快捷键快速完成这个操作的方法?
我有这个:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
我希望你能将这个内容翻译成中文:
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
有没有一种使用键盘快捷键快速完成这个操作的方法?
在命令模式下,要将当前行与下一行交换,请键入ddp
。
dd
命令会将当前行复制到一个“寄存器”中,并删除该行。p
命令会在当前行之后将寄存器的内容复制(“粘贴”)到你的缓冲区中。同样地,你可以使用xp
交换两个字符或使用dwwP
交换两个单词。 - Keith Thompsondd
也知道 p
,但从来没有想到可以组合起来使用。太棒了! - windmaomaodd
命令删除当前行,然后你可以用p
命令将移除的行粘贴回来。不过还有另一种方法,使用m
命令。使用m
命令可以移动行,例如:
:m 1
将当前行移动到第一行之后
:m 0
将当前行移动到顶部
:m $
将当前行移动到底部
在你的例子中,将光标放在第一行并输入:m $
例子:
1. one
> 2. two
使用:m-2
,切换到(当前行-2)
> 2. two
1. one
使用:m+1
,切换到当前行加1的位置
1. one
> 2. two
如果您想的话,您可以进行映射。
尽管这个问题很老并且已经被标记为已回答,我想通过以下方式扩展答案:您可以使用常规模式命令,这些命令由Sven Marnach提供,使用nnoremap
:
:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp
这将允许您使用Ctrl+Up和Ctrl+Down在文件中移动行。但是,这将覆盖存储您最后复制的字符/单词/字母等的@"
寄存器。因此,通过在dd
和p
命令之前添加“(reg)”,我们可以解决这个问题:
:nnoremap <C-Up> <Up>"add"ap<Up>
:nnoremap <C-Down> "add"ap
在这里,我们在删除和粘贴命令之前添加"a
来将我们的行存储在@a
寄存器中,这样您的默认复制寄存器就不会被覆盖。但是它可能会覆盖@a
寄存器的内容(谁知道呢,但在您的用例中可能需要使用它进行一些重要工作)。如果您觉得这个步骤有点多余,可以跳过它。让我们来修复一下这个问题:
:nnoremap <silent><C-Up> :let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>
:nnoremap <silent><C-Down> :let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>
(<silent>
用于防止将我们的命令输出到底部的消息行中。)
现在我们有两个映射,可以使用键盘快捷键在文件中移动行。您可以重新定义按钮,我使用 Alt + j/k,这对应的命令是 <A-j>
和 <A-k>
。但是据我所知,并非所有终端仿真器都支持 Alt 键映射。
==
符号,如果您不想要)。nnoremap <A-j> :m .+1<CR>==
nnoremap <A-k> :m .-2<CR>==
inoremap <A-j> <Esc>:m .+1<CR>==gi
inoremap <A-k> <Esc>:m .-2<CR>==gi
vnoremap <A-j> :m '>+1<CR>gv=gv
vnoremap <A-k> :m '<-2<CR>gv=gv
我个人将它们映射到我的 Mac 上的 <D-J>
和 <D-K>
,而不是映射到 <A-
键,该键映射到 Alt 键。这样我就可以使用 Cmd + Shift + j/k,对我的手指来说更为自然。
git config --global core.editor <whatever>
仅为git配置编辑器,或者在.bashrc
中包含export EDITOR=<whatever>
以一次性为多个事项(包括git)配置编辑器。 - Sven Marnach