我有这个:
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
有没有办法使用键盘快捷键来快速执行此操作?
Answers:
要将当前行与下一行交换,请ddp
在命令模式下键入。
ddp
。如果您尚未处于命令模式,请单击Esc
进入命令模式。
dd
将当前行复制到“寄存器”后删除。在当前行之后将p
寄存器的内容复制(“放入”)到缓冲区中。同样,您可以用交换两个字符,或用交换两个词。xp
dwwP
dwwP
如果两个单词都在一行的末尾,则工作方式不同的事实?(并且将一行中的最后一个单词与下一行中的第一个单词交换起来更加棘手。)
dd
删除当前行,然后可以使用粘贴删除的行p
。尽管还有另一种方法m
。随着m
你可以移动线,即
:m 1
将当前行移到第1行之后
:m 0
将当前行移到顶部
:m $
将当前行移到底部
在您的示例中,将光标放在第一行并输入 :m $
尽管这个问题是很老并标记为回答,我想应该说你可以使用普通模式下的命令,这是由提供延长答案斯文Marnach与nnoremap
像这样:
:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp
这将允许您在文件中使用Ctrl+Up和Ctrl+移动行Down。但是,这将覆盖@"
寄存器,该寄存器存储您最后复制的字符串/单词/字母/等。因此,通过在命令dd
和之前添加“(reg)” ,p
我们可以解决此问题:
: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键映射AFAIK。
例:
1. one
> 2. two
带有:m-2
,开关(当前线-2)
> 2. two
1. one
带:m+1
开关(电流线+1)
1. one
> 2. two
您可以根据需要对此进行映射。
实际上,在Vim Wikia页面上提出的映射是映射组合键的最佳方法,这些组合键模仿Sublime和其他编辑器实现此功能的方式。
这包括移动后的缩进动作,这也很棒(==
如果您不希望这样做,则是双倍等号)。
它还支持可视模式和插入模式,因此您可以在编辑时或使用fulblock时移动行。
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
我个人它们映射到<D-J>
和<D-K>
我的Mac上,而不是<A-
它映射到Alt按键。这样,我就可以使用Cmd+ Shift+ j/ k,这对我的指尖而言更加自然。
git config --global core.editor <whatever>
通过包括一次(包括GIT),或很多事情export EDITOR=<whatever>
在你的.bashrc
。