Navigate through your search history (/) or command history (:) without leaving your home row?
q:
q/
Think "query search" and "query command"
Practical vim tips and trick for all level
bindkey -M emacs |grep edit-command
"^X^E" edit-command-line
ctrl x ctrl e pour editer la commande actuelle via vim
:echo @% def/my.txt directory/name of file (relative to the current working directory of /abc)
:echo expand('%:t') my.txt name of file ('tail')
:echo expand('%:p') /abc/def/my.txt full path
:echo expand('%:p:h') /abc/def directory containing file ('head')
:echo expand('%:p:h:t') def First get the full path with :p (/abc/def/my.txt), then get the head of that with :h (/abc/def), then get the tail of that with :t (def)
:echo expand('%:r') def/my name of file less one extension ('root')
:echo expand('%:e') txt name of file's extension ('extension')
le plugin Ack permet de chercher dans le repertoire courant de vim (celui qu'on voit avec :pwd)
Pour chercher seulement dans un seul repertoire, il faut changer ce repertoire courant. Quelques commandes pratiques :
:Gcd (fournit par fugitive vim) permet de remonter à la racine du repot git
Dans nerdtree, si on se place sur un repertoire et qu'on fait 'cd', le repertoire courant de vim est changé
Une fois dans le bon repertoire, on peut chercher avec :Ack! pattern
Appending to a named register
Using an uppercase letter tells Vim to append text to the specified register (rather than overwriting the existing contents). For example, "Ayy copies the current line, and appends it to register ‘a’.
<3
You can do <C-r>" to paste from the default register or <C-r>a to paste from register a.
Additionally:
Ctrl-y Moves screen up one line
Ctrl-e Moves screen down one line
Ctrl-u Moves cursor & screen up ½ page
Ctrl-d Moves cursor & screen down ½ page
Ctrl-b Moves screen up one page, cursor to last line
Ctrl-f Moves screen down one page, cursor to first line
Ctrl-y and Ctrl-e only change the cursor position if it would be moved off screen.
I try to use vim without any plugins as I don't want to rely on them when I work on another system. Coming upon this same issue now, I can propose some 'better ways' (alternative ways) as requested by the OP:
c-w-| to have window take over (if using vsplits). c-w-= to restore. c-w-_ for horizontal splits
close the other window(s), thereby making current one fullscreen. Split and re-open from buffer to restore
Comment j'ai fait pour me passer de nerdtree?
current line in top of screen : z<return>
go to next blank line (paragraph) : }
:Glog
:clist
:cprev
:cnext
:cfirst
:clast
I've edited my .vimrc to add fugitive plugin and commited it by using fugitive
Comment perdre 30 min
:set backupcopy=yes
When you want to modify a file, you have two options, each with its benefits and drawbacks.
You can overwrite the file in place. This does not use any extra space, and conserves the hard links, permissions and any other attribute beyond the content of the existing file. The major drawback of doing this is that if anything happens while the file is being written (the application crashes, or the power goes out), you end up with a partially written file.
You can write the new version of the file to a new file with a different name, then move it into place. This uses more space and breaks hard links, and if you have write permissions on a file but not on the directory it contains, you can't do it at all. On the flip side, the old version of the file is atomically replaced by the new version, so at every point in time the file name points to a valid, complete version of the file.
http://vimdoc.sourceforge.net/htmldoc/options.html#%27backup%27
je découvre ce plugin vim qui a l'air juste magique pour interagir avec git
They all sux to visualize difference EXCEPT:
1) murphy
2) torte
:colorscheme murphy
Peut etre utile pour cc à la souris dans un split vim ou screen!
Aussi pour cc plusieurs lignes dans vim sans prendre la column number :)
Pour changer de buffer, je faisais :
:ls (pour récupérer la liste des buffers et trouver le numéro du buffer)
:b5 (pour switcher sur le buffer 5)
Pas trop pratique, du coup une alternative sympa :
Put the following in your vimrc:
set wildchar=<Tab> wildmenu wildmode=full
Ensuite il suffit de faire :
:b <tab>
Pour avoir la liste des buffers et itérer dessus avec tab jusqu'à être sur le bon puis <Enter>
en mode insert : ^V et le code ascii
exemple :ctrl V 003
Habit breaking, habit making
Feb 6, 2013
Moving your Vim cursor around using the arrow keys is a bad habit, and like many bad habits it’s a difficult one to break!
Putting these lines into your vimrc can help:
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
This snippet causes each of the arrow keys to execute no operation, or in other words: it disables them. Next time you move your hand to the arrow keys you’ll find that nothing happens when you press them. That should remind you to move your hand back where it belongs: on the home row, where h, j, k, and l keys are waiting for you. Alternatively, you could use the konami code version of this snippet.
Learning to operate Vim without leaving the home row is the first rite of passage. If you’re still in the habit of moving around using the arrow keys, then you should disable them today.
Stop using the h, j, k, l keys!
There’s nothing slower than moving one line or column at a time. Vim provides dozens of motions for moving around quickly, so it’s no exageration to say that holding down j is a Vim anti-pattern.
Learning Vim is not unlike studying a foreign language, where adding a word to your vocabulary increases the number of things that you can say. It takes time and practice to pick up Vim’s motions, but every time you add a motion to your repertoire you’ll discover scenarios where it can save you time and keystrokes.
For the sake of learning, let’s say that it’s a bad habit to use the h, j, k, and l motions. In that case, you should disable them by putting this snippet in your vimrc:
noremap h <NOP>
noremap j <NOP>
noremap k <NOP>
noremap l <NOP>
Not being able to move one line or column at a time will force you to use other motions to get around. If that sounds scary to you, let me introduce a couple of the most useful motions. Learning these won’t take a lot of effort, and the payback will be huge.
Wordwise motions are 5x faster than h and l
The w, b, e, and ge commands allow us to move forward or backward to the start or end of a word. The W, B, E, and gE commands do the same for a WORD (see :help word for the difference between words and WORDs). If we say that the average word length is 5 letters, then moving back and forward a word at a time is approximately five times faster than using h and l to move a character at a time.
Start off by adding w and b to your repertoire. These move forward and back to the start of a word. When you find yourself wanting to get to the end of a word, add e and ge to your repertoire.
Character search is near-instant for moving within a line
The f, F, t, T, ;, and , commands make up the suite of character search motions. When you press f{char}, Vim looks forward from the cursor position for the next occurrence of {char} on the current line. If it finds a match, the cursor moves directly there. If no match is found, nothing happens. (Vim might beep at you, but you can mute that by setting ‘visualbell’.)
Try this: in Vim, move your cursor to the beginning of a line with lots of text on it. Look ahead for a character that occurs with low frequency, such as a punctuation mark or uppercase letter. Press f followed by the character that you picked. That’s two keystrokes. Are you there yet?
If your cursor stopped on a match before the one you were aiming for, press ; to repeat the search. Keep pressing ; until you hit your mark. If you overshoot, press , to reverse the search.
For uncommon characters, you can usually hit your target from a distance with only 2 keystrokes. Common characters aren’t such easy targets for this method, so it helps to think like a Scrabble player!
The character search commands allow for efficient navigation within the current line. I use them all the time! If these motions are not a part of your repertoire, then you owe it to yourself to get practicing with them. Character search allows you to move around close to the speed of thought.
Use h and l for off-by-one errors
Sometimes, I’ll accidentally use f{char} when I should have used t{char}, which places me one character away from where I wanted to be. Or perhaps I’ll use f{char} to target an uncommon character that’s adjacent to the common character I actually want to hit. I refer to these scenarios as off-by-one errors. I consider them to be one of the few occasions where it’s acceptable to use the h or l motion.
Use <NOP> mappings to break bad habits
I’m not really suggesting that you permanently disable the h, j, k, and l keys. After all, they’re necessary for correcting those off-by-one errors. But if you’re having a slow day at work, then disabling h, j, k, and l for the afternoon could make things more interesting. If it forces you out of your comfort zone and encourages you to use wordwise motions, character searches, and other motions, then it counts as a useful exercise.
Meet hardmode
If this sounds like a worthwhile challenge, you might want to install the hardmode plugin (which I heard about from Rob Miller at Vim London). This provides convenience commands for enabling and disabling the h, j, k, l, and arrow keys in one go. To disable cursorwise motions, run:
:call HardMode()
If it gets too difficult, you can wimp out and re-enable these keys by running:
:call EasyMode()
You are weak...
J'utilisais jusqu'à présent aucun plugin vim.. mais l'ouverture de fichier et le switch entre les différents buffers est pénible quand on passe beaucoup de temps dans Vim..
Du coup je teste ctrlP qui est plutot bien une fois configuré !
J'utilise pathogen pour gérer mes plugins, donc dans l'ordre :
Dans le vimrc :
"" CtrlP
map <c-b> :CtrlPBuffer<CR>
map <c-p> :CtrlP<CR>
on a ctrl+B pour naviguer entre les buffers et ctrl+P pour lancer une recherche et ouvrir un fichier
La root de la recherche peut être modifié (par défaut c'est le dossier du fichier ouvert en cours)
On peut lui dire par exemple de remonter jusqu'au .git ou au .svn
Dans mon cas, encore en svn 1.6, il y a un .svn à tous les niveaux... la solution, définir un root marker dans son vimrc :
let g:ctrlp_root_markers = ['.ctrlp']
et ensuite créer ce marker là ou on veut que la recherche se base
$ touch .ctrlp